79

bashスキルアップのための質問です。私はいつもこれを行います:

$ history | grep some_long_command

...
...
123 some_long_command1.........
124 some_long_command2.........
...

次に、次のようにして、見つけたコマンドを実行できます。

!123

しかし、私はしばしばこれをしたい:

some_long_command1foobar

つまり、実行する前にコマンドを変更します。代わりに bash を使用してこのコマンドを実行できますか:

#some_long_command1

だからコメントされる。

次に、マウスを使用してコマンドを強調表示し、編集してから実行する必要はありません (キーボードを使用するだけで、より高速になります)。

それを行うスクリプトを書くことはできると思いますが、すでにどこかに機能が組み込まれている可能性があります....?

4

10 に答える 10

143

history コマンドを使用する代わりに、そのコマンドを使用ctrl+rして入力を開始することをお勧めします。変更するかのように矢印キーを押すと、オートコンプリート認識から抜け出し、実行前に編集できるようになります。

更新: また、入力した文字列を含むさまざまなコマンドを循環させたい場合は、押し続けます。ctrl+r

于 2012-06-12T16:03:51.063 に答える
62

実際には、コマンドに追加:pするだけで、実際に実行せずに印刷できます。例えば:

$ ls -la
$ !!:p

ls -la実行せずに前のコマンドとして出力され、単に押すことができます↑</kbd> (up) to find it and edit it.

あなたもできる

!123:p

123 番目のコマンドを前のコマンドとして出力します。

于 2012-06-20T17:12:12.857 に答える
20
于 2012-06-12T16:32:54.207 に答える
11
!123:gs/old/new/

コマンド 123 を実行して、文字列「old」を文字列「new」に置き換えます。

于 2012-06-12T16:07:21.777 に答える
6

M-^ (Mac では option-shift-6) を押すと、編集モードに入ることができます。

次のように入力します。

!123M-^

そして、コマンド #123 を編集します。ctrl-r を使用するのと似ていますが、感嘆符の構文から始めます。

于 2013-02-11T22:44:19.130 に答える
4

historyコマンドを使用する代わりに、history-search-backward/history-search-forwardを覚えやすいキー ショートカットにバインドします (私は PgUp/PgDown を好みます)。.inputrcこれを行うには、これをファイルに入れます。

"<key code>":  history-search-backward
"<key code>":  history-search-forward

を取得するには、シェルに<key code>入力し、出力されたものの先頭をにCtrl-V <key>置き換えます。^[\e

これを設定したら、タイプsomeして PgUp を押すだけで取得できsome_long_commandます。必要some_long_command with_some_argであるが履歴の後半に同様のコマンドがある場合は、入力してから PgUp を繰り返し押すことで、そのコマンドsome_long_command with_some_other_argに到達するまで循環するか、 と入力して PgUp を押し、2 つのコマンドが異なり始める場所にカーソルを移動します数文字入力して、PgUp をもう一度押します。すばやくページをめくったり、同様のコマンドを区別したりできるこの機能により、私の意見では、 よりもはるかに快適なツールになります。somesomeCtrl-R

于 2013-02-20T15:17:36.567 に答える
3

置くこともできます

shopt -s histverify

これにより、.bash_profile履歴の展開が実行されずにコマンドラインに表示され、実行する前に編集できるようになります。

于 2012-06-12T16:15:52.947 に答える
1

「提案ボックス」のような履歴https://github.com/dvorka/hstrを試すことをお勧めします。これは Bash の履歴を読み取り、迅速なナビゲーションを可能にします。

うーん

最後のコマンドを取得するには、単に hh と入力し、コマンドに移動し、右矢印を使用してコマンド ラインで取得します (ここで編集および/またはコメントを追加できます)。

于 2014-01-10T00:18:31.703 に答える
0

置く

エイリアス r='fc -s'

(ホームディレクトリ)に.bashrc入力するだけです

r <whatever>

<whatever>コマンドプロンプトで、履歴にある最後のコマンド(同じパラメーター)のコピーを実行します。必要に応じて上向き矢印を押して、実行した内容を確認してください。

于 2016-11-27T19:47:07.847 に答える