Merhaba arkadaşlar, bugün sizlere terminaldeki en değerli yardımcılarımızdan biri olan `history` komutunu nasıl daha verimli kullanabileceğimizi, geçmişi nasıl yönetip sık kullandığımız komutları kalıcı hale getirebileceğimizi anlatacağım. Bu yöntemler, özellikle uzun ve karmaşık komutları sürekli tekrar yazmaktan kurtaracak, hata yapma oranınızı düşürecek ve iş akışınızı inanılmaz hızlandıracak.
History Komutunun Temel Kullanımı
Terminalde `history` yazdığınızda, oturumunuz boyunca çalıştırdığınız komutların numaralandırılmış listesini görürsünüz. Bu liste varsayılan olarak geçici bellekte tutulur ve oturum kapatıldığında kaybolur. Ancak, bu listeyi yönetmek için birkaç pratik numara var.
Örneğin, son 10 komutu görmek için:
Geçmişteki belirli bir komutu numarasıyla tekrar çalıştırmak için `!` kullanılır. Diyelim ki `history` listesinde 455 numaralı komut `sudo systemctl restart nginx` olsun:
En son yazdığınız komutu tekrar çalıştırmak için ise:
History'de Arama Yapma ve Akıllı Kullanım
Uzun bir geçmiş listesinde komut aramak için `Ctrl+R` tuş kombinasyonunu kullanabilirsiniz. Terminalinize `(reverse-i-search):` yazısı geldiğinde, aradığınız komutun bir kısmını yazmaya başlayın. Aramayı ilerletmek için tekrar `Ctrl+R`'a basın.
Bir diğer yöntem de `grep` ile pipe etmektir. Örneğin, geçmişinizdeki tüm `ssh` komutlarını listelemek için:
Bu, özellikle belirli bir sunucuya bağlanmak için kullandığınız uzun IP ve anahtar yolunu hatırlamakta çok işe yarar.
History Ayarlarını Kalıcı Olarak Yapılandırma
Şimdi gelelim asıl önemli kısma. Varsayılan ayarlarda history, oturumlar arasında kaydedilir ama bazı sınırlamaları vardır. Benim sunucularda genelde yaptığım ilk iş, bu ayarları kalıcı olarak düzenlemektir. Bunun için kullanıcı ~/.bashrc dosyasını düzenliyoruz.
Öncelikle dosyayı bir editörle açalım:
Dosyanın sonuna aşağıdaki satırları ekleyin. Bu ayarlar, history boyutunu artırır, tarih/saat bilgisi ekler ve komutların çakışmadan kaydedilmesini sağlar.
Değişiklikleri kaydedip çıktıktan sonra, ayarların aktif olması için şu komutu çalıştırın:
Sık Kullanılan Komutları Kalıcı Hale Getirme (Alias)
Uzun, karmaşık veya sık kullandığınız komutları `alias` (takma ad) ile kısaltmak, zaman kazandıran en büyük numaralardan biridir. Alias'ları da ~/.bashrc veya daha iyisi ~/.bash_aliases dosyasında tanımlarız.
Önce alias dosyasını oluşturalım veya açalım:
İçine kendi kullanımınıza göre alias'lar ekleyin. İşte benim sunucularımda sık kullandığım birkaç örnek:
Bu dosyayı kaydettikten sonra, ~/.bashrc dosyanızın içinde alias dosyasını çağıran bir satır olduğundan emin olun. Genellikle şöyle bir satır vardır:
Son olarak değişiklikleri aktif edelim:
Artık terminalde sadece `update` yazarak sistem güncellemesi yapabilir, `nginxreload` yazarak Nginx'i yeniden yüklemeden konfigürasyonu güncelleyebilirsiniz.
Bonus İpucu: History'yi Farklı Sunucular Arasında Senkronize Etme
Eğer birden fazla sunucu yönetiyorsanız ve komut geçmişinizin hepsinde aynı olmasını istiyorsanız, `history` dosyasını bir bulut depolama veya `rsync` ile senkronize edebilirsiniz. Ancak şu ayara çok dikkat etmelisiniz, bu güvenlik riski oluşturabilir çünkü geçmişinizde hassas komutlar (şifreler, anahtarlar) olabilir. Bu yüzden `HISTIGNORE` ayarını iyi yapılandırıp, hassas komutları kaydetmemek en iyisidir.
Sonuç olarak, bu basit ayarlar ve alias'lar ile terminalde geçirdiğiniz her dakikadan maksimum verimi alabilir, tekrarlayan işlerden kurtulabilirsiniz. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Mutlaka paylaşın. Yoksa "alias" olmadan nasıl yaşıyorsunuz?
Sorusu olan aşağıya yazsın, elimden geldiğince yardımcı olmaya çalışırım.
Terminalde `history` yazdığınızda, oturumunuz boyunca çalıştırdığınız komutların numaralandırılmış listesini görürsünüz. Bu liste varsayılan olarak geçici bellekte tutulur ve oturum kapatıldığında kaybolur. Ancak, bu listeyi yönetmek için birkaç pratik numara var.
Örneğin, son 10 komutu görmek için:
Bash:
history 10
Geçmişteki belirli bir komutu numarasıyla tekrar çalıştırmak için `!` kullanılır. Diyelim ki `history` listesinde 455 numaralı komut `sudo systemctl restart nginx` olsun:
Bash:
!455
En son yazdığınız komutu tekrar çalıştırmak için ise:
Bash:
!!
Uzun bir geçmiş listesinde komut aramak için `Ctrl+R` tuş kombinasyonunu kullanabilirsiniz. Terminalinize `(reverse-i-search):` yazısı geldiğinde, aradığınız komutun bir kısmını yazmaya başlayın. Aramayı ilerletmek için tekrar `Ctrl+R`'a basın.
Bir diğer yöntem de `grep` ile pipe etmektir. Örneğin, geçmişinizdeki tüm `ssh` komutlarını listelemek için:
Bash:
history | grep ssh
Bu, özellikle belirli bir sunucuya bağlanmak için kullandığınız uzun IP ve anahtar yolunu hatırlamakta çok işe yarar.
Şimdi gelelim asıl önemli kısma. Varsayılan ayarlarda history, oturumlar arasında kaydedilir ama bazı sınırlamaları vardır. Benim sunucularda genelde yaptığım ilk iş, bu ayarları kalıcı olarak düzenlemektir. Bunun için kullanıcı ~/.bashrc dosyasını düzenliyoruz.
Öncelikle dosyayı bir editörle açalım:
Bash:
nano ~/.bashrc
Dosyanın sonuna aşağıdaki satırları ekleyin. Bu ayarlar, history boyutunu artırır, tarih/saat bilgisi ekler ve komutların çakışmadan kaydedilmesini sağlar.
Bash:
# HISTORY KONFİGÜRASYONU
# History boyutunu büyüt (komut sayısı)
HISTSIZE=5000
HISTFILESIZE=10000
# Aynı komutu arka arkaya kaydetme
HISTCONTROL=ignoredups
# Tüm oturumlardaki history'yi anında kaydet
shopt -s histappend
# History'ye komutun çalıştırıldığı zamanı da kaydet
HISTTIMEFORMAT="%d/%m/%y %T - "
# History'den kaydedilmesini istemediğiniz komutları belirle (boşlukla ayırın)
HISTIGNORE="ls:ll:history"
Değişiklikleri kaydedip çıktıktan sonra, ayarların aktif olması için şu komutu çalıştırın:
Bash:
source ~/.bashrc
Uzun, karmaşık veya sık kullandığınız komutları `alias` (takma ad) ile kısaltmak, zaman kazandıran en büyük numaralardan biridir. Alias'ları da ~/.bashrc veya daha iyisi ~/.bash_aliases dosyasında tanımlarız.
Önce alias dosyasını oluşturalım veya açalım:
Bash:
nano ~/.bash_aliases
İçine kendi kullanımınıza göre alias'lar ekleyin. İşte benim sunucularımda sık kullandığım birkaç örnek:
Bash:
# Sistem Durumu
alias meminfo='free -m -l -t'
alias cpuinfo='lscpu'
alias diskusage='df -h'
alias folderusage='du -sh | sort -hr'
# Güncelleme Komutları (Dağıtıma özel)
alias update='sudo apt update && sudo apt upgrade -y' # Debian/Ubuntu için
# alias update='sudo yum update -y' # RHEL/CentOS için
# Servis Yönetimi Kısaltmaları
alias nginxreload='sudo systemctl reload nginx'
alias nginxstatus='sudo systemctl status nginx'
# Güvenlik - Kayıt Takibi
alias fail2banlogs='sudo tail -f /var/log/fail2ban.log'
alias authlogs='sudo tail -f /var/log/auth.log'
# Klasör Gezinme
alias www='cd /var/www/html'
alias logs='cd /var/log'
Bu dosyayı kaydettikten sonra, ~/.bashrc dosyanızın içinde alias dosyasını çağıran bir satır olduğundan emin olun. Genellikle şöyle bir satır vardır:
Bash:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Son olarak değişiklikleri aktif edelim:
Bash:
source ~/.bashrc
Artık terminalde sadece `update` yazarak sistem güncellemesi yapabilir, `nginxreload` yazarak Nginx'i yeniden yüklemeden konfigürasyonu güncelleyebilirsiniz.
Eğer birden fazla sunucu yönetiyorsanız ve komut geçmişinizin hepsinde aynı olmasını istiyorsanız, `history` dosyasını bir bulut depolama veya `rsync` ile senkronize edebilirsiniz. Ancak şu ayara çok dikkat etmelisiniz, bu güvenlik riski oluşturabilir çünkü geçmişinizde hassas komutlar (şifreler, anahtarlar) olabilir. Bu yüzden `HISTIGNORE` ayarını iyi yapılandırıp, hassas komutları kaydetmemek en iyisidir.
Sonuç olarak, bu basit ayarlar ve alias'lar ile terminalde geçirdiğiniz her dakikadan maksimum verimi alabilir, tekrarlayan işlerden kurtulabilirsiniz. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Mutlaka paylaşın. Yoksa "alias" olmadan nasıl yaşıyorsunuz?