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