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

9

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

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

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

badp
источник

Ответы:

15

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

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

Cascabel
источник
9

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

Кристиан
источник
4

В 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) .

Риккардо Мурри
источник
Этот синтаксис карета на самом деле медленнее, чем нажатие стрелки вверх и самостоятельное редактирование командной строки ...
badp 21.10.10
1
!!$тоже можно написать !$.
Микель
3

В 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 $_
fschmitt
источник
0

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

badp
источник
Я надеюсь на что-то быстрее :)
badp 21.10.10