При запуске команд иногда может потребоваться запустить команду с аргументом из последней команды. Как ты можешь это сделать?
Конечно, за исключением использования клавиш со стрелками и Delклавишами: ↑←←←... ←→→DelDelDel... Del<new_command>
.
При запуске команд иногда может потребоваться запустить команду с аргументом из последней команды. Как ты можешь это сделать?
Конечно, за исключением использования клавиш со стрелками и Delклавишами: ↑←←←... ←→→DelDelDel... Del<new_command>
.
Ответы:
Например, если вы запустите эту команду:
mkdir long_path_here/new_dir
скорее всего, вы захотите перейти в недавно созданный каталог. Вы можете сделать это, используя следующие «ярлыки»:
cd
Esc.- введите cd
и после нажатия, Escа затем .(не в то же время). Если предыдущая команда не имеет аргументов, вы получите саму предыдущую команду.cd !*
- в этом случае вы получите все аргументы из команды previuos. Если предыдущая команда не имеет аргументов, вы ничего не получите.cd
Alt+ .- введите cd
и после нажатия Altи .(одновременно). Фактически, используя этот способ и продолжая нажимать .(не отпуская Alt), вы получите последний аргумент для каждой команды из истории. Если у команды нет аргументов, вы получите саму команду.В общем: <command>
Esc.или <command> !*
или <command>
Alt+ ..
Есть несколько сочетаний клавиш, если вам нужны все аргументы из предыдущей команды или только последний аргумент.
<command> !*
<command> !$
Примеры:
ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/
ls foo/ bar/
ls !$ # Gives the results of ls bar/
Если вам нужен один аргумент из списка аргументов предыдущей команды, вы можете использовать <command> !!:<argNumber>
Пример:
ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/
!
в одной версии ARG, например, !:2
. Предполагается, что по умолчанию bash.
!^
вместо !:1
.
Упоминается !*
и !$
это хорошая вещь, но когда вам нужно сделать небольшое редактирование readline ярлыки приходят на помощь!
Например, вместо бесчисленного ↑←←←... ←→→DelDelDel... Delвы можете просто нажать ↑ Ctrl-a(перейти к началу строки) Alt+d(удалить до конца слова)
Для получения дополнительной информации man readline
и поиска Default key bindings
.
Чтобы взять n
аргумент th из предыдущей команды, введите Alt+ n
+ Alt_. Например, после:
$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
набрав с echo
последующим, Alt2Alt_вы получите это в следующем приглашении:
$ echo 2
«Скриншот» после того, как вы нажали Alt2:
(arg: 2) echo
Вы можете повторить Alt_несколько раз, чтобы получить n
th аргумент предыдущих команд подряд.
Еще одна полезная идея - определить псевдоним r="fc -s"
. Затем вы можете сделать замену команды:
$ echo 1
1
$ r echo=history
history 1
27755 history 1