現在のセッション履歴にプッシュせずにzshでコマンドを実行するには? [コピー]

現在のセッション履歴にプッシュせずにzshでコマンドを実行するには? [コピー]

bashとzshは、コマンドの前にスペースを追加した場合にコマンドを履歴に入れない簡単な方法をサポートします。これはセッション全体でうまく機能します(存在する場合setopt histignorespace)。しかし、コマンドはまだ現在のセッション履歴に残ります。

コマンドを入力しない方法現在のセッション履歴(または実行後にifを削除しますか?)

答え1

setopt histignorespaceコマンドを使うはい現在のセッション履歴から削除します。を押してテストUpし、コマンドラインがそのままであることを確認すると機能です。

これらのコマンドは、次のコマンドが入力されるまで内部履歴に残るため、その行をしばらく再利用または編集できます。他のコマンドを入力せずにすぐに消えるようにするには、スペースを入力してEnterキーを押します。

入力したコマンドが空白で始まらないhistignorespace場合、またはこのオプションがオンになっていない場合現在、セッション履歴からコマンドを削除できません。(外部から履歴ファイルを編集できます)。

答え2

zshの代わりにbashを使用している場合は、次の手法を使用して履歴からコマンドを削除できます。

上矢印を押してその行に到達し、Ctrl-Uを押して削除します。 ENTERを押すのではなく、上矢印または下矢印を押して別の履歴行に移動します。

削除したい行は空行に置き換えられます。これがどこに文書化されているのかはわかりませんが、数年前に偶然発見しただけです。

たとえば、^ Uを押して行を消去するのではなく、何かを変更します。エンターを押さないでくださいすると、新しい履歴エントリが作成されます。代わりに上矢印または下矢印を押します。行が履歴から永久に変更され、上下の矢印を使用してビューに戻すと、これを確認できます。

永続的とは、上下の矢印キーを押した後、新しい/編集されたコマンドでEnterキーを押しても行が変更されたままになることを意味します。編集された行だけが履歴に残り、元の行を置き換えてシェルを終了すると、通常どおり$ HISTFILEに保存されます。

履歴に影響を与えないように、^ Cを押して編集を中止するか、^ Uを押して消去します。

history -d別の方法は、過去の行番号を知っている場合に使用することです。たとえば、

$履歴| grepの歴史|
[...関連なし、削除済み...]
10113 ヘルプ履歴
10114歴史| grepテール|

$履歴-d 10113

$履歴| grepの歴史|
[...関連なし、削除済み...]
10113 歴史-d 10113
10114歴史| grepテール|

このhelp history行は削除されましたhistory -d 10114

関連情報