Действительно колотит (или какая-либо оболочка, в этом отношении) имеют режим 'перезаписи'?

Я работаю на подобных командах (например). ряд файлов. Как пример, скажем, я делаю что-то вроде этого (это не то, что я делаю, это - просто пример):

> 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]

и т.д.

Было бы удобно, если, после использования ключа для возврата к предыдущей команде я мог бы перезаписать недублированный текст ― как имя файла или общая часть пути — вместо того, чтобы иметь необходимость удалить его и перепечатать его.

Существует ли способ сделать это?

4
задан 25 June 2015 в 14:39

3 ответа

Bash имеет это, но по умолчанию он не привязан ни к какому ключу.

Добавьте строку

Control-o: overwrite-mode

в свой $ HOME / .inputrc или / etc / inputrc , чтобы использовать Ctrl + o для переключения между режимом вставки и режимом переопределения.

См. ЧИТАЙТЕ СРОК на странице Bash , чтобы узнать больше.

4
ответ дан 23 November 2019 в 11:41

Вы можете привязать ключ к директиве readline в $ HOME / .inputrc .

"code": overwrite-mode

Чтобы узнать код, сгенерированный определенной клавишей, нажмите ] Ctrl и V вместе, затем нажмите эту клавишу. Например, если вы нажмете кнопку Ins (вставить), вы увидите ^ [[2 ~ ]. Помните, что ^ [ - это просто экранное представление для ESC, которое представлено как \ e для строки чтения. Поэтому вам следует добавить следующую строку в $ HOME / .inputrc :

"\e[2~": overwrite-mode

и перезапустить bash.

5
ответ дан 23 November 2019 в 11:41

Не то, о чем вы просили напрямую, но вы можете использовать различные формы взаимодействия с историей , чтобы упростить задачу:

$ 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 .
5
ответ дан 23 November 2019 в 11:41

Другие вопросы по тегам:

Похожие вопросы: