bashで実行せずにコマンドを履歴に保存する


8

コマンドを実行せずにbash履歴に保存する方法はありますか?例えば

$ cmd [a long list of arguments] 

そして今、タイピング中に私は最初に何か他のことをしたいと思います。次のようなものはありますか

$ cmd [a long list of arguments][some-key-strokes]

これは実際には実行されませんが、後で使用できるようにbashの履歴に入りますか?


5
その場合は、行の先頭にを付けて#、Enterキーを押します。
Oliver Charlesworth 2013年

回答:


5

より良い方法があるかもしれませんが、履歴拡張の:p修飾子を使用して、実行せずに現在のコメント行を印刷できます。 !#現在の行であり%、それ自体は何にも一致しません

$ cmd [arguments] !#%:p

涼しい!;)コマンドで特別な文字をエスケープする必要がない場合、コマンドがls -al+1 だけでない場合、面倒になる可能性があります

涼しい!非常にきちんと

8

コマンドの-sオプションを使用しますhistory

history -s cmd arg1 arg2

history -s自分自身への呼び出しはコマンド履歴に追加されないので、履歴では、cmd実際に実行せずに実行したように見えます。


涼しい!これもすばらしい

1

通常、これは

echo 'cmd [a long list of arguments]' >> /home/you/bash_history

履歴の名前はシステムによって異なる場合があることに注意してください。したがって、HISTFILE環境変数を使用できます

何が:

echo 'cmd [a long list of arguments]' >> "$HISTFILE"

1

通常は、行の先頭に#を追加して、行をコメントに変換します。

#cmd [a long list of arguments] 

たった3 [SHIFTを押して#を挿入する必要がある場合は4]キーストロークで実行できるので、この方法を好みます。

^a#<ENTER>

^ aは現在の行の先頭に移動します

#コメントを追加

ENTERはコメントを実行します


0

その場合は、行の先頭に#を付けて、Enterキーを押します。

...またはキーコンボを使用: ESC #

bind -p | grep -i 'insert-comment'   # "\e#": insert-comment

参照:Bash-コマンドを実行せずに保存する


0

スペースを追加してみてください。(パイプ)行の終わりでEnterキーを押してから、Ctrl-Cキーを押します。

Space|EnterCtrl+ C

コマンドは、|を付けて履歴に残ります。最初の#の代わりに(バックスペースを使用して単純に削除できます)(削除するのは面倒かもしれません)。

免責事項:これが常に機能するかどうかはわかりません!自己責任!

$ cmd [長い引数リスト] |

> Ctrl+C

ドル Up

$ cmd [長い引数リスト] |


0

次の行を使用してみてください:

history -s -p $COMMAND

からhelp

The -p option means to perform
history expansion on each ARG and display the result,

つまり!!、のようなものを拡張し、結果を履歴の一番下に保存できます。


history -s2年前に回答で与えられました。それは-p改善されますか?何をし-pますか?(そうすることが理にかなった範囲で、あなたはあなたの答えをより良くするためにあなたの答えを編集するべきです、そして私のコメントに別のコメントで答えないでください。)
G-Manは

0

別のオプションは、行の先頭に移動して、あなたがやろうとしていたことを行い、その後に&&を続けます。

rm old_file && cmd [args]

したがって、実行したいことが成功した場合、コマンドはすぐに実行され、失敗した場合、コマンドは実行されませんが、履歴には残ります。あなたもできる

test && cmd [args]

引数のないテストは失敗しますが、これは#メソッドに比べて追加のキーストロークがいくつかあります。


0

私が望む「いくつかのキーストローク」は、Ctrl-UとCtr-Yで、キルリングにラインを格納し、後でそれをヤンクバックすると思います。それは歴史には入っていないが、あなたがしなかったので、それはそうすべきではないと思う。

Readline Killingコマンド

キリングアンドヤンキング

私はこの数年前に学びましたが、忘れてしまい、それらのキーストロークも探していました。

ここでも説明されています:https : //unix.stackexchange.com/questions/140741/how-to-save-a-command-you-entered-without-executing-it

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.