Bash geçmişini yalnızca alan önekiyle çalışan komutları hatırlayın!


10

Boşluk (lar) ile ön eklenmiş terminalde yürütülen komutlar, komut geçmişi dosyasına kaydedilmez. Ama bunun tersini almanın bir yolu var mı, yani tarih sadece boşluk önekleri kaydetmeli mi?

Yanıtlar:


12

İki değişkeni (HISTIGNORE bir HISTCONTROL) ayarlayarak varsayılan Ubuntu ayarlarını tersine çevirebilirsiniz, aşağıdaki gibi komutları kullanın:

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredupsgeçmiş davranışını yalnızca yinelenen satırları yok saymak ve boşlukla başlayan satırları yok saymak için değiştirir. ( HISTCONTROL=Yinelenenleri saklamak istiyorsanız HISTCONTROL öğesini boş dizeye (ile ) de ayarlayabilirsiniz , ancak bu genellikle istenmez.)

HISTIGNORE='!( *)'tarihin boşlukla başlamayan her satırı yoksaymasını sağlar: boşlukla ( *)başlayan her satırla eşleşir, ancak lider !maçı reddeder, böylece boşlukla başlamayan her şeyle eşleşir. Ve HISTIGNORE modeliyle eşleşen her şey tarih tarafından göz ardı edilecektir. (Bu sonuncu seçenek o bash ile çalıştırılır gerektirir extglobile, açık shopt -s extglob, ama bu Ubuntu varsayılan ayardır.)

Bunu kalıcı hale getirmek istiyorsanız, yukarıdaki iki komutu kendinize eklemeyi unutmayın ~/.bashrc.


teşekkürler, tam olarak istediğim buydu ... değişiklikleri kaydetti .bashrc.. bash'ın kullandığım her cds, lss ve diğer günlük komutları kaydetmesini önlemek için buna ihtiyacım vardı ; ve tarihte ihtiyacım olan birkaç komut için, şimdi öneki kullanabilirim ..
kesin

1
@rusty Sadece bazı önemsiz komutları hariç tutmak istiyorsanız HISTIGNORE='ls*:cd*', tarihin her satırı göz ardı etmesine neden olacak gibi bir şey kullanırsanız daha iyi olabilir lsveya cdbu listeyi diğer komutlarla genişletebilirsiniz, sadece :komutlar arasına bir . Ancak, "yukarı ok tuşu" ile erişebileceğiniz komut geri çağırma özelliğinin de bu geçmişi kullandığını unutmayın. Bu nedenle, yok sayılacak bir şey ayarlarsanız, yok sayılan komutları " yukarı ok".
falconer

Herhangi bir SSH komutunu yok saymak istedim, ancak ssh-copy-idveya gibi komutları değil ssh-keygen. İçinde HISTIGNORE, ssh\ *diğer yok sayılan komutlarıma " " ekledim. Boşluk karakterinden kaçmak zorunlu görünmektedir.
user38537

2

" Boşluk (lar) ile ön eklenmiş terminalde yürütülen komutlar komut geçmişi dosyasına kaydedilmez "

Evet onlar.

terminal geçmişi


1
bash ;-) bir ayardır
Rinzwind

Boşlukların ön ekine sahip komut.Like `sudo apt-get update`
Avinash Raj

HISTCONTROL değişkeninizin değeri nedir?
glenn jackman

@AvinashRaj: evet, "bu kaydedilmeyecek" komutunu gör, bir boşluk koyuyorum (hem komut satırında hem de geçmişte görünür). Yani bu şekilde çalışmıyor. Belki yapılandırabilirsiniz (HISTCONTROL ile); ancak varsayılan olarak durum böyle değildir.
BayVaykadji
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.