Я выполняю подобные команды на (например) наборе файлов. В качестве примера предположим, что я делаю что-то вроде этого (это не то, что я делаю, это просто пример):
> 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]
и т. Д.
It было бы удобно, если после использования & чтобы вернуться к предыдущей команде, я мог бы перезаписать не дублированный текст - например, имя файла или общую часть пути - вместо того, чтобы удалить его и повторить его.
Есть ли способ сделать это?
Не то, что вы просили напрямую, но вы можете использовать различные формы взаимодействия с историей для упрощения своей задачи:
$ 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
Игнорирование ошибок каждый раз, когда я использовал взаимодействие с историей (!$, [ f3], ^2^3), вы можете увидеть, как bash расширил его.
!$ - последнее слово предыдущей команды :s/1/2 - замените первое вхождение 1 на [ f9] в выбранном слове (в этом случае это было !$ снова). ^2^3 - заменить первое вхождение 2 на 3 во всей предыдущей команде. !-3 - выполнить команду третьего последнего. !diff - запустите последнюю команду, начатую с diff.Вы можете привязать ключ к директиве readline в $HOME/.inputrc.
"code": overwrite-mode
Чтобы обнаружить код, сгенерированный определенным ключом, нажмите CtrlandV вместе, затем нажмите этот ключ. Например, когда вы нажмете клавишу Ins (insert), вы увидите ^[[2~. Помните, что ^[ - это просто экранное представление для ESC, которое представлено с помощью \e для readline. Поэтому вы должны добавить следующую строку в $HOME/.inputrc:
"\e[2~": overwrite-mode
и перезапустить bash.