Saya sering menggunakan Terminal, dan kadang-kadang saya menjalankan perintah, yang bukan hal-hal yang saya tidak ingin orang lain lihat, tetapi lebih banyak perintah yang jika saya secara tidak sengaja diarahkan dan dieksekusi secara tidak sengaja akan menyebabkan banyak masalah.
Jadi saya bertanya-tanya apakah ada, atau saya bisa membuat, semacam 'mode penyamaran' Terminal yang akan memungkinkan saya, setelah menjalankan perintah tertentu, berhenti merekam riwayat saya, dan kemudian hanya mulai merekam setelah saya menjalankan mulai merekam sejarah lagi perintah dan keluar dari 'mode penyamaran', atau saya cukup me-restart Terminal?
Karena saya menemukan diri saya kemudian pergi dan menghapus barang-barang dari saya .bash_history
, ketika itu akan jauh lebih mudah jika saya bisa menghentikannya merekam di sana di tempat pertama, atau setidaknya mendapatkannya untuk mencoba merekamnya di suatu tempat di mana itu tidak akan terjadi. diizinkan, dan akhirnya tidak merekamnya.
.bash_history
. (Ubuntu 15.04 merusak Terminal, beruntung ini adalah USB langsung.)Jawaban:
Jalankan perintah tanpa memasukkannya ke dalam sejarah:
Cukup beri spasi sebelum perintah. Bash akan mengabaikan perintah dengan ruang yang diawali:
Contoh: Space
echo "Some secret text"
Catatan: Ini hanya berfungsi jika
HISTCONTROL
variabel diatur keignorespace
atauignoreboth
.Nonaktifkan riwayat sementara:
set +o history
atau Spaceshopt -uo history
untuk menonaktifkan riwayat.set -o history
ataushopt -so history
untuk mengaktifkannya kembali.Nonaktifkan histori untuk sesi saat ini (tidak akan mengingat perintah apa pun dari sesi):
Catatan: Anda akan dapat melihat perintah menekan Upsampai Anda menutup terminal.
Hapus perintah dari riwayat:
Lari Space
history | grep "part of your secret command"
Ini akan menampilkan daftar perintah yang sebelumnya dijalankan, dalam format ini:
Pilih nomor entri di sebelah kiri perintah. Anda dapat menyalinnya dengan Ctrl+ Shift+C
Jalankan di Space
history -d <number>
mana<number>
nomor entri untuk menghapus entri.Anda dapat menempelkan nomor itu dengan Ctrl+ Shift+V
Jawaban menarik lainnya:
sumber
history -d
untuk menghapus sebuah baris, ini akan menghapus konten dari baris tersebut, tetapi Anda tidak pernah dapat menghapus fakta bahwa Anda berlarihistory -d
(kecuali jika Anda terlebih dahulu menggunakanset +o history
sebelum menjalankanhistory -d
)unset HISTFILE
Pendekatan juga bekerja surut untuk semua perintah yang belum ditulis untuk.bash_history
belum.Anda cukup menghapus riwayat satu sesi terminal tertentu dengan menambahkan perintah
history -cw
setelah bekerja.Jangan tutup terminal sebelum memberikan perintah ini.
sumber
shopt -uo history
harus melakukan yang terbaik.Nuking variabel
HISTFILE
(et al) tidak akan menghentikan Upriwayat Anda yang sedang dicatat, itu hanya tidak akan mendorongnya ke disk. Ini mungkin atau mungkin bukan hal yang positif bagi Anda, tetapi mengingat Anda menyebutkannya, saya kira Anda menginginkan sesuatu yang lebih baik. Mengubahshopt
pengaturan histori akan menghentikan seluruh mekanisme histori dari pemicuan.Anda dapat mengaktifkan log kembali dengan
shopt -so history
(yang-s
dan-u
ditetapkan dan diset masing-masing).Perhatikan bahwa perintah itu sendiri mungkin akan dicatat, jadi tambahkan dulu dengan spasi untuk menghentikannya ditambahkan ke riwayat sebelum Anda menghapus variabel.
sumber
Cara lain untuk membunuh shell saat ini tanpa masuk ke file histori adalah dengan melakukannya:
Ini menyebabkan bash (dan mungkin cangkang lain juga) untuk mengirim sinyal SIGKILL ke dirinya sendiri, membunuhnya di tempat dan mencegahnya menulis apa pun ke disk.
sumber
Untuk menonaktifkan sementara sejarah perintah untuk sesi saat ini, Anda dapat sementara menghapus variabel lingkungan HISTFILE.
saat sesi aktif, Anda dapat mengakses riwayat seperti biasa, tetapi tidak akan disimpan ke disk.
Untuk membalik di sesi yang sama (semua perubahan akan direkam)
sumber
HISTFILE
lagi pada sesi saat ini? Jika Anda membatalkan perubahan (bahkan setelah menjalankan perintah rahasia) mereka akan disimpan ke dalam sejarah ketika Anda keluar.Anda dapat mengubah garis riwayat dalam sesi shell saat ini. Jika Anda menelusuri sejarah (mis. Dengan Upatau Ctrl+ P) dan mengubah baris tanpa menjalankannya , hanya versi modifikasi dari baris yang akan disimpan. Anda dapat memodifikasinya dengan cara apa pun yang Anda suka; pilihan yang baik akan termasuk menggunakan Ctrl+ Uuntuk benar-benar mengosongkan garis atau menggunakan Esc#untuk meletakkan
#
karakter komentar di awal.Untuk meninggalkan garis tanpa menjalankannya, ingatlah untuk tidak menekan Return( Enter). Apa yang saya lakukan adalah kembali ke baris terbaru dalam sejarah via Esc>.
(Alih-alih Escdiikuti oleh >, di sebagian besar terminal Anda dapat menahan Altdan menekan >; hal yang sama berlaku untuk Esc#saran di atas.)
Catatan: Anda tidak dapat mengubah entri dari sesi sebelumnya secara permanen dengan cara ini. Perubahan itu tidak akan diterapkan
HISTFILE
pada akhir sesi.sumber
Anda juga dapat membuat .bash_history hanya baca. Saya akan mengosongkan file terlebih dahulu dan kemudian lakukan:
sumber
Anda bisa menjalankan perintah sensitif dalam sesi layar, lalu menghancurkan sesi ketika Anda selesai.
Bergantian, Anda bisa menjaga sesi layar tetap hidup tetapi terpisah, dan hanya mengaksesnya ketika Anda benar-benar ingin dapat naik panah ke perintah yang berbahaya.
sumber
Secara pribadi saya gunakan
mksh
, dan shell ini secara default tidak memiliki file histori. Itu berarti Anda bisa meluncurkan shell alternatif sepertimksh
ataudash
(yang datang secara default dengan cara) untuk menjalankan perintah yang Anda tidak ingin dilihat pengguna, dan keluar setelah selesai.bash
history hanya akan mencatat bahwa Anda meluncurkan shell alternatif dan hanya itu.sumber
Anda juga dapat menggunakan multiplexer terminal seperti
tmux
,screen
. Jadi di bawahtmux
atauscreen
sejarah tidak akan disimpan.sumber