Yazılımcılar İçin Hayat Kurtaran Linux Komutları ve Püf Noktaları

Geliştiricilere yönelik bu güçlü Linux komutlarıyla üretkenliğinizi artırın!

Komut satırı arayüzü çoğu teknoloji profesyoneli, özellikle de geliştiriciler ve sistem yöneticileri için ekmek ve tereyağıdır. İster komut dosyaları yazıyor olun, ister sunucuları yapılandırıyor olun, ister görevleri otomatikleştiriyor olun, Linux komutlarını nasıl kullanacağınızı bilmek size saatlerce çalışmaktan tasarruf ettirebilir.

Bu makalede, eğer bir geliştiriciyseniz hayatınızı kolaylaştırabilecek beş komut satırı hilesini inceleyeceğiz. Bunlar sadece “bilinmesi güzel” kısayollar değil, aynı zamanda size zaman kazandıracak ve terminalle etkileşimlerinizi çok daha verimli hale getirecek, oyunun kurallarını değiştiren şeylerdir.

mkdir

Her dizini tek tek oluşturmak yerine mkdir ve {} parantezlerini kullanarak tüm bunları tek bir komutta birleştirebilirsiniz. Bu, dizin kombinasyonlarını verimli bir şekilde oluşturmanıza olanak tanır.

mkdirmkdir -p {dev,test,prod}/{backend,frontend}

-p bayrağı, mkdir’e gerektiği gibi üst dizinler oluşturmasını söyler (yani, üst dizinler henüz mevcut değilse hata atmaz).

mkdir

İlk set {dev,test,prod} farklı ortamlar için dizinler oluşturur.

{dev,test,prod}

İkinci set {backend,frontend} farklı hizmetler için dizinler oluşturur.

{backend,frontend}

Bu yöntem, özellikle karmaşık klasör yapılarına sahip büyük projeler kurduğunuzda önemli ölçüde zaman tasarrufu sağlar ve insan hatasını azaltır. Her kombinasyonu manuel olarak yazmak yerine, bunları kısa ve öz bir komutla tanımlayabilirsiniz.

Tekrar tekrar cd .. Kullanmak Yerine cd – ile Geri Dönün.

cd .. cd –

Bir programcı olarak kendinizi derinlemesine iç içe geçmiş dizinler içinde çalışırken bulmanız yaygındır. Örneğin projenizin kök dizininden kod, yapılandırma dosyaları veya günlükler için alt dizinlere geçiyor olabilirsiniz. Ancak başladığınız yere dönme zamanı geldiğinde, manuel olarak birden çok kez cd .. yazarak geri dönmek sinir bozucu ve hataya açık hale gelebilir.

cd ..

/home/user/projects/webapp/src/frontend/components

/home/user/projects/webapp/src/frontend/components

Proje köküne dönmek için normalde aşağıdaki gibi birkaç kez cd .. yazmanız gerekebilir:

cd ..

cd ..
cd ..
cd ..
cd ..

cd ..
cd ..
cd ..
cd ..

Bunlar /home/user/projects/’a geri dönmek için gereken dört ayrı komuttur. Bu sadece sıkıcı değil, aynı zamanda nereden geldiğinizi unutmak da kolaydır.

/home/user/projects/

İşte daha basit, daha hızlı bir alternatif: İç içe geçmiş bir yapıda ne kadar derine inmiş olursanız olun, anında önceki dizininize dönmek için cd – komutunu kullanın.

cd -cd –

cd – komutu önceki dizini bellekte saklar, böylece onu kullandığınızda mevcut dizininizi son dizinle değiştirir. Bu, özellikle çalışan bir dizin ile derinlemesine iç içe geçmiş bir dizin arasında geçiş yaptığınızda, iki dizin arasında ileri geri gezinmenin son derece etkili bir yoludur.

cd –

Bu yöntem özellikle hata ayıklarken veya bir projenin birden fazla bölümünde çalışırken kullanışlıdır. Projenin kökü ile derin bir alt dizini arasında sık sık geçiş yapmanız gerekiyorsa, cd – sizi uzun yollar yazmaktan veya adım adım yukarı gitmekten kurtarır.

cd – touch

İster test dosyaları, ister yer tutucular veya günlükler oluşturuyor olun, birden fazla dosya oluşturmak geliştiricilerin ortak bir görevidir. Normalde dosyaları birer birer oluşturabilseniz de, çok sayıda dosya için bunu manuel olarak yapmak külfetli hale gelir. Neyse ki Linux, touch ve parantez {} içindeki bir dizi sayıyı kullanarak tek bir komutla birden fazla dosya oluşturmanın bir yolunu sunuyor.

touch

test1.txt , test2.txt gibi bir dizi test senaryosu için test100.txt’ye kadar 100 numaralı dosya oluşturmanız gerektiğini düşünün. Bunu tek tek touch komutlarıyla manuel olarak yapmak şuna benzer:

test1.txt test2.txt test100.txt touch

touch test1.txt
touch test2.txt
touch test3.txt

touch test100.txt

touch test1.txt
touch test2.txt
touch test3.txt

touch test100.txt

Tek seferde hızlı bir şekilde birden fazla dosya oluşturmak için touch komutunu parantez {} içine bir dizi sayı koyarak kullanabilirsiniz

touchtouch test{1..100}.txttouch test{1..10}.txt

Dizininizde aşağıdaki dosyaları oluşturur:

test1.txt
test2.txt
test3.txt

test10.txt

test1.txt
test2.txt
test3.txt

test10.txt

history | awk ‘{print $2}’ | sort | uniq -c | sort -nr | head -n 10

history | awk ‘{print $2}’ | sort | uniq -c | sort -nr | head -n 10

Bu komut zincirinin detaylı açıklaması:

  • history: Komut geçmişini listeler
  • awk ‘{print $2}’: Her satırdan komutu ayıklar
  • sort: Alfabetik sıralama yapar
  • uniq -c: Tekrar sayısını sayar
  • sort -nr: Sayıya göre ters sıralama yapar
  • head -n 10: İlk 10 sonucu gösterir
  • history: Komut geçmişini listeler

history

  • awk ‘{print $2}’: Her satırdan komutu ayıklar

awk ‘{print $2}’

  • sort: Alfabetik sıralama yapar

sort

  • uniq -c: Tekrar sayısını sayar

uniq -c

  • sort -nr: Sayıya göre ters sıralama yapar

sort -nr

  • head -n 10: İlk 10 sonucu gösterir

head -n 10echo “alias gl=’git log – oneline'” >> ~/.bashrc
echo “alias gst=’git status -sb'” >> ~/.bashrc
source ~/.bashrc

Kod Tarama ve Arama

# JavaScript dosyalarında console.log aramak
find . -type f -name “*.js” -not -path “./node_modules/*” | xargs grep “console.log”
# Belirli bir string’i birden fazla dosya tipinde aramak
find . -type f \( -name “*.js” -o -name “*.ts” \) | xargs grep “TODO”

Son değiştirilen dosyaları listeleme

ls -lrt

Belirli bir süre içinde değiştirilmiş dosyaları bulma

find . -type f -mtime -7 # Son 7 günde değiştirilmiş dosyalar

Süreç İzleme ve Yönetimi

Belirli bir process’i bulma ve yönetme

ps aux | grep node
pkill -f “node”ps aux – sort=-%cpu | head -n 10# Anlık CPU ve Bellek kullanımı
top -o %CPU
htop

# Disk I/O izleme
iostat -x 1# Son 100 satır log takibi
tail -f -n 100 /var/log/application.log

# Belirli bir hatayı içeren logları bulma
grep -r “ERROR” /var/log/* | cut -d: -f2- | sort | uniq -c# 7 günden eski log dosyalarını bulma ve silme
find /var/log -name “*.log” -type f -mtime +7 -exec rm {} \;

Port ve Bağlantı İzleme

# Açık portları listeleme
netstat -tuln

# Bağlantıları izleme
ss -s

HTTP İsteklerini Test Etme

# Basit HTTP isteği
curl -I https://api.example.com

# Detaylı HTTP isteği
curl -v -X POST https://api.example.com/data -d ‘{“key”:”value”}’
 

CTRL+R ile geçmişte arama yapma

# CTRL+R ile geçmişte arama yapma
# CTRL+R tuşuna tekrar basarak sonraki sonuca geçme
 

Çoklu Terminal Yönetimi

# Screen kullanımı
screen -S session_name  # Yeni oturum
screen -r              # Oturuma geri dönme
CTRL+A+D               # Oturumdan ayrılma

Disk Kullanımı Analizi

# Dizin boyutlarını listeleme
du -sh *

# En büyük 10 dizini bulma
du -a / | sort -n -r | head -n 10# Dosya sistemi durumu
df -h

# İnode kullanımı
df -i# Sistem güvenlik loglarını kontrol etme
sudo grep “authentication failure” /var/log/auth.log
sudo tail -f /var/log/audit/audit.log

# Açık portları ve servisleri tarama
nmap localhost
netstat -tulpn# Güvenli izin ayarları
chmod 644 $(find . -type f)
chmod 755 $(find . -type d)

# SUID/SGID dosyalarını bulma
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;# Veritabanı yedekleme
mysqldump -u username -p database_name > backup.sql

# Yedek geri yükleme
mysql -u username -p database_name < backup.sql

# Büyük tablolar ve boyutları
SELECT table_name, table_rows, data_length/1024/1024 ‘Data MB’
FROM information_schema.tables
ORDER BY data_length DESC;

PostgreSQL Komutları

# Veritabanı yedekleme
pg_dump dbname > backup.sql

# Veritabanı geri yükleme
psql dbname < backup.sql

# Aktif bağlantıları listeleme
SELECT * FROM pg_stat_activity;

Docker Komutları

# Container yönetimi
docker ps -a
docker stats
docker system prune -a

# Image yönetimi
docker images
docker rmi $(docker images -f “dangling=true” -q)

Kubernetes (K8s) Komutları

# Pod yönetimi
kubectl get pods -A
kubectl describe pod pod-name
kubectl logs pod-name -f

# Servis kontrolü
kubectl get services
kubectl get deployments

Git İş Akışı

Git Hooks

Sed Kullanımı

# Metin değiştirme
sed -i ‘s/eski-text/yeni-text/g’ dosya.txt

# Belirli satırları silme
sed -i ‘10,20d’ dosya.txt

# Satır ekleme
sed -i ‘5i\Yeni Satır’ dosya.txt

Awk Kullanımı

# Kolon işlemleri
awk ‘{print $1,$4}’ dosya.txt

# Toplam hesaplama
awk ‘{sum += $3} END {print sum}’ data.txt

# Koşullu filtreleme
awk ‘$3 > 1000 {print $0}’ data.txt

Performans Analizi

# CPU profili
perf top
perf record -F 99 -p `pgrep -n process-name`

# Sistem çağrıları
strace -p process_id
ltrace ./program

Fonksiyon Örnekleri

# Hata yakalama
function error_handle() {
    echo “Hata: $1” >&2
    exit 1
}
trap ‘error_handle “Beklenmeyen hata!”‘ ERR

# Paralel işlem
function parallel_process() {
    for i in {1..10}; do
        process_item $i &
    done
    wait
}

Debug Teknikleri

# Script debug modu
set -x  # Debug başlat
set +x  # Debug bitir

# Detaylı hata ayıklama
bash -x script.sh

Güvenlik Duvarı Yönetimi

# UFW (Uncomplicated Firewall)
ufw status verbose
ufw allow 22/tcp
ufw deny from 192.168.1.0/24

# iptables
iptables -L -n -v
iptables-save > rules.backup

Ağ Trafiği Analizi

# tcpdump kullanımı
tcpdump -i eth0 port 80
tcpdump -w capture.pcap

# Wireshark CLI
tshark -i eth0 -f “port 443”

Online Eğitimler

  • Linux Academy
  • Udemy Kursları
  • Linux Foundation Eğitimleri
  • Linux Academy
  • Udemy Kursları
  • Linux Foundation Eğitimleri

Dokümantasyonlar

  • Man Pages
  • Kernel Dokümantasyonu
  • Distro-spesifik Rehberler
  • Man Pages
  • Kernel Dokümantasyonu
  • Distro-spesifik Rehberler

Topluluk Kaynakları

  • Stack Overflow
  • Unix & Linux Stack Exchange
  • GitHub Repositories
  • Stack Overflow
  • Unix & Linux Stack Exchange
  • GitHub Repositories

Bu genişletilmiş rehber, Linux sistem yönetimi ve yazılım geliştirme süreçlerinde karşılaşılabilecek çeşitli senaryolar için kapsamlı bir kaynak sunmaktadır. Komutların ve tekniklerin düzenli pratik edilmesi, sistem yönetimi ve geliştirme süreçlerinde verimliliği artıracaktır.

https://www.linkedin.com/in/mustafa-%C3%B6nder-ak%C3%B6z-23174592/

https://github.com/onder7