Untuk mencegah masuknya perintah "berbahaya" dalam sejarah bash, saya telah menambahkan baris berikut ke .bashrc
file saya :
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
ini bekerja dengan baik, tetapi memiliki efek samping: Saya tidak dapat melihat riwayat lengkap perintah yang dijalankan pada mesin. Katakanlah saya memiliki beberapa mesin untuk percobaan, dan saya ingin dapat melihat semua perintah dieksekusi. Saya akan menggunakan bash internal history
untuk menampilkan perintah yang dieksekusi, dan mungkin grep untuk tanggal hari ini:
history | grep Sep-28
Apa yang ingin saya miliki adalah mencatat perintah "berbahaya" juga, tetapi letakkan #
di awal baris, sehingga jika saya mengeksekusi perintah secara tidak sengaja, tidak ada kerusakan yang akan terjadi.
Saya tidak tahu apakah ini mungkin.
Pembaruan dan klarifikasi:
Alasan utama mengapa ini menjadi masalah bagi saya adalah bahwa saya biasanya terhubung ke mesin saya dari beberapa terminal, dan perintah apa pun yang dijalankan pada satu terminal segera dibaca ke dalam sejarah terminal lain. Ini dicapai oleh
PROMPT_COMMAND="history -a; history -c; history -r"
Bayangkan saya memiliki dua terminal terbuka. Dalam satu saya menjalankan beberapa cat /dev/foo > file.out
proses. Di bagian kedua, saya memeriksa perkembangannya ls -lAhF
. Saya terus mengulangi ls
dengan menekan Updan ENTER(yaitu, perintah terakhir dari sejarah). Segera setelah perintah pertama selesai, perintah terakhir dari history tidak lagi ls
, tetapi cat /dev/foo > file.out
. Jika saya tidak hati-hati, saya akan mulai cat lagi dan menimpa file.out.
Yang ingin saya capai adalah bahwa perintah cat akan didahului dengan #
, sehingga tidak akan dieksekusi. Saya akan, bagaimanapun, masih melihatnya dalam sejarah dan dapat menggunakannya kembali (jika itu adalah perintah yang panjang) dengan tidak berkomentar.
watch ls -lAhF
atauwhile sleep 1; do ls -lAhf; done
; alih-alih menonton ukuran file, Anda dapat menggunakanpv /dev/foo > file.out
( ivarch.com/programs/pv.shtml ).