Mengecualikan beberapa perintah agar tidak disimpan dalam bash history


31

Apakah ada cara untuk mengecualikan perintah seperti rm -rf, svn revertagar tidak disimpan dalam bash history? Sebenarnya saya, secara tidak sengaja, telah mengeluarkannya beberapa kali walaupun saya tidak memiliki niat untuk melakukannya, hanya karena saya melakukan sesuatu dengan cepat dan itu terjadi. Karenanya hasil dari kehilangan banyak pekerjaan yang saya lakukan sejauh ini.


3
Anda mungkin tertarik pada serverfault.com/questions/48769/…
Luc M

Jawaban:


53

Anda mungkin ingin $HISTIGNORE: "Daftar pola yang dipisahkan dengan titik dua yang digunakan untuk memutuskan baris perintah mana yang harus disimpan pada daftar sejarah." Baris ini di ~ / .bashrc Anda harus melakukan pekerjaan:

HISTIGNORE='rm *:svn revert*'

Selain itu, Anda dapat menambahkan spasi di awal perintah untuk mengeluarkannya dari riwayat. Ini berfungsi asalkan $HISTCONTROLmengandung ignorespaceatau ignoreboth, yang merupakan default pada setiap distro yang saya gunakan.


4
ruang adalah bagaimana saya selalu melakukannya.
Rob

Dulu saya sengaja memasukkan tambahan y, setelah semua cp(alias cp -i) selesai. Jadi saya alias ysebagai alias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'... Tapi HISTIGNOREadalah metode yang lebih baik seperti yang terlihat. :) Terima kasih.
anishsane

2
Untuk lebih eksplisit: Anda dapat menambahkan export HISTCONTROL="ignorespace"Anda ~/.bashrcuntuk mengabaikan perintah yang dimulai dengan spasi.
Aidan Feldman

@AidanFeldman tidak default pada macOS
akauppi

CATATAN: ruang harus disertakan ketika kita mengetikkan commandline dan bukan di HISTIGNORE.
Gayan Weerakutti

6

Meskipun sedikit berbeda dari pertanyaan OP, ketika saya sengaja tidak ingin perintah disimpan dalam bash history, saya mengawali mereka dengan spasi. Bekerja di Ubuntu dan variannya, tidak yakin apakah itu bekerja di semua sistem.


6
Tergantung $HISTCONTROL(lihat jawaban saya).
l0b0

@ l0b0 benar, terima kasih telah menunjukkan.
k4rtik

1

Saya biasanya membunuh bash-instance saya ketika saya telah melakukan hal-hal yang tidak saya inginkan dalam sejarah.

kill -9 $$

$$ mewakili proses saat ini - bash ketika Anda menjalankannya dari shell. Anda dapat menggunakan $ BASHPID, tetapi itu lebih banyak mengetik :-)


2
Beberapa pengaturan Bash (seperti ini ) akan menyimpan histori setelah setiap perintah, dan dalam hal ini tidak akan berfungsi.
l0b0

1
Saya biasa melakukan ini. tetapi pengaturan HISTFILE=/dev/nulladalah pilihan yang lebih baik.
anishsane

hanya HISTFILE=bekerja di bash dan ksh.
kubanczyk

atauunset HISTFILE
Todd Walton
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.