При запуске команд иногда может потребоваться запустить команду с аргументом из последней команды. Как ты можешь это сделать?
Конечно, за исключением использования клавиш со стрелками и 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_несколько раз, чтобы получить nth аргумент предыдущих команд подряд.
Еще одна полезная идея - определить псевдоним r="fc -s". Затем вы можете сделать замену команды:
$ echo 1
1
$ r echo=history
history 1
27755 history 1