行に複数の変更を加えたら、元のコマンドに戻します。
revert-line (M-r)
Undo all changes made to this line. This is like
executing the undo command enough times to get back to the beginning.
M
メタキーaltrです。
不必要でありながら役立つ情報
OPが以前に行ったようなコマンドを実行した場合(発生します)、コマンドはGNU Readlineライブラリによって処理および記憶され、シェルが終了する$HISTFILE
まで書き込まれないため、「元に戻す」ことはできません。あなただけのことができないので、私はこれを言及する理由は、1等が期待するかもしれないし、シェルを終了するには理想的ではないかもしれません。grep
$HISTFILE
そのため、以前のすべてのreadlineコマンドをスクロールして戻る手間を省くためのオプションがいくつかあります。
コマンドの一部を覚えている場合は、ctrl + rを押して、覚えているものを入力して、その文字列を含む以前のコマンドを検索します。もう一度ctrl+を押すとr、逆方向に検索して、次に新しいものが表示されます。
たとえば、前に探していたコマンドを見つけるのに必要な回数だけ、ls -l
then ctrl+ rを入力します。過去にスクロールすると、ctrl+ sは現在の位置から前方に検索します。
fc
組み込みのbashコマンドは、以前のreadlineコマンドと一緒にインデックス番号を一覧表示するのに役立ちます。
fc -l -100
readlineに前の100個のコマンドをリストします。
さらに、OPは前のls -l
コマンドを探していることを知っている場合、出力を次のgrep
ようにパイプすることができます。fc -l -100 | grep 'ls -l'
これls -l
により、前にインデックス番号が付いた以前のコマンドのリストが出力されます。出力は次のようになります。
2065 ls -l
これで、がインデックス番号!n
であるイベント指定子を使用できますn
。この例では、実行する!2065
とに展開されls -l
ます。
それは事実の後で助けにはなりませんが、以前のコマンドを変更するときに最近のコマンド履歴を保持したい人は、のHISTORY EXPANSION
セクションを参照してくださいman bash
。履歴を上書きせずに古いコマンドを変更するいくつかの代替方法を次に示します。
このEvent Designators
セクションでは、最近使用したコマンドから文字列を簡単に編集する方法を示します。
^string1^string2^
Quick substitution. Repeat the previous command, replacing string1 with string2. Equivalent to
``!!:s/string1/string2/'' (see Modifiers below).
例:
$ echo foo
foo
$ ^foo^bar
echo bar
bar
最新のコマンドが表示されます。
echo foo
echo bar
上記の例では、を使用sed
してイベント指定子の文字列を置き換える方法も説明しています。
!-n Refer to the current command minus n.
したがって、履歴に3つのコマンドがある場合はecho foo
、次のコマンドを使用します。
!-3:s/foo/bar
この場合、コマンドが実行されると、イベント指定子が履歴に表示されることに注意してくださいecho bar
。履歴にはとして表示されません!-3:s/foo/bar
。
OPが求めている「元に戻す」ソリューションよりも「やらない」ことの方が近いとしても、密接に関連していると思われるので、単にそれを捨てます。
ksh
、たとえば、あなたがエントリの「以前のバージョン」を削除せずに履歴エントリを編集し、それらを呼び出すことができます、。すべての呼び出されたコマンドが利用可能です。