恥ずかしいことに、前のコマンドをたくさん繰り返すことがよくあります。Up Up Up最初の注文を見つけに行きました。Enter。次に、Up Up Up2 番目のコマンドを再実行します。など。
コマンドを再実行した後、履歴の次のコマンドに移動する方法はありますか?最後の3つのコマンドを再実行するためにUp Up Up Shift++++を実行するのと似ています。Enter ShiftEnter ShiftEnter
わかりましたfc
。しかし、シェルだけに関するものではありません。私はPythonインタプリタと基本的にコマンドを入力するどこでもこの問題に直面しました。
答え1
これらはすべてあなたのシェルの記録に関連しておりbash
、あなたがPythonについて質問していることがわかりました。これが役に立つことを願っています。
あなたがhistory
次のような場合:
1000 command A
1001 other command B
1002 yet another command C
以下を実行できます。
!com
これにより、 ''で始まる最後のコマンドが実行されますcom
。文字数(!c
または!command
)を使用することができ、それに続いて!oth
各!yet
コマンドを順番に実行できます。
REDO履歴エントリ#1000を実行すると、次の2つのコマンドが!1000
わかって実行さ!1001
れます。!1002
個人的にこのような一連のコマンドを実行するには、同じコマンドなどの複数のコマンドを実行し、履歴エントリを提供します。
command A; other command B && yet another command C
またはエイリアスを作成します。
$ alias doThing="command A; other command B && yet another command C"
$ doThing
または関数:
doThing() {
command A
other command B && yet another command C
# Can also use positional arguments: echo $1
}
$ doThing
これらすべてを考えてみると、私はまさにあなたが期待することをすることができるかもしれません。申し訳ありません。
答え2
bash
実行してhistory
1000、1001、1002という3つのコマンドを実行する場合:
$ history | tail
...
1000 echo foo
1001 echo bar
1002 echo baz
1003 history | tail
では、bash
行番号の前に を付けてそのうちの 1 つだけ実行できます!
。セミコロンで区切って、1行にすべて実行することもできます。
$ !1000;!1001;!1002
echo foo;echo bar;echo baz
foo
bar
baz
注:通常どおり、!
履歴を使用してコマンドを実行すると、最初に実行するコマンドラインが表示されます。
これはPythonインタプリタや他のほとんどのプログラムでは同じではないかもしれません。同様の歴史的機能を持つ他のいくつかのシェルでも同様に機能します。
ちなみに、この結合されたコマンドは履歴に1行だけ表示されます。
$ history | tail -2
1004 echo foo;echo bar;echo baz
1005 history | tail -2
を使用して再実行できます!1004
。
答え3
はいCtrl+ O。Up、、、Up+、+、+を使用Upして最後の3つのコマンドを実行できます。CtrlOCtrlOCtrlO
コマンドが履歴に再度追加されたら、Ctrl+を長押ししてOコマンドの順序を繰り返すことができます。
~からオンライン文書を読む:
operate-and-get-next
Ctrl+ O:改行文字が入力されているかのように呼び出しアプリケーションに戻るために現在の行を受け入れ、編集のために履歴から現在の行に関連する次の行を取得します。指定された場合、数値引数は現在行の代わりに使用する履歴エントリを指定します。
これはReadline 8.1への比較的新しい追加です。 (2020年12月。)