Я не уверен, как это сформулировать, но я часто нахожу себя набирающим команды следующим образом:
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
Я обычно просто печатаю путь дважды (с завершением табуляции), или я скопирую и вставлю путь курсором. Есть ли какой-то bashfoo, который облегчает ввод?
bash
command-line
clipboard
line-editor
user1028270
источник
источник
bash-fu
:)Ответы:
Есть несколько хитростей (я думаю, что есть дубликат), но для этого я склонен делать
который расширяется до вашей команды.
Это известно как расширение скобки . В используемой здесь форме
{}
выражение определяет количество строк, разделенных запятыми. Они «расширяют» все/etc/prog/dir1/myconfig.yml{,.bak}
выражение, заменяя{}
часть каждой строкой по очереди: пустая строка, давая/etc/prog/dir1/myconfig.yml
, а затем.bak
, давая/etc/prog/dir1/myconfig.yml.bak
. РезультатЭти выражения могут быть вложенными:
производит
Есть вариант, использующий числа для получения последовательностей:
производит
и вы также можете указать шаг:
производит
источник
.bak
.Расширение истории может быть полезно для такого рода вещей (при условии, что включена история bash).
В вашем примере вы можете сделать:
Здесь
!#
относится к текущей строке,!#:1
относится к параметру 1 в текущей строкеи
!#:1.bak
относится к параметру 1 в текущей строке с прикрепленным к концу «.bak».Если у вас напечатан спецификатор истории, вы можете использовать Ctrl+ Alt+, Eчтобы расширить его до его действительного значения, если вы хотите, например, дважды проверить или изменить имя файла.
Раздел «Расширение истории» на страницах руководства bash содержит больше информации.
источник
Аналогично ответу progo, но несколько проще:
C-w
разрезает («убивает») слово слева от курсора,C-y
вставляет («дергает») его снова.источник
Вы также можете вырезать-вставить (kill-yank в терминах emacs / bash) из командной строки, чтобы дублировать детали для редактирования.
M-d
убивает вперед до границы слова, и вы можете убивать текст несколько раз, и все они объединяются в одну «вставку» для восстановления. Удобный!Верните все это обратно в командную строку курсором
C-y
. Поэтому, если у вас есть такая строка (элемент блока █ указывает позицию курсора):В любом случае, вы предпочитаете это делать, и вам будет полезно ознакомиться с тем, что предлагает bash в отделе интерактивных ключей. http://web.mit.edu/gnu/doc/html/features_7.html
источник
В
tcsh
илиzsh
, Alt+Ctrl+_вemacs
режиме (copy-prev-word
виджет) вставляет последнее слово, такbash
имеетcopy-backward-word
виджет (по умолчанию не привязан ни к одной клавише), но он копирует только слово в кольцевой буфер, вам также нужно нажать Ctrl-Y(вemacs
режиме), чтобы его восстановить. Но вы могли бы сделать:Чтобы Alt+Ctrl+_сделать и копировать / snarf и вставить / yank, как в
tcsh
/zsh
.источник