Я работаю на подобных командах (например). ряд файлов. Как пример, скажем, я делаю что-то вроде этого (это не то, что я делаю, это - просто пример):
> cat path/to/dir/file01.txt
[file contents]
> another-command path/to/dir/file01.txt
[more output]
> cat path2/to/dir/file02.txt
[file contents, from which I can tell I should do something different]
> different-command path2/to/dir/file02.txt
[yet more output]
> cat path3/to/dir/file03.txt
[file contents]
> another-command path3/to/dir/file03.txt
[output]
и т.д.
Было бы удобно, если, после использования ↑ ключа для возврата к предыдущей команде я мог бы перезаписать недублированный текст ― как имя файла или общая часть пути — вместо того, чтобы иметь необходимость удалить его и перепечатать его.
Существует ли способ сделать это?
Bash имеет это, но по умолчанию он не привязан ни к какому ключу.
Добавьте строку
Control-o: overwrite-mode
в свой $ HOME / .inputrc
или / etc / inputrc
, чтобы использовать Ctrl + o для переключения между режимом вставки и режимом переопределения.
См. ЧИТАЙТЕ СРОК
на странице Bash , чтобы узнать больше.
Вы можете привязать ключ к директиве readline в $ HOME / .inputrc
.
"code": overwrite-mode
Чтобы узнать код, сгенерированный определенной клавишей, нажмите ] Ctrl и V вместе, затем нажмите эту клавишу.
Например, если вы нажмете кнопку Ins
(вставить), вы увидите ^ [[2 ~
].
Помните, что ^ [
- это просто экранное представление для ESC, которое представлено как \ e
для строки чтения.
Поэтому вам следует добавить следующую строку в $ HOME / .inputrc
:
"\e[2~": overwrite-mode
и перезапустить bash.
Не то, о чем вы просили напрямую, но вы можете использовать различные формы взаимодействия с историей , чтобы упростить задачу:
$ cat path/to/dir/file01.txt
cat: path/to/dir/file01.txt: No such file or directory
$ different-command !$
different-command path/to/dir/file01.txt
bash: different-command: command not found
$ cat !$:s/1/2/
cat path/to/dir/file02.txt
cat: path/to/dir/file02.txt: No such file or directory
$ ^2^3
cat path/to/dir/file03.txt
cat: path/to/dir/file03.txt: No such file or directory
$ !-3:s/1/3/
different-command path/to/dir/file03.txt
bash: different-command: command not found
$ !diff:s/3/4/
different-command path/to/dir/file04.txt
bash: different-command: command not found
Игнорирование ошибок, каждый раз, когда я использовал взаимодействие с историей ( ! $
, ! $: S / 1/2
, ^ 2 ^ 3
), вы можете увидеть, как bash
расширил его.
! $
- последнее слово предыдущей команды : s / 1/2
- замените первое вхождение 1
на 2
в выбранное слово (в данном случае это было снова ! $
). ^ 2 ^ 3
- замените первое вхождение 2
на 3
во всей предыдущей команде. ! - 3
- выполнить третью последнюю команду. ! Diff
- выполнить последнюю команду, которая началась с [11159 65] diff .