$ _ vs! $. Последний аргумент предыдущей команды и перенаправление вывода

Это потому, что vim находится в командном режиме, когда вы его запускаете. Перед тем как вставить код, вам нужно перейти в режим вставки, например, нажав клавишу i.

В вашем примере вы вставляете свой код в виде команд vim, и когда он доходит до первого a в $cryptData, то переходит в режим вставки после текущего символа.

Если вы начинаете работать с vim: http://vim.wikia.com/wiki/Tutorial

30
21.04.2019, 15:07
1 ответ

! $ - это слово-указатель раскрытия истории, оно расширяется до последнего слова предыдущей команды в истории . IOW, последнее слово предыдущей записи в истории. Это слово обычно является последним аргументом команды, но не в случае перенаправления. В:

echo "hello" > /tmp/a.txt

вся команда 'echo "hello"> /tmp/a.txt' появилась в истории, и /tmp/a.txt является последним словом этого команда.

_ - параметр оболочки, он расширяется до последнего аргумента предыдущей команды. Здесь перенаправление не является частью аргументов, передаваемых команде, поэтому только hello является аргументом, переданным в echo . Вот почему $ _ расширился до hello .

_ больше не является одним из стандартных специальных параметров оболочки . Он работает в bash , zsh , mksh и dash только в интерактивном режиме, ksh93 только когда две команды на отдельных строках:

$ echo 1 && echo $_
1
/usr/bin/ksh

$ echo 1
1
$ echo $_
1
65
27.01.2020, 19:38

Теги

Похожие вопросы