Perintah yang sama tercantum dalam histori saya berulang kali. Bagaimana saya bisa menghindari ini? Saya tahu itu mungkin terjadi HISTCONTROLtetapi saya belum menemukan cara yang benar.
Saya membuat pertanyaan terkait: askubuntu.com/questions/205520/… . Dups dalam riwayat berguna untuk melihat konteks dari suatu perintah. Apa yang ingin Anda hilangkan dups terkadang ketika Anda mencetak sejarah.
justingordon
Jawaban:
123
Dari bashhalaman manual:
HISTCONTROL
Daftar nilai yang dipisahkan oleh titik dua yang mengendalikan bagaimana perintah disimpan pada daftar riwayat. Jika daftar nilai termasuk ignorespace, garis yang dimulai dengan karakter spasi tidak disimpan dalam daftar riwayat. Nilai ignoredupsgaris penyebab yang cocok dengan entri riwayat sebelumnya tidak disimpan. Nilai ignorebothadalah singkatan untuk ignorespace dan
ignoredups. Nilai darierasedupsmenyebabkan semua baris sebelumnya yang cocok dengan baris saat ini dihapus dari daftar riwayat sebelum baris itu disimpan. Nilai apa pun yang tidak ada dalam daftar di atas diabaikan. Jika HISTCONTROL tidak disetel, atau tidak menyertakan nilai yang valid, semua baris yang dibaca oleh parser shell disimpan pada daftar histori, tunduk pada nilai HISTIGNORE. Baris kedua dan selanjutnya dari perintah majemuk multi-baris tidak diuji, dan ditambahkan ke histori terlepas dari nilai HISTCONTROL.
Apakah Anda ingin saya menambahkan HISTCONTROL = ignoreboth di bagian bawah ~ / .bashrc?
karthick87
1
@arthick Tidak masalah di mana Anda meletakkannya, bagian bawah baik-baik saja.
Yesaya
Pada instalasi Ubuntu 12.04 saya, saya harus membuat modifikasi ini di sebagian ~/.bash_loginbesar waktu itu akan berfungsi jika. Bashrc dimodifikasi tapi itu tidak terjadi sepanjang waktu.
ck-
3
Jangan lupa untuk menjalankan ini setelah Anda memperbarui file bash profile / rc Anda -source ~/.bashrc && source ~/.bash_profile
Eric Kigathi
23
Tempelkan ini di ~/.bashrc:
export HISTCONTROL=ignoredups
Anda bisa menggunakan ignoreboth. Ini singkatan untuk keduanya ignorespaces(perintah dimulai dengan spasi) dan ignoredups(duplikat).
Saya lebih suka ignoredupssendiri karena saya menemukan perilaku default mengabaikan perintah dengan spasi di depan cukup menjengkelkan ketika saya menyalin perintah dari situs web dan itu tidak disimpan karena saya tidak sengaja menyalin di spasi juga .... Tapi untuk masing-masing sendiri.
@ karthick87 dikutip dari jawaban lain: Nilai ignoredupsgaris penyebab yang cocok dengan entri riwayat sebelumnya tidak disimpan . Itu hanya menghilangkan garis identik yang berurutan.
AL
10
Memasukkan ini ~/.bashrcakan menerapkan solusi @ alvin di berbagai sesi sebagai wlell
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
Mengapa dia menggunakan export HISTCONTROLdan milikmu tidak? Apa bedanya? Ini bekerja untuk saya tanpa ekspor, saya hanya ingin tahu
felwithe
1
Pertanyaan bagus! Saya juga ingin tahu jawabannya. Secara umum exportmembuat variabel tersedia untuk sub-proses. stackoverflow.com/q/1158091/552621 Dalam kasus HISTCONTROL, PROMPT_COMMANDdll, variabel ini digunakan oleh shell itu sendiri jadi mungkin mengekspor mereka (anak-anak proses) tidak diperlukan.
Jawaban:
Dari
bash
halaman manual:Jadi, letakkan baris berikut di Anda
~/.bashrc
:export HISTCONTROL=ignoreboth:erasedups
sumber
~/.bash_login
besar waktu itu akan berfungsi jika. Bashrc dimodifikasi tapi itu tidak terjadi sepanjang waktu.source ~/.bashrc && source ~/.bash_profile
Tempelkan ini di
~/.bashrc
:Anda bisa menggunakan
ignoreboth
. Ini singkatan untuk keduanyaignorespaces
(perintah dimulai dengan spasi) danignoredups
(duplikat).Saya lebih suka
ignoredups
sendiri karena saya menemukan perilaku default mengabaikan perintah dengan spasi di depan cukup menjengkelkan ketika saya menyalin perintah dari situs web dan itu tidak disimpan karena saya tidak sengaja menyalin di spasi juga .... Tapi untuk masing-masing sendiri.sumber
ignoredups
garis penyebab yang cocok dengan entri riwayat sebelumnya tidak disimpan . Itu hanya menghilangkan garis identik yang berurutan.Memasukkan ini
~/.bashrc
akan menerapkan solusi @ alvin di berbagai sesi sebagai wlellSumber: Linux: Bash history: "ignoredups" dan "erasedups" mengatur konflik dengan histori umum lintas sesi
sumber
export HISTCONTROL
dan milikmu tidak? Apa bedanya? Ini bekerja untuk saya tanpa ekspor, saya hanya ingin tahuexport
membuat variabel tersedia untuk sub-proses. stackoverflow.com/q/1158091/552621 Dalam kasusHISTCONTROL
,PROMPT_COMMAND
dll, variabel ini digunakan oleh shell itu sendiri jadi mungkin mengekspor mereka (anak-anak proses) tidak diperlukan.sumber
Tambahkan yang berikut ke Anda
~/.bashrc
:Untuk melakukan ini, Anda dapat menggunakan perintah ini:
sumber
Untuk merekam secara unik setiap perintah baru itu rumit. Pertama, Anda perlu menambahkan
~/.profile
atau serupa:Maka Anda perlu menambahkan
~/.bash_logout
:sumber