Часто я выдаю разные команды в одном файле. Например:
$ youtube-dl aB54c4p0eo #I made this video id up on the spot $ mv aB54c4p0eo.flv kittens.flv $ vlc kittens.flv $ rm kittens.flv
Есть ли способ повторного использования аргументов из предыдущей команды в текущем, так что мне не нужно ее переписывать?
alt-.
конечно, приятно, но если вы уже знаете, какой нумерованный аргумент вы хотите, вы можете быть быстрее: !:n
– n
й аргумент предыдущей команды.
Часто полезно сочетать это с магическим пространством. Чтобы включить это, введите свое .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) для деталей.
Один относительно медленный способ – вернуть предыдущую команду с помощью ↑ и заменить предыдущую команду на более новую.