Bir Linux sisteminin terminaline yazılan her komut, genellikle bir süre boyunca geçmiş arabelleğinde saklanır. Geçmiş komutlardan oluşan bu arabellek, yöneticinin ihtiyaçlarına göre özelleştirilebilir; bu, kaydedilen komutların sayısını değiştirmemize, mevcut geçmişi temizlememize veya diğer ayarları değiştirmemize olanak tanır.
Komut geçmişinin kullanılabileceği birkaç yararlı yol da vardır. Bu tür yöntemler, yalnızca birkaç tuş vuruşuyla geçmiş komutları geri çağırma veya nasıl çalıştırılacağını unutmuş olabileceğiniz bir komutu geçmiş arabelleğinde arama yeteneğini içerir. Bu eğitimde, bir Linux sisteminin komut geçmişini ayrıntılı olarak ele alacağız ve üretkenliği artırmak için arabelleği özelleştirmenin ve kullanmanın farklı yollarına bakacağız.
Komuta Geçmişine Giriş
Kabukta bir komut yürütüldüğünde, bunların takibi sistemin geçmiş arabelleğinde tutulur. Bunu, ziyaret ettiğimiz web sitelerini takip eden ve gelecekte bu sitelere tekrar erişmemizi kolaylaştıran bir web tarayıcısı gibi düşünmemize yardımcı olur.
Geçmiş arabelleği genellikle her kullanıcının ana dizinindeki .bash_history dosyasının içinde tutulur. Bu dosya, kullanıcının terminalde yürüttüğü tüm yeni komutların belirli bir kısmını içerir. İçeriğini görüntülemek için cat’i kullanarak kendiniz görebilirsiniz:
$ cat ~/.bash_history
History komutu, dosyanın içeriğini görmenin başka bir yoludur.
$ history
Yukarıdaki ekran görüntüsünde görüldüğü gibi, geçmişin çıktısı yakın zamanda yürütülen tüm komutları yürütüldükleri sıraya göre numaralı bir liste olarak gösterir.
Komut Geçmişi İşlevleri
Kolaylık sağlamak ve iş akışımızı geliştirmek için komut geçmişi arabelleğinden nasıl yararlanabileceğimize dair birkaç örneğe bakalım.
- Belirli sayıda son komutu görmek için geçmiş komutundan sonra bir sayı belirtin. Örneğin, en son yürütülen beş komutu görmek istiyorsanız:
$ history 5
Bu, ara bellekte çok uzakta olmaması gereken yeni bir komutu geri çağırmanız gerektiğinde faydalıdır. Bir sayı belirtmeden çok fazla sonuç döndürülür ve çıktı daha az yararlı olur.
- Geçmiş listesinden tekrar yürütmeniz gereken bir komut gördüğünüzde, bir ünlem işareti girebilirsiniz! ardından komutun karşılık gelen numarası gelir. Örneğin, geçmiş arabelleğini görüntülerseniz ve sudo apt update’in listedeki 11 numaralı komut olduğunu fark ederseniz ve bu komutu yeniden çalıştırmak istiyorsanız, aşağıdaki sözdizimini kullanırız:
$ !11
Bu bizi çok fazla tuş vuruşundan kurtarır ve son komutu hızlı bir şekilde geri çağırabiliriz.
- Terminaldeyken, yakın zamanda yürütülen bir komutu aramak için Ctrl + R tuş kombinasyonunu kullanın. Komutun hatırlayabileceğiniz bir bölümünü yazmaya başlamanız yeterlidir; geçmiş arabelleği otomatik olarak en yakın eşleşen sonucu arar. Örneğin burada daha önce çalıştırılan sudo apt update komutunu bulmak için update araması yaptık:
$ [Ctrl + R] update
- Belki bir komutu geri çağırmanın daha hızlı bir yolu da ünlem işareti kullanmak ve komutun ilk bölümünü belirtmektir. Örneğin, yeni bir komutun sudo ile başladığını biliyorsak, onu anında geri çağırmak için terminale !sudo yazabiliriz.
$ !sudo
Aşağıdaki ekran görüntüsü, sudo apt update’i yalnızca !sudo yazarak nasıl yürütebildiğimizi gösteriyor, çünkü bu, o anahtar sözcükle başlayan en son yürütülen komuttur.
- Bang komutları bir komutu çok hızlı bir şekilde yeniden yürütmek için kullanılabilir. Bunlardan birkaçına bakalım. İlk olarak, son komutu tekrar yürütmek için çift ünlem işareti kullanırız:
$ !!
Önceki komutun son işlenenini almak için !$ kullanabiliriz. Sudo apt update örneğimizde komutu şu şekilde belirtebiliriz:
$ sudo apt !$
Bu, en son yürütülen komutun son işleneni olduğundan güncellemeyi dolduracaktır.
- Peki ya bir komut yazıyorsak ve onun kaydedilmesini istemiyorsak? Bu gizlilik önlemi zaten değerlendirildi ve geçmiş arabelleğinin komutlarımızdan birini almasını engellemenin kolay bir yolu var. Yürütmekte olduğunuz komutun önüne bir boşluk koymanız yeterlidir; kaydedilmeyecektir:
$ df -h
df -h komutumuzun öncesindeki boşluğa dikkat edin. Bu, geçmiş arabelleğinde görünmesini engeller.
Geçmiş arabelleğinin tamamını temizlemek istemeniz durumunda, geçmiş komutuyla birlikte -c seçeneği kullanılabilir.
$ history -c
Alternatif olarak veya sadece ekstra önlem almak için ~/.bash_history dosyasının tüm içeriğini manuel olarak temizleyebilirsiniz:
$ echo "" > ~/.bash_history
- Komut geçmişini dışa aktarmanız gerekirse, geçmiş komutunun çıktısını bir dosyaya yönlendirmeniz yeterlidir:
$ history > command_history.txt
Veya yalnızca belirli sayıda yeni komutu almak için:
$ history 10 > last_10_commands.txt
Geçmiş Arabelleğinin Boyutunu Kontrol Etme
Linux’ta geçmiş arabelleğinin boyutunu kontrol eden iki ortam değişkeni vardır. Bunlar HISTSIZE ve HISTFILESIZE’dir.
$ echo $HISTSIZE 1000 $ echo $HISTFILESIZE 2000
İlk değişken HISTSIZE, kaç tane yeni komutun hatırlanması gerektiğini belirtir. Bizim durumumuzda 1000’dir. İkinci değişken, geçmiş arabellek dosyasının (.bash_history) ne kadar büyük olabileceğini belirtir – bizim durumumuzda – 2000.
Bu ayarları değiştirmenin ve gelecek oturumlarda kalıcı olmasını sağlamanın en kolay yolu kullanıcının .bashrc dosyasını düzenlemektir.
$ nano ~/.bashrc
Bu dosyanın altına aşağıdaki iki satırı yapıştırın:
export HISTSIZE=1000 export HISTFILESIZE=2000
Elbette değerleri istediğiniz ayarlara değiştirin. Daha sonra dosyadaki değişiklikleri kaydedin ve çıkın. Değişikliklerin geçerli oturumda etkili olmasını sağlamak için şunu yürütün:
$ source ~/.bashrc
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.