Birden çok terminal ile Bash geçmişi ele alma

88

Esas olarak Terminatör kullanıyorum ve genellikle 3 bölünmüş terminal penceresi ile açılır. Ayrıca çeşitli nedenlerle Gnome terminalini kullanıyorum. Bu durumda, bazen history

komutunu çalıştırdığımda önceden verilen komutları kaçırdığım için, bash geçmişinin nasıl işlendiğini merak ediyorum

Örneğin, komut istemi mevcut bash tarihçesini ( \! ) gösterir ve Terminatörü 3 bölünmüş terminal penceresiyle başlatırsam, tüm terminallerde aynı tarih satırını (100 diyelim) alırım. Hangi tarih kaydedilecek?

Ayrıca Terminatör kullandıktan sonra Gnome Terminali'ni başlatıyorum. Terminatörde daha önce verilen tüm komutlara rağmen hat 100’ü aldım

    
sordu zetah 18.11.2011 07:39

4 cevap

80

Kaydedilen bash oturumu, en son kapatılan terminal için olan oturumdur. Her seans için komutları kaydetmek isterseniz, buradan açıklanan hileyi kullanabilirsiniz.

export PROMPT_COMMAND='history -a'
     

Manpage'den alıntı yapmak için: “Eğer ayarlanmışsa, değer her bir ana komutun verilmesinden önce bir komut olarak yürütülür.”

     

Böylece, komutum her bittiğinde, komut satırını (yalnızca $ PS1) görüntülemeden önce, yazılmayan geçmiş öğesini ~/.bash_history değerine ekler.

     

Yani bu satırı /etc/bash.bashrc koyduktan sonra, kendimi tekerleklerimi yeniden keşfettiğimi ya da terminallerimle tembel olduğum için yeniden yazarak değerli saniyeler kaybettiğimi bulmak zorunda değilim.

Yine de, farklı oturumlardaki komutların geçmiş dosyanızda karıştırılacağını hesaba katmanız gerekecek. Böylece, daha sonra okumak kolay olmayacaktır.

Ayrıca bkz:

verilen cevap jcollado 18.11.2011 07:52
26

man bash öğesinin birden fazla okunmasından sonra, her kabuk için ayrı geçmiş dosyaları kullanıyorum. % Co_de% sonra yaptım

[[ -d ~/.history ]] || mkdir --mode=0700 ~/.history
[[ -d ~/.history ]] && chmod 0700 ~/.history
HISTFILE=~/.history/history.$$
# close any old history file by zeroing HISTFILESIZE  
HISTFILESIZE=0  
# then set HISTFILESIZE to a large value
HISTFILESIZE=4096  
HISTSIZE=4096  

mkdir -m 0700 ~/.history 'e. Her şimdi ve sonra, ~/.bashrc 'sini hatırlıyorum ve temizliyorum. Yazdığım her komutu benim için saklı tutmak güzel.

Az önce ne yaptığımı görmek için geç kullanmıştım: % du -sk .history
ya
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
(1. argümanı ör. sıralama zincirindeki cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less 'yi içerecek şekilde).

    
verilen cevap waltinator 20.11.2011 00:48
4

Ayrıca bkz. " Kalıcı geçmişi geçmişini bash " alternatif. Bu, daha önce yazdığınız tüm komutları herhangi bir terminaline bir "kalıcı tarih" dosyasına (genellikle .history için yapılan işlemle birlikte) göndermeye zorlar.

    
verilen cevap Eli Bendersky 25.01.2016 00:33
4

Tüm terminallerden history değerini göstermek için:

. export PROMPT_COMMAND='history -a; history -r' .bashrc dosyanıza ekleyin.

Kaynak: İşte

verilen cevap Elijah Lynn 31.10.2013 20:17

Etiketlerdeki diğer soruları oku