実行せずに最後のコマンドを取得する方法を覚えていません。
!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