Terminal veri saklıyor mu?


9

Bu çok uzun zamandır bilmek istediğim bir şey, ama aslında bir soru sormak için gelmedim.

Linux dağıtımlarında sağlanan terminalde, komutların tüm tarihinin ok tuşlarını kullanarak görülebileceğini biliyorum (başka bir yöntem varsa, bunun farkında değilim), bu nasıl olur?

Terminalin tüm tuş vuruşlarını kaydettiği bir yer var mı? Bir çeşit tampon mu? Ancak, yine, eğer bir tampon olsaydı, bir süre sonra temizlenirdi, değil mi?

Bu sistem nasıl çalışır?


önceden kullanılan tüm komutları almak için tarih yaz ..
Sukupa91

OP historykomut hakkında değil, eski komutları hatırlamanın tüm sisteminin nasıl çalıştığını soruyor .
Tarun

üzgünüm yanlış anladım ..
Sukupa91

2
Bu kural dışı duruma dikkat edin: komut bir boşlukla başlarsa, komut geçmişte sonlanmaz.
Rinzwind

@Rinzwind, bir boşlukla başlarsa tarihe eklenir.
GC 13

Yanıtlar:


10

Bu komut geçmişi ve terminalden ziyade kabuğun bir özelliğidir.

Ubuntu'da (ve diğer Linux dağıtımlarının çoğunda olmasa da birçoğu) etkileşimli kullanım için varsayılan kabuk Bash'tir ( /bin/bash). Bash geçmişinizi tutar, bu da adresindeki son komutların bir listesidir ~/.bash_history. Bir kabuğu açtığınızda (genellikle bir terminal açarak) bu dosya okunur ve bu kabuğun iç geçmişine yüklenir. Kabuğu kapattığınızda, değişiklikler dosyaya geri yazılır. Varsayılan olarak bu son 500 komutla sınırlıdır.

Bunun tam olarak nasıl çalıştığını değiştirebilecek birkaç değişken ve kabuk seçeneği vardır. man bashDaha fazla bilgi için bash manpage ( ) 'e bakınız. Sadece aramak TARİH (tip /^HISTORYile ve onaylayın Enter, bir sonraki bulmak atlamak n)

Ayrıca, tarihin etrafında dolaşmaktan çok daha fazla yöntem var Upve Down:

  • Örneğin, Ctrl+ tuşuna Rve önceki bir komutun bir bölümüne bastığınızda , bash eşleşen bir komut için geçmişte geriye doğru arama yapar , ilk eşleşme aradığınız komut değilse Ctrl+ tuşuna basmayı tekrarlayın R. (Bkz. Bash sayfasındaki 'Tarihi Yönetme Komutları')

  • Kopya /etc/inputrciçin ~/.inputrcolan hatlar ve yorumsuz history-search-forwardve history-search-backwardonlarda. Bir komutun ilk harflerini yazar ve tuşuna basarsanız PgUp, bash yalnızca geçmişten aynı harflerle başlayan komutları gösterir. (Sadece bu değişiklik yapıldıktan sonra açılan mermilerde çalışın)

  • Kabuktaki !!bir komut yerine yazın, bu son komutu tekrarlar (bu konuda daha fazla bilgi için bash sayfasında 'TARİH GENİŞLETMESİ' konusuna bakın).


1
Ve bir tarih tutmasını istemiyorsanız unset HISTFILE, ~ / .bashrc'nize koyun . Daha sonra, her bir yeni kabuk çağrısı için geçmişi temizleyerek tarihi hafızada tutacaktır.
CVn

10

Komut geçmişi genellikle kullanıcı .bash_historydizinine göre ana dizininizdeki dosyada saklanır . Yani, her kullanıcının yürüttüğü kendi komutları vardır.

Birden fazla terminal oturumu açıldığında, ok tuşuna basarken size farklı komutlar gösterebilirler, ancak tüm terminal pencerelerini kapattığınızda farklı terminal oturumundaki geçmiş ortak bir ~/.bash_historydosyayla birleştirilir .

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.