Ubuntu'da birden fazla terminal oturumundan Bash geçmişini nasıl görebilirim? [çiftleme]


12

Olası Çoğaltma:
Geçmiş dosyaları bash'da birleştirilebilir mi?

Ubuntu Server 9.10 kullanıyorum ve birden fazla terminal oturumu için bash geçmişimi görmek istiyorum. Yani son 200 komutum, aralarında oturum kapatmış olsam bile.

Ben kullandığımda historysadece gerçek terminal oturumumdaki tüm komutları görüyorum. Bash'ten nasıl daha fazla komut geçmişi görebilirim? Bash için Ubuntu'daki varsayılan değerlerden değiştirmem gereken belirli ayarlar var mı?

Bir dosyam yok ~/.bash_history. Ama bir var ~/.bashrcolan HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsveHISTCONTROL=ignoreboth

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

GÜNCELLEME: Şimdi VirtualBox Ubuntu Server 10.10'u deniyorum. VirtualBox'ı kapatma komutu olmadan kapatırsam, bir dahaki sefer önyükleme yaptığımda, son oturumdaki komutlar geçmiş dosyasına kaydedilmez.

Komutlar yalnızca makineyi kapatma komutuyla kapatırsam kaydedilir. Örneğin kapatma -P 0.

Sorunumun nedeni bu olmalı. Bu yüzden komut geçmişini nasıl daha sık kaydedeceğimi bulmam gerekiyor. Her komuttan sonra.


Yaparsan ne alırsın echo $HISTSIZEve echo $HISTFILESIZE? Benim (Ubuntu) ~/.bashrc, HISTCONTROLsizinkiyle aynı çizgilere sahiptir, çünkü ikincisi birinciyi geçersiz kılar ve değerlerin virgülle ayrılmış değil, iki nokta üst üste ayrılmış olması gerekir. Bunu yaparsanız set -o"tarih açık" yazan bir satır görünüyor mu?
sonraki duyuruya kadar duraklatıldı.

Ben olsun 500ile echohem değişkenlere vehistory on
Jonas

ikinci HISTCONTROL ifadesi ilk aldığınız değil, aldığınız ifadedir. ignoreboth ignoredups + ignorespace için bash kısayol olsa da , muhtemelen sorun değil.
quack quixote


1
@ warren: güzel bulmak. Kabul ediyorum, Sanoj'un tam olarak ne istediğine benziyor.
quack quixote

Yanıtlar:


7

Kullanabilirsiniz

history -a

bellek içi geçmişi hemen geçmiş dosyasına eklemek için. Bir terminal oturumu, bu yapılmadıkça veya diğerinden çıkılmadığı sürece diğerini göremez.

Kullanabilirsiniz

history 200 | less

giriş sayısını görmek için.

Ayrıca HISTSIZEBash man sayfasındaki girişi de görebilirsiniz HISTFILESIZE.


history -a´ doesn't do anything for me, and not geçmişi 200 | daha az`, ancak sorumu daha fazla bilgi ile güncelledim. Yine de teşekkürler.
Jonas

Sanırım şimdi bir sebep buldum. Temiz bir kapatma yapmadıkça geçmiş kaydedilmez. Yeni soruma bakın: unix.stackexchange.com/questions/3330/…
Jonas

7

Oturumu kapattıktan sonra geçmiş dosyaya eklenir ~/.bash_history. Auraya bir bak.

Varsayılan olarak son 500 komutunuzu hatırlar. Eğer kazanmak istiyorsanız daha değişkeni set HISTSIZEiçinde ~/.bashrc.

Ben de eklerim ignoredupsiçin HISTCONTROL(ile HISTCONTROL=$HISTCONTROL:ignoredup). Bu, yinelenen ardışık komutların yalnızca bir kez kaydedilmesini sağlar.

man 1 bashTarih hakkında başka neleri ayarlayabileceğinize bir göz atın .


Cevabın için teşekkürler. Ama ben yok ~/bash_historydosyayı ve hiçbir HISTSIZEiçinde ~/.bashrcama ben HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsve HISTCONTROL=ignorebotho madde eğer, Ubuntu Server.
Jonas

1
@Snoj Bildirimi .içinde ~/.bash_history. Ve HISTSIZEbunun için sadece 500 girişin varsayılan değerini kullanacaktır.
Benjamin Bannier

Evet, ancak ~/.bash_historysistemimde dosya yok . Eskiden ls -akontrol ederdim .
Jonas

@Sanoj Belki de varsayılan değildir. Dosya adı $HISTFILEdeğişkente saklanır , bu yüzden echo $HISTFILEnereye bakacağınızı söyleyecektir.
Benjamin Bannier

echo $HISTFILEbana /home/sanoj/.bash_historygarip geliyor. Belki de güvenlik nedenleriyle aktive edilmiyordur?
Jonas

1

bash geçmişi genellikle kabuk çalışmaya başladığında yüklenir ve normal olarak çıkıldığında kaydedilir. Bunu geçersiz kılmak history -ave kullanmak history -niçin kullanabilirsiniz , ancak kötüye $PROMPT_COMMANDveya benzeri bir şey yapmadığınız sürece otomatik olarak kullanamazsınız .


0

Sanoj, bu gerçekten "sadece çalışmalı"; Bunu etkinleştirmek için yapmanız gereken özel bir şey olması gerektiğini düşünmüyorum. Bir şeylerin normal olaylara müdahale ettiği anlaşılıyor.

Görmek için / etc / profile, / etc / bashrc (veya bazı kaynaklara göre /etc/bash.bashrc), ~ / .bash_profile, ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout, geçmişi etkileyebilecek bir şey varsa (belki de grep -i histyukarıdaki dosyaların her birinde).

... Özellikle ~ / .bash_logout içinde dosyayı kaldıran bir şey olup olmadığını merak ediyorum.

Alternatif olarak, bir şeyin $HOMEdeğişkeni geçersiz kılması mümkün mü?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.