(たとえば)一連のファイルに対して同様のコマンドを実行しています。例として、私がこのようなことをしているとしましょう(これは私がやっていることではなく、単なる例です):
> 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 manpage のREADLINE
セクションを参照してください。
直接求めたものではありませんが、さまざまな形式の history Interaction を使用してタスクを単純化できます。
$ 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
-選択したWordで最初に出現する1
を2
に置き換えます(この場合、再び!$
でした)。^2^3
-前のコマンド全体で最初に出現する2
を3
に置き換えます。!-3
-最後から3番目のコマンドを実行します。!diff
-diff
で開始した最後のコマンドを実行します。$HOME/.inputrc
のキーをreadlineディレクティブにバインドできます。
"code": overwrite-mode
特定のキーを押して生成されたコードを発見するには CtrlそしてV 一緒にそのキーを押します。たとえば、Ins
(挿入)キーを押すと、^[[2~
が表示されます。 ^[
はESCの画面表示であり、readlineの場合は\e
で表されることに注意してください。したがって、次の行を$HOME/.inputrc
に追加する必要があります。
"\e[2~": overwrite-mode
そしてbashを再起動します。