При чтении содержимого сценария я обнаружил что-то вроде:
echo "An Example" > !$
Так что мне интересно, что означает !$
в bash.
Хорошо я нашел это! Средства $ последний аргумент так для примера:
touch /tmp/file1
Здесь аргумент /tmp/file1, таким образом ! $ заменил /tmp/file1
в примере эха.
затем при вводе команды du -b !$
вывод будет использованием диска в байтах для /tmp/file1
От man bash
(где-нибудь после строки 3813):
! Start a history substitution, except when followed by a blank, newline, carriage return, = or ( (when the extglob shell option is enabled using the shopt builtin). [...] $ The last word. This is usually the last argument, but will expand to the zeroth word if there is only one word in the line.
Так, !$
вспомнит последний аргумент от последней команды из истории.
Вот некоторые примеры и эквиваленты:
$ echo foo bar
foo bar
$ echo !$ # recall the last argument from the last command from history
echo bar
bar
$ echo foo bar
foo bar
$ echo !:$ # the same like `!$'
echo bar
bar
$ echo foo bar
foo bar
$ echo !:2 # recall the second (in this case the last) argument from the last command from history
echo bar
bar
$ echo foo bar
foo bar
$ echo $_ # gives the last argument from the last command from history
bar
$ echo foo bar
foo bar
$ echo Alt+. # pressing Alt and . (dot) in the same time will automatically insert the last argument from the last command from history
bar
$ echo foo bar
foo bar
$ echo Alt+_ # the same like when you press Alt+.
bar
$ echo foo bar
foo bar
$ echo Esc. # the same like when you press Alt+.
bar
Все они будут работать только в интерактивной оболочке. Но если Вы используете ту команду от своего вопроса в сценарии, поскольку Вы сказали сев его затем вещи отличаются: когда Вы запустите скрипт, это запустится в новой оболочке, неинтерактивная оболочка, таким образом, расширение истории не делает, имеет любой эффект в этом случае и так команда:
echo "An Example" > !$
создает файл !$
если не существующий (иначе перезаписывает его), и запись An Example
в него.