Bagaimana saya bisa melihat riwayat Bash dari lebih dari satu sesi terminal di Ubuntu? [duplikat]

11

Kemungkinan Duplikat:
Bisakah file riwayat disatukan dalam bash?

Saya menggunakan Ubuntu Server 9.10 dan saya ingin dapat melihat riwayat bash saya untuk lebih dari satu sesi terminal. Yaitu 200 perintah terakhir saya atau lebih, bahkan jika saya telah keluar di antaranya.

Ketika saya menggunakan, historysaya hanya melihat semua perintah dari sesi terminal saya yang sebenarnya. Bagaimana saya bisa melihat lebih banyak histori perintah dari Bash? Apakah ada pengaturan khusus untuk bash yang harus saya ubah dari nilai default di Ubuntu?

Saya tidak punya ~/.bash_historyfile. Tapi saya punya ~/.bashrcdengan HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsdanHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

PEMBARUAN: Saya sekarang mencoba Ubuntu Server 10.10 di VirtualBox. Jika saya hanya mematikan VirtualBox tanpa perintah shutdown, maka lain kali ketika saya boot, perintah dari sesi terakhir tidak disimpan dalam file histori.

Perintah hanya disimpan jika saya mematikan mesin dengan perintah shutdown. Misalnya shutdown -P 0.

Ini harus menjadi alasan masalah saya. Jadi saya harus mencari tahu bagaimana cara menyimpan sejarah perintah lebih sering. Misalnya setelah setiap perintah.

Jonas
sumber
Apa yang Anda dapatkan jika Anda melakukannya echo $HISTSIZEdan echo $HISTFILESIZE? Saya (Ubuntu) ~/.bashrcmemiliki HISTCONTROLbaris yang sama dengan Anda yang mati otak sejak yang kedua menimpa yang pertama dan nilai-nilai yang seharusnya dipisahkan dengan titik dua, bukan dipisahkan oleh koma. Jika Anda melakukannya, set -oapakah ini menunjukkan garis yang mengatakan "riwayat aktif"?
Dijeda sampai pemberitahuan lebih lanjut.
Saya dapatkan 500dengan echokedua variabel danhistory on
Jonas
pernyataan HISTCONTROL kedua adalah yang Anda dapatkan, bukan yang pertama. meskipun ignoreboth adalah singkatan singkat untuk ignoredups + ignorespace sehingga mungkin bukan masalahnya.
quack quixote
1
ini adalah duplikat: superuser.com/questions/37576/…
warren
1
@warren: temukan bagus. Saya setuju, sepertinya persis apa yang diminta Sanoj.
quack quixote

Jawaban:

6

Kamu bisa menggunakan

history -a

untuk segera menambahkan riwayat di memori ke file riwayat. Satu sesi terminal tidak dapat melihat sesi yang lain kecuali ini dilakukan atau yang lain keluar.

Kamu bisa menggunakan

history 200 | less

untuk melihat jumlah entri.

Selain HISTSIZEmelihat entri di halaman Bash man mengenai HISTFILESIZE.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
history -a´ doesn't do anything for me, and not sejarah 200 | less`, tetapi saya telah memperbarui pertanyaan saya dengan lebih banyak info. Bagaimanapun, terima kasih.
Jonas
Saya pikir saya telah menemukan alasan sekarang. Riwayat tidak disimpan kecuali saya melakukan shutdown bersih. Lihat pertanyaan baru saya: unix.stackexchange.com/questions/3330/…
Jonas
6

Setelah Anda keluar riwayat akan ditambahkan ke file ~/.bash_history. Silahkan lihat di sana.

Secara default ia akan mengingat 500 perintah terakhir Anda. Jika Anda ingin menyimpan lebih banyak set variabel HISTSIZEdalam ~/.bashrc.

Saya juga menambahkan ignoredupsuntuk HISTCONTROL(dengan HISTCONTROL=$HISTCONTROL:ignoredup). Ini membuat perintah berturut-turut duplikat untuk disimpan hanya sekali.

Lihat man 1 bashapa lagi yang bisa Anda selidiki tentang sejarah.

Benjamin Bannier
sumber
Terima kasih untuk balasan Anda. Tapi saya tidak punya ~/bash_historyfile, dan tidak ada HISTSIZEdi ~/.bashrctapi saya punya HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsdan HISTCONTROL=ignorebothdan itu adalah Ubuntu Server, jika itu penting.
Jonas
1
@Snoj Perhatikan .di ~/.bash_history. Dan untuk HISTSIZEitu hanya akan menggunakan nilai default 500 entri.
Benjamin Bannier
Ya, tapi saya tidak punya ~/.bash_historyfile di sistem saya. Saya biasa ls -amemeriksa.
Jonas
@Sanoj Jadi mungkin itu bukan default. Nama file disimpan dalam $HISTFILEvariabel, jadi echo $HISTFILEakan memberi tahu Anda di mana mencarinya.
Benjamin Bannier
echo $HISTFILEmemberi saya /home/sanoj/.bash_history- aneh. Mungkin itu tidak diaktifkan karena alasan keamanan?
Jonas
1

bash history biasanya dimuat ketika shell mulai berjalan, dan disimpan ketika keluar secara normal. Anda dapat menggunakan history -adan history -nuntuk menimpanya, tetapi tidak secara otomatis kecuali Anda menyalahgunakan $PROMPT_COMMANDatau yang serupa.

Ignacio Vazquez-Abrams
sumber
0

Sanoj, ini seharusnya "hanya bekerja"; Saya tidak berpikir seharusnya ada sesuatu yang istimewa yang perlu Anda lakukan untuk mengaktifkan ini. Sepertinya ada sesuatu yang mengganggu jalannya acara.

Saya akan mencari di / etc / profile, / etc / bashrc (atau mungkin /etc/bash.bashrc menurut beberapa sumber), ~ / .bash_profile, ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout, untuk melihat jika ada sesuatu yang mungkin mempengaruhi sejarah (mungkin grep -i histpada masing-masing file di atas).

... Khususnya saya ingin tahu apakah Anda memiliki sesuatu di ~ / .bash_logout yang menghapus file tersebut.

Atau, apakah mungkin ada sesuatu yang menimpa $HOMEvariabel?

Zac Thompson
sumber