Я просматриваю учебник, в котором упоминается о запуске этой команды:
sudo chmod 700 !$
Я не знаком с !$
. Что это означает?
bash
command-history
Эндрю
источник
источник
echo
что-то сделать, если вы не уверены, что это будет делать.echo $(rm -rf /)
--no-preserve-root
опция, и если в программе вы увидите слова «нет сохранения», вам лучше по-настоящему тщательно подумать о том, что она делает.Ответы:
По сути, это последний аргумент предыдущей команды.
( источник ; кстати, удобный справочник)
Ничего не стоит разграничивать этот
!$
токен и специальную переменную оболочки$_
. Действительно, оба расширяются до последнего аргумента предыдущей команды. Однако!$
расширяется при расширении истории , а$_
расширяется при расширении параметров . Одним из важных следствий этого является то, что при использовании!$
, то расширенная команда сохраняется в истории.Например, рассмотрим нажатия клавиш
echo Foo
Enterecho !$ Jar
Enter Up Enter; а такжеecho Foo
Enterecho $_ Jar
Enter Up Enter,(Изменены только символы
$!
и$_
в середине.)В первом случае, когда вы нажимаете Up, командная строка читает
echo Foo Jar
, поэтому последняя строка записывается в stdoutFoo Jar
.В последнем случае, когда вы нажимаете Up, командная строка читает
echo $_ bar
, но теперь$_
имеет значение, отличное от того, что было раньше - на самом деле,$_
сейчасJar
, поэтому последняя строка, записанная в stdout - этоJar Jar
.Другим следствием является то, что
_
могут использоваться другие расширения параметров, например, последовательность командотпечатки
isomorphism isosceles
. Но нет аналогичного "${!$%morphism}
" расширения.Для получения дополнительной информации о фазах расширения в Bash см.
EXPANSION
Разделman 1 bash
(это называется Shell Expansions в онлайн-издании).HISTORY EXPANSION
Раздел отдельно.источник
!$
insert-last-argument
, обычно с привязкой кM-.
.Строго говоря,
!$
это последнее слово последней команды из списка истории.Примеры:
источник
!$
даст вам последнюю команду, использованную для этого конкретного пользователя ....Вы также можете найти историю команд, использованных ранее, используя
history
команду ... попробуйте ...ПРИМЕЧАНИЕ. Для конкретного пользователя все ранее использованные команды будут сохранены в файле истории bash.
источник