Intereting Posts
Сохранение веб-сеанса на ведре S3 Подготовка USB-накопителя для Kali Linux Две версии python 2.x, установленные в одной системе Как исключить файлы со всеми 4-значными номерами без первых пяти чисел с помощью wild card в команде tree Как удалить группу ненужных пакетов Debian? Проблемы с неразрешенными зависимостями от Debian 6 Sqeeze проверить, есть ли переменная в списке Что делает опция escape-последовательности xterm и как ее включить? cp: предотвращать ошибку, когда источник и место назначения одинаковы Есть ли какой-нибудь анализируемый процесс мониторинга? Есть ли способ, чтобы logcheck отправлял ежедневный дайджест, а также почасовые письма? Настройте BIND и DNSMasq для совместной работы на одной машине эхо vs <<<, или бесполезное использование эха в премии Bash? Каков референт файлового дескриптора? Ошибка класса символов в nvi: ] интерпретируется как ]

Как вы помните последний (n-й?) Переданный аргумент предыдущей команды, которую вы использовали с bash?

Часто я выдаю разные команды в одном файле. Например:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot $ mv aB54c4p0eo.flv kittens.flv $ vlc kittens.flv $ rm kittens.flv 

Есть ли способ повторного использования аргументов из предыдущей команды в текущем, так что мне не нужно ее переписывать?

alt-. конечно, приятно, но если вы уже знаете, какой нумерованный аргумент вы хотите, вы можете быть быстрее: !:nn й аргумент предыдущей команды.

Часто полезно сочетать это с магическим пространством. Чтобы включить это, введите свое .inputrc Space: magic-space . С включенным, когда вы вводите пробел после !:2 , он будет немедленно расширен до его значения, а не ждет, когда вы нажмете enter. Экономит вас от случайного захвата неправильного аргумента.

В bash вы можете использовать ярлык Alt + . ,
Нажав один раз, вы получите последний аргумент. Удар по нему больше будет проходить через ваши последние аргументы.

В bash вы также можете использовать $ _ для последнего аргумента командной строки последней введенной команды:

 $ youtube-dl aB54c4p0eo #I made this video id up on the spot $ mv aB54c4p0eo.flv kittens.flv $ vlc kittens.flv $ rm kittens.flv 

будет выглядеть так:

 $ youtube-dl aB54c4p0eo #I made this video id up on the spot $ mv $_ kittens.flv $ vlc $_ $ rm $_ 

В bash обозначение для «последнего слова в предыдущей командной строке» равно !!$ :

 $ echo hello world hello world $ echo goodbye !!$ echo goodbye world # this is bash echoing actual cmd line before execution goodbye world 

Вы также можете использовать «синтаксис каретки» для замены начальной части командной строки; это удобно, если вы хотите выполнить несколько команд в одном файле:

 file file.dat ^file^ls -l^ #gives `ls -l file.dat` ^ls -l^stat # gives `stat file.dat` 

Есть еще много возможностей; см. «Замена истории» в справочной странице bash (1) для деталей.

Один относительно медленный способ – вернуть предыдущую команду с помощью и заменить предыдущую команду на более новую.