Bagaimana saya bisa memodifikasi konten bash_history
file saya ? Nilai atau variabel apa yang mengontrol berapa lama riwayat berlangsung? Adakah hal lain yang dapat saya ubah untuk memberikan kontrol yang lebih baik terhadap riwayat BASH saya ??
11
HISTSIZE
danHISTFILESIZE
satu-satunya permukaan kontrol yang harus Anda kontrol berapa banyak sejarah dipertahankan.Jawaban:
Ada dua variabel yang mengontrol ukuran histori:
dan
Dua variabel ini memungkinkan Anda untuk mengontrol perilaku riwayat Anda. Pada dasarnya,
HISTSIZE
adalah jumlah perintah yang disimpan selama sesi Anda saat ini danHISTFILESIZE
jumlah perintah yang akan diingat di seluruh sesi. Jadi, misalnya:Dalam contoh di atas, karena
HISTSIZE
diatur ke 10,history
mengembalikan daftar 10 perintah. Namun, jika Anda keluar lalu masuk kembali,history
hanya akan mengembalikan 5 perintah karenaHISTFILESIZE
diatur ke 5. Ini karena, setelah Anda keluar dari sesi Anda,HISTFILESIZE
baris riwayat Anda disimpan ke file riwayat Anda (~/.bash_history
secara default tetapi dikontrol olehHISTFILE
). Dengan kata lain, perintah ditambahkanHISTFILE
hingga mencapai$HISTFILESIZE
garis di titik mana, setiap baris berikutnya yang ditambahkan berarti perintah pertama file akan dihapus.Anda dapat mengatur nilai-nilai variabel ini di
~/.profile
(atau~/.bash_profile
jika file itu ada). Jangan atur mereka di~/.bashrc
pertama Anda karena mereka tidak memiliki bisnis yang ditetapkan di sana dan kedua karena itu akan menyebabkan Anda memiliki perilaku yang berbeda dalam shell login vs non-login yang dapat menyebabkan masalah lain .Variabel berguna lainnya yang memungkinkan Anda menyesuaikan perilaku riwayat Anda adalah:
HISTIGNORE
: Ini memungkinkan Anda untuk mengabaikan perintah umum tertentu yang jarang menarik. Misalnya, Anda dapat mengatur:Itu akan menyebabkan perintah apapun yang dimulai dengan
pwd
,df
ataudu
untuk diabaikan dan tidak disimpan dalam sejarah Anda.HISTCONTROL
: Yang ini memungkinkan Anda memilih cara kerja histori. Secara pribadi, saya mengaturnyaHISTCONTROL=ignoredups
yang menyebabkannya menyimpan perintah yang digandakan hanya sekali. Opsi lainnya adalahignorespace
mengabaikan perintah yang dimulai dengan spasi, danerasedups
yang menyebabkan semua baris sebelumnya yang cocok dengan baris saat ini dihapus dari daftar riwayat sebelum baris itu disimpan.ignoreboth
adalah singkatan untuk ignorespace dan ignoredups.HISTTIMEFORMAT
: Ini memungkinkan Anda untuk mengatur format waktu dari file histori. Lihat jawaban Pandya atau bacaman bash
untuk detailnya.Untuk penyempurnaan lebih lanjut, Anda harus:
The
histappend
pesta pilihan. Ini dapat diatur dengan menjalankanshopt -s histappend
atau menambahkan perintah itu ke~/.bashrc
. Jika opsi ini disetelIni sangat berguna karena memungkinkan Anda untuk menggabungkan sejarah sesi yang berbeda (pikirkan terminal yang berbeda misalnya).
The
history
perintah memiliki dua pilihan yang berguna:history -a
: menyebabkan perintah terakhir ditulis ke file histori secara otomatishistory -r
: mengimpor file histori ke dalam sesi saat ini.Anda bisa, misalnya, menambahkan dua perintah ini ke Anda
PROMPT_COMMAND
(yang dieksekusi setiap kali shell Anda menampilkan prompt, jadi setiap kali Anda memulai shell baru dan setelah setiap perintah Anda jalankan di dalamnya):Digabungkan, mereka memastikan bahwa setiap terminal baru yang Anda buka akan segera mengimpor sejarah dari setiap sesi shell lainnya. Hasilnya adalah sejarah umum di semua terminal / sesi shell.
sumber
Ukuran default dari file histori adalah 500 baris. Setelah file .bash_history mencapai 500 baris, entri awal dihilangkan untuk memberi ruang bagi baris yang lebih baru, seperti di FIFO. Anda dapat mengubah ini dengan mengubah nilai variabel
HISTFILESIZE
yang secara default memiliki nilai 500.Menempatkan
HISTFILESIZE=10000
dalam .bashrc Anda akan meningkatkan jumlah baris file sejarah dapat menampung hingga 10.000, sehingga meningkatkan umur isinya.sumber
HISTSIZE
batas, pertimbangkan untuk mengubahHISTFILE
juga. Jika Anda menjalankanbash --norc
HISTSIZE
akan kembali ke nilai default, memotongHISTFILE
keluar Anda./etc/bash.bashrc
menetapkan aHISTFILESIZE
(atau mungkinHISTSIZE
; Saya belum memeriksa yang mana), maka Bash tampaknya terpotong.bash_history
pada titik yang dibaca/etc/bash.bashrc
(atau setidaknya di beberapa titik sebelum batas baru Anda diatur dalam file init Bash Anda sendiri). Untuk menghindari ini, sekali lagi, atur sendiriHISTFILE
sehingga riwayat asli Anda pergi ke sana dan tidak ke dalam.bash_history
file yang Bash memotong.export
, karena hal itu akan membuatnya terlihat oleh kulit kerang anak, yang kemudian bisa terlihat memangkasnya sebagai gantinya.bash_history
!)Baca
man bash
untuk detail lebih lanjut tentang sejarah bash seperti:Khususnya
HISTFILESIZE
danHISTSIZE
semoga Anda mencari dan membantu Anda.sumber