前のコマンドを実行せずに呼び出して変更するにはどうすればよいですか?

前のコマンドを実行せずに呼び出して変更するにはどうすればよいですか?

実行せずに最後のコマンドを取得する方法を覚えていません。

!1255 コマンドにアクセスして上矢印キーを押したときにコマンドを変更したいとしましょう。それでは、コマンドラインに表示されますが、実行されずに上矢印キーを介してアクセスできるように、このコマンドを呼び出す秘密は何ですか?

エコーを追加しようとしましたが、コマンドの前にエコーがあるため、正しく実行する方法を覚えていません。

答え1

!1255:p

これをする

!これは履歴呼び出し
1255であり、行番号は
:p印刷されますが実行されません。

その後、上矢印を使用して前の(実行されていない)コマンドをインポートし、必要に応じて変更できます。

私はしばしばhgこれを私のお気に入りのエイリアス(「History Grep」)と組み合わせます。

$ alias hg  # Maybe use hgr instead if you are a Mercurial CLI user.
alias hg='history | tail -200 | grep -i'

大文字と小文字に関係なく、最近の履歴行からテキストを検索し、次のように使用します。

特定のファイルを編集するために最近のviコマンドを検索し、そのコマンドの1つを再利用して同じファイルを別のファイル拡張子で編集したい場合。

$ hg variables
 6153  vi Variables/user-extensions.js 
 6176  vi Variables/user-extensions.js 
 6178  vi Variables/user-extensions.js 
 6190  vi Variables/user-extensions.js 
 6230  hg variables
$ # Notice the difference in case with V and v is ignored
$ !6190:p
vi Variables/user-extensions.js 
$ ["up-arrow"]
$ vi Variables/user-extensions.[now change .js to .html]

hgaまた、履歴全体を検索する(「History Grep All」)も定義します。

$ alias hga
alias hga='history | grep -i'

しかし、私の履歴は(意図的に)非常に大きく、後で端末でページを後ろにスクロールするのに影響する多くの出力を取得するため、頻繁に使用しません。

答え2

端末でCtrl+を押すとR(コメントで@ gnpが述べたようにemacsの逆方向増分検索キーバインディング)、特定のコマンドの履歴を検索できます。コマンドが表示され、実行前に編集できます。次の内容が表示されます。

ここに画像の説明を入力してください。

源泉

答え3

Ctl+alt+eシェル拡張はbashで発生するため、入力して押す!1255と現在の行が履歴エントリ1255の内容に置き換えられます。

答え4

リストを指定するときは、実行(-l)の代わりにfcコマンドを使用したいと思います。

fc -ln -1

関連情報