コマンドを実行せずにBash履歴に追加するにはどうすればよいですか?


32

時々コマンドを実際に実行せずにBashの履歴に直接追加すると便利です。これまでのところ、私が見つけたクローズドなことは#、その前にを追加してリターンを打つことです。もっと良い方法はありますか?

回答:


39

history -s コマンド


その機能について知らなかった。すぐに使用することは考えられませんが、知っておくと良いでしょう。
ダグ・ハリス

7
スクリプトからこれと同様のコマンドを実行できるかどうか知っていますか?私は、スクリプト持って./resize-images.sh、私はちょうど打つので、代わりにスクリプトが私の歴史にコマンドを追加することができれば、それは本当に有益であろうその最終ライン変更を元に戻すために実行すべきコマンドを示しますがup-enter、私は元に戻すために必要な場合
ベン・ページを

1
@BenPage:両方の答えを見てください:unix.stackexchange.com/questions/112354/…
-RustyTheBoyRobot

9

history -s コマンド

キーストロークをバインドして、これを行うこともできます。これは、Bashプロンプトで入力できます。

bind '"\C-q": "\C-a history -s \C-j"'

またはこれをあなたのに追加してください~/.inputrc

"\C-q": "\C-a history -s \C-j"

その後、何かを入力して押すことができますCtrl- q実行されずに履歴に追加されます。「history」の前のスペースにより、変数にまたはが含まれる場合、historyコマンド自体は履歴に追加されません。「\ Cq」の代わりに別のキーストロークを選択できます。HISTCONTROLignorespaceignoreboth


3

1文字の「コマンド」より短いものを思い付くのは難しいので、キーストロークレベルに移動する必要があります。私のbashのセットアップとUSキーボードを使用すると、次のことができます。

  1. 行の先頭に移動CTRLA::+1命令、+ 2キーを押す
  2. 追加#(必要SHIFT):+1命令、+ 2キー押下
  3. 履歴への追加ENTER:+1命令、+ 1キー押下

合計3命令で、5回キーを押します。

を使用ALT#すると、1命令で2回キーを押すと同じことが行われます。

キーボードレイアウトとbash構成に応じたYMMV。


3
問題はキーを押す回数ではありませんが、その「コマンド」は意図した「コマンド」ではなく、履歴に保存されます。
グルベル

1
コマンドが実際に実行されなかったことがわかるので、「#command」が履歴ファイルに保存されると便利です。後で問題を解決するために入力したコマンドを確認したい場合に便利です。
マーニックスA.ヴァンアンマーズ

2
@ Grumbel、@ Marnix:同意しました、私は手紙の質問には答えませんでしたが、彼が今やっていることをさらに速くする方法を示しました。個人的には、を使用#commandする方がに比べてはるかhistory -s commandに高速で、history-search-backward/-forward適切にマッピングすれば非常に使いやすいと思います。しかし、それは好みの問題です。
ベンジャミンバニエ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.