Linux’un kabuğu, çalıştırdığınız komutların geçmişini kaydeder ve geçmişte çalıştırdığınız komutları tekrarlamak için arama yapabilirsiniz. Linux geçmişi komutunu ve nasıl kullanılacağını anladıktan sonra, verimliliğinizi önemli ölçüde artırabilir.
Geçmişi Değiştirme
George Santayana'nın ünlü söylediği gibi, “Geçmişi hatırlayamayanlar onu tekrarlamaya mahkumdur.” Ne yazık ki, Linux'ta geçmişi hatırlayamıyorsanız, isteseniz bile tekrarlayamazsınız.
İşte o zaman Linux history
komut kullanışlı olur. Önceki komutlarınızı gözden geçirmenizi ve tekrarlamanızı sağlar. Bu sadece tembellikleri teşvik etmek veya zamandan tasarruf etmek için tasarlanmamıştır – oyunda bir verimlilik (ve doğruluk) faktörü de vardır. Bir komut ne kadar uzun ve karmaşıksa, bir hata yapmadan hatırlanması ve yazılması o kadar zor olur. İki tür hata vardır: biri komutun çalışmasını engelleyen ve diğeri komutun çalışmasına izin veren, ancak beklenmedik bir şey yapmasını sağlayan.
history
komutu bu sorunları ortadan kaldırır. Çoğu Linux komutu gibi, düşündüğünüzden daha fazlası vardır. Ancak, history
komutuyla, Linux komut satırı kullanımınızı her gün artırabilir. Bu sizin zamanınıza iyi bir yatırım. Kullanmanın çok daha iyi yolları var history
Yukarı okuna art arda vurmaktan daha çok.
Tarihçe Komutanlığı
En basit haliyle, history
sadece adını yazarak komut verin:
history
Daha önce kullanılan komutların listesi terminal penceresine yazılır.
Komutlar, listenin sonunda en son kullanılanlar (en yüksek rakamlara sahip olanlar) olacak şekilde numaralandırılır.
Belirli sayıda komutu görmek için, history
komut satırında. Örneğin, en son kullandığınız 10 komutu görmek için aşağıdakileri yazın:
history 10
Aynı sonucu elde ederseniz, history
içinden tail
Komut. Bunu yapmak için aşağıdakileri yazın:
history | tail -n 10
İLİŞKİLİ: Linux'ta Borular Nasıl Kullanılır
Yinelenen Komutlar
Geçmiş listesinden bir komutu yeniden kullanmak istiyorsanız, bir ünlem işareti (!) Ve arada boşluk olmayan komutun numarasını yazın.
Örneğin, 37 numaralı komut satırını yinelemek için şu komutu yazabilirsiniz:
!37
Son komutu tekrarlamak için, boşluk olmadan tekrar iki ünlem işareti yazın:
!!
Bu, bir komut verdiğinizde ve kullanmayı unuttuğunuzda yararlı olabilir sudo
. tip sudo
, bir boşluk, çift ünlem işareti ve Enter tuşuna basın.
Aşağıdaki örnekte, gerektiren bir komut yazdık sudo
. Tüm satırı yeniden yazmak yerine, bir grup tuş vuruşunu kaydedebilir ve sadece sudo !!
, Aşağıda gösterildiği gibi:
mv ./my_script.sh /usr/local/bin/
sudo !!
Böylece, bir komutu tekrarlamak için ilgili numarayı listeden yazabilir veya en son kullandığınız komutu tekrarlamak için çift ünlem işaretlerini kullanabilirsiniz. Ancak, beşinci veya sekizinci komutu tekrarlamak isterseniz ne olur?
Tekrarlamak için bir ünlem işareti, kısa çizgi (-) ve önceki komutların sayısını (yine boşluk bırakmadan) kullanabilirsiniz.
Önceki 13. komutu tekrarlamak için aşağıdakileri yazardınız:
!-13
Komutları Dizeye Göre Arama
Belirli bir dizeyle başlayan son komutu tekrarlamak için, bir ünlem işareti ve ardından boşluk içermeyen dizeyi yazıp Enter tuşuna basabilirsiniz.
Örneğin, ile başlayan son komutu tekrarlamak için sudo
, şu komutu yazabilirsiniz:
!sudo
Yine de bu konuda bir tehlike unsuru var. İle başlayan son komut sudo
düşündüğünüz kişi değil, yanlış komutu başlatacaksınız.
Bununla birlikte, bir güvenlik ağı sağlamak için, :p
(baskı) değiştirici, aşağıda gösterildiği gibi:
!sudo:p
Bu talimatlar history
komutu yürütmek yerine terminal penceresine yazdırmak için. Bu, komutu kullanmadan önce görmenizi sağlar. İstediğiniz komut buysa, Yukarı oka basın ve ardından kullanmak için Enter tuşuna basın.
Belirli bir dize içeren bir komut bulmak istiyorsanız, bir ünlem işareti ve soru işareti kullanabilirsiniz.
Örneğin, “takma adlar” kelimesini içeren ilk eşleşen komutu bulmak ve yürütmek için şu komutu yazabilirsiniz:
!?aliases
Bu, dizede nerede göründüğüne bakılmaksızın “takma adlar” dizesini içeren tüm komutları bulur.
Etkileşimli Arama
Etkileşimli bir arama, eşleşen komutların bir listesini atlamanıza ve istediğiniz komutları tekrarlamanıza olanak tanır.
Aramayı başlatmak için Ctrl + r tuşlarına basmanız yeterlidir.
Arama ipucunu yazdıkça, ilk eşleşen komut görünür. Yazdığınız harfler ters tırnak (`) ve kesme işareti (‘) arasında görünür. Her harfi yazarken eşleşen komutlar güncellenir.
Ctrl + r tuşlarına her basışınızda, terminal penceresinde görünen bir sonraki eşleme komutunu geriye doğru arıyorsunuz.
Enter tuşuna bastığınızda, görüntülenen komut yürütülür.
Bir komutu yürütmeden önce düzenlemek için Sol veya Sağ ok tuşuna basın.
Komut, komut satırında görünür ve bunu düzenleyebilirsiniz.
Geçmiş listesinde arama yapmak için diğer Linux araçlarını kullanabilirsiniz. Örneğin, çıkışı history
içine grep
ve “aliases” dizesini içeren komutları arayın ve şu komutu kullanabilirsiniz:
history | grep aliases
Son Komutu Değiştirme
Bir yazım hatasını düzeltmeniz ve komutu tekrarlamanız gerekirse, değiştirmek için düzeltme işaretini (^) kullanabilirsiniz. Bu, bir komutu yanlış yazdığınızda veya farklı bir komut satırı seçeneği veya parametresiyle yeniden çalıştırmak istediğinizde kolunuzu kaldırmak için harika bir numara.
Kullanmak için (boşluk bırakmadan) bir düzeltme işareti, değiştirmek istediğiniz metni, başka bir düzeltme işareti, yerine koymak istediğiniz metni, başka bir düzeltme yazın ve Enter tuşuna basın.
Örneğin, yanlışlıkla “sshd” yerine “shhd” yazarak aşağıdaki komutu yazdığınızı varsayın:
sudo systemctl start shhd
Aşağıdakileri yazarak bunu kolayca düzeltebilirsiniz:
^shhd^sshd^
Komut “shhd”, “sshd” olarak düzeltilmiş olarak yürütülür.
Komutları Geçmiş Listesinden Silme
Ayrıca komutları geçmiş listesinden -d
(sil) seçeneğini tıklayın. Yanlış yazılmış komutunuzu geçmiş listesinde tutmak için hiçbir neden yoktur.
Kullanabilirsiniz grep
bulmak için numarasını history
ile -d
silme seçeneğini tıklayın ve ardından gittiğinden emin olmak için tekrar arama yapın:
history | grep shhd
history -d 83
history | grep shhd
Ayrıca bir dizi komutu -d
seçeneği. 22'den 32'ye (dahil) tüm liste girişlerini silmek için şu komutu yazın:
history -d 22 32
Yalnızca son beş komutu silmek için, aşağıdaki gibi negatif bir sayı yazabilirsiniz:
history -d -5
Geçmiş Dosyasını Manuel Olarak Güncelleme
Oturum açtığınızda veya bir terminal oturumu açtığınızda geçmiş listesi geçmiş dosyasından okunur. Bash'te varsayılan geçmiş dosyası .bash_history
.
Geçerli terminal penceresi oturumunuzda yaptığınız değişiklikler geçmiş dosyasına yalnızca terminal penceresini kapattığınızda veya oturumu kapattığınızda yazılır.
İlk terminal penceresine yazdığınız komutlar dahil olmak üzere tam geçmiş listesine erişmek için başka bir terminal penceresi açmak istediğinizi varsayalım. -a
(tümü) seçeneği, ikincisini açmadan önce bunu ilk terminal penceresinde yapmanızı sağlar.
Kullanmak için aşağıdakileri yazın:
history -a
Komutlar sessizce geçmiş dosyasına yazılır.
Geçmiş listesindeki tüm değişiklikleri geçmiş dosyasına yazmak istiyorsanız (örneğin, bazı eski komutları sildiyseniz), -w
(write) seçeneği, şöyle:
history -w
Geçmiş Listesini Temizleme
Geçmiş listesinden tüm komutları silmek için, -c
(temizle) seçeneği aşağıdaki gibidir:
history -c
Ek olarak bu değişiklikleri geçmiş dosyasında zorlamak istiyorsanız, -w
seçeneği, şöyle:
history -w
Güvenlik ve Geçmiş Dosyası
Komut satırına hassas bilgiler (parolalar gibi) yazmanızı gerektiren herhangi bir uygulama kullanıyorsanız, bunun da geçmiş dosyasına kaydedileceğini unutmayın. Belirli bilgilerin kaydedilmesini istemiyorsanız, hemen geçmiş listesinden silmek için aşağıdaki komut yapısını kullanabilirsiniz:
special-app my-secret-password;history -d $(history 1)
history 5
Bu yapı, noktalı virgülle (;) ayrılmış iki komut içerir. Bunu parçalayalım:
- özel uygulama: Kullandığımız programın adı.
- benim gizli-şifre: Komut satırındaki uygulama için sağlamamız gereken gizli şifre. Bu birinci komutun sonu.
-
tarih -d: İkinci komutta,
-d
(sil) seçeneğihistory
. Silmek istediğimiz, komutun bir sonraki bölümünde. -
$ (tarih 1): Bu bir komut ikamesi kullanır. Komutun
$()
bir alt kabukta yürütülür. Bu yürütmenin sonucu, orijinal komutta metin olarak gönderilir.history 1
komutu önceki komutu döndürür. Yani, ikinci komutu tarih -d “burada son komut” olarak düşünebilirsiniz.
Kullanabilirsiniz history 5
parolayı içeren komutun geçmiş listesinden kaldırıldığından emin olmak için komut.
Yine de bunu yapmanın daha basit bir yolu var. Bash varsayılan olarak boşlukla başlayan satırları yok saydığından, satırın başına aşağıdaki gibi bir boşluk eklemeniz yeterlidir:
special-app another-password
history 5
Parola içeren komut geçmiş listesine eklenmez. Bu hile çalışmasının nedeni, .bashrc
dosya.
.Bashrc Dosyası
.bashrc
her oturum açışınızda veya bir terminal penceresi açtığınızda dosya yürütülür. Ayrıca, history
Komut. Bu dosyayı şununla düzenleyelim: gedit
.
Aşağıdakileri yazın:
gedit .bashrc
Dosyanın üst kısmına yakın iki giriş görürsünüz:
-
HISTSIZE
: Geçmiş listesinin içerebileceği maksimum giriş sayısı. -
HISTFILESIZE
: Bir geçmiş dosyasının içerebileceği satır sayısı sınırı.
Bu iki değer aşağıdaki şekillerde etkileşime girer:
- Giriş yaptığınızda veya bir terminal penceresi oturumu başlattığınızda, geçmiş listesi
.bash_history
dosya. - Bir terminal penceresini kapattığınızda, ayarlanan maksimum komut sayısı
HISTSIZE
kaydedildi.bash_history
dosya. - Eğer
histappend
kabuk seçeneği etkinse, komutlara.bash_history
. Eğerhistappend
ayarlanmadı,.bash_history
üzerine yazılır. - Komutları geçmiş listesinden kaydettikten sonra
.bash_history
, geçmiş dosyasında en fazlaHISTFILESIZE
çizgiler.
Ayrıca dosyanın üst kısmına yakın bir yerde, HISTCONTROL
değer.
Bu değeri aşağıdakilerden herhangi birini yapacak şekilde ayarlayabilirsiniz:
-
ignorespaces:
Boşluk ile başlayan satırlar geçmiş listesine eklenmez. -
ignoredups:
Geçmiş dosyasına yinelenen komutlar eklenmez. -
ignoreboth:
Yukarıdakilerin her ikisini de etkinleştirir.
Ayrıca geçmiş listenize eklenmesini istemediğiniz belirli komutları da listeleyebilirsiniz. Bunları iki nokta üst üste (:) ile ayırın ve tırnak içine alın (“…”).
Bir satır eklemek için bu yapıyı takip edersiniz. .bashrc
dosyasını seçin ve yok sayılmasını istediğiniz komutları değiştirin:
export HISTIGNORE="ls:history"
Zaman Damgalarını Kullanma
Geçmiş listesine zaman damgaları eklemek istiyorsanız, HISTIMEFORMAT
ayarı. Bunu yapmak için, aşağıdaki gibi bir satır ekleyin. .bashrc
dosya:
export HISTTIMEFORMAT="%c "
Kapanış tırnak işaretlerinden önce boşluk olduğunu unutmayın. Bu, zaman damgasının komut listesindeki komutlara girmesini önler.
Geçmiş geçmişi komutunu çalıştırdığınızda, tarih ve zaman damgalarını görürsünüz. Zaman damgalarını eklemeden önce geçmiş listesinde bulunan komutların, zaman damgası alan ilk komutun tarih ve saatiyle zaman damgası ekleneceğini unutmayın. Aşağıda gösterilen bu örnekte, bu komut 118'dir.
Bu çok uzun soluklu bir zaman damgası. Ancak, başka simgeler de kullanabilirsiniz %c
düzeltmek için. Kullanabileceğiniz diğer tokenler:
-
%d
: Gün -
%m
: Ay -
%y
: Yıl -
%H
: Saat -
%M
: Dakika -
%S
: Saniye -
%F
: Tam tarih (yıl-ay-tarih biçimi) -
%T
: Zaman (saat: dakika: saniye biçimi) -
%c
: Tam tarih ve zaman damgası (gün-tarih-ay-yıl ve saat: dakika: saniye biçimleri)
Şimdi birkaç farklı jeton deneyelim ve kullanalım:
export HISTTIMEFORMAT="%d n%m %T "
Çıktı gün, ay ve saati kullanır.
Ancak günü ve ayı kaldırırsak, zamanı gösterecektir.
Yaptığınız değişiklikler HISTIMEFORMAT
kendilerini tüm geçmiş listesine uygulayabilirler. Bu, her komutun süresi Unix döneminden saniye olarak kaydedildiğinden mümkündür. HISTTIMEFORMAT
yönergesi basitçe, bu saniye sayısını insan tarafından okunabilir bir stile dönüştürmek için kullanılan formatı belirtir, örneğin:
export HISTTIMEFORMAT="%T "
Çıktımız artık daha yönetilebilir.
Ayrıca history
denetim komutu. Bazen, geçmişte kullandığınız komutları gözden geçirmek, soruna neyin yol açmış olabileceğini belirlemenize yardımcı olabilir.
Tıpkı hayatta olabildiğince, Linux'ta, history
iyi zamanları yeniden yaşamaya ve kötüden öğrenmeye emreder.
İLİŞKİLİ: Bilmeniz Gereken 37 Önemli Linux Komutu