一部のコマンドをbash履歴に保存されないようにする


31

以下のようなコマンドを除外するためのどのような方法がありrm -rfsvn revertbashの履歴に保存されている取得されているからでは?実際、私は、自分がやろうと思っていないのに、間違って何度もそれらを発行しました。したがって、これまでに行った多くの作業が失われます。


回答:


53

あなたは欲しいかもしれない$HISTIGNORE:「履歴リストに保存する必要のあるコマンドラインを決めるために使用されるパターンのコロン区切りのリストを。」〜/ .bashrcの次の行が仕事をするはずです:

HISTIGNORE='rm *:svn revert*'

また、コマンドの先頭にスペースを追加して、履歴から除外することもできます。これ$HISTCONTROLは、ignorespaceまたはが含まれている限り機能しますignoreboth。これは、使用したすべてのディストリビューションのデフォルトです。


4
スペースは私がいつもやってきたことです。
ロブ

(エイリアス)がyすべて乗り越えた後、誤って追加のを入力していました。だから私は... とエイリアスしましたが、見た目はより良い方法です。:)ありがとう。cpcp -iyalias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'HISTIGNORE
anishsane

2
より明確にするexport HISTCONTROL="ignorespace"ために、~/.bashrcスペースで始まるコマンドを無視するように追加できます。
エイダンフェルドマン

@AidanFeldmanはmacOSでデフォルトではない
akauppi

注:HISTIGNOREではなくコマンドラインで入力するときにスペースを含める必要があります。
ガヤンウィエラクッティ

6

OPの質問とは少し異なりますが、コマンドをbash履歴に保存したくない場合、スペースを先頭に付けます。Ubuntuとそのバリアントで動作しますが、すべてのシステムで動作するかどうかはわかりません。


6
に依存します$HISTCONTROL(私の答えを参照)。
l0b0

@ l0b0右、指摘してくれてありがとう。
k4rtik

1

私は通常、歴史上望ましくないことをしたときにbashインスタンスを殺します。

kill -9 $$

$$は現在のプロセスを表します。シェルから実行するとbashになります。$ BASHPIDを使用できますが、それはより多くの入力です:-)


2
一部のBash設定(このような)は、各コマンドの後に履歴を保存します。その場合、これは機能しません。
l0b0

1
以前はこれをしていました。しかし、設定HISTFILE=/dev/nullはより良いオプションです。
アニセーン

単にHISTFILE=bashのとkshの両方で動作します。
クバンチク

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