Terminalde çalıştırılan komutların geçmişini görüntüleyin


75

Yazılan tüm terminal komutlarımı kaydetmenin ve bir kayıt defterinde geçmişi gibi görmenin bir yolu var mı?

Yanıtlar:


92

Bu otomatik olarak yapılır. Bash komutlarınızı içeride saklar ~/.bash_history. Geçmişe bakmak istiyorsanız, bu dosyanın çıktısını birini kullanarak yazdırın.

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Veya bash'in yerleşik komutunu kullanabilirsiniz:

history

Geçmişi temizlemek için dosyayı silin ve geçici geçmişi temizleyin:

rm ~/.bash_history && history -c

Geçmiş boyutu varsayılan olarak 500 komuttur. Bununla birlikte, aşağıdaki satırı ekleyerek bunu artırabilirsiniz ~./bashrc:

HISTSIZE=<number of entries, -1 for unlimited>

Bu hemen yürürlüğe girmeyecek, ancak yalnızca yeni başlatılan oturumlarda geçerli olacaktır. Bunu uygulamak için, .bashrc dosyasını kaynak:

. ~/.bashrc

veya HISTSIZE=...şu anki oturumunuzda çalıştırın .


1
Varsayılan olarak, yalnızca en son 500 komutu olsa da tutar. Tutulacak numarayı değiştirebilirsiniz, ancak varsayılan ayarlarla yanlışlıkla yalnızca bir kez başlatmanız gerekir; tüm eski geçmişiniz gider.
kasperd

Bu benim için Ubuntu 16'da çalışmıyor
Nam G VU

31

historyYürütülen tüm komutları görüntülemek için bir terminal yazabilirsiniz .


Çıktıyı bazı satırlara kesebilirsiniz (burada 5 satır sayısıdır):

history 5

Yalnızca bir dize (yani mv) içeren komutları görüntülemek istiyorsanız , bunu yapabilirsiniz:

history | grep mv

Komutu !giriş numarasının ardından yazarak hatırlayabilirsiniz .

Diyelim ki böyle bir geçmişim var:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Çalıştırmak mkdir fooiçin yazabilirsiniz !2.
  • Son komutu çalıştırmak için kullanabilirsiniz !-1veya!!
  • Penultimate'ı çalıştırmak için kullanabilirsiniz. !-2

Kök ayrıcalıklarına (yani touch /etc/foo) ihtiyaç duyduğu için başarısız olan bir komut sudo !!çalıştırırsanız, son komutu kök olarak çalıştırmak için kullanabilirsiniz .


  • Eğer yazarsanız !manen son başlayan komutu uygulayacaksınız.man
  • Eğer yazarsanız !?man?, içerdiği son komutu çalıştırır ( zorunlu manolarak satır başında değil)

Komutta bir yazım hatası varsa, bu şekilde düzeltebilirsiniz. I tip diyelim cat .bash_hiyerine, .bash_hitarafından .bash_historysadece yazmanız gerekir ^hi^history^.


Kaynak: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps


2
Ayrıca, rehinede siz yazarken arama yapmak için Ctrl-R tuşlarına basabilirsiniz.
Mhmd

historyUbuntu 16'da benim için çalışıyor. Teşekkürler ve kabul edilenler olmalı!
Nam G VU

9

Sadece yaz :

history > print.txt

Çalışmakta olan dizininizde print.txt adlı yeni bir dosya oluşturulacaktır.


3
1000'den sonra komutları keser
Antoine

3

Sık sık sadece son komutları da istiyorum. Gelişme notlarıma veya iyi bir şekilde, örneğin bu gibi stackexchange sitelerine posta göndermek ... Bu, alakasız satır numaralarını kaldırarak çok faydalı oldu:

history | cut -c 8- | tail

veya takma ad olarak beğenirseniz, satır numaraları kaldırılır ve hemen girintili (kod teklifi işaretlemesi için gerektiği gibi)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"

1
Kullanımı daha kolay fc: askubuntu.com/a/839642/158442
muru

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.