Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Terminal, Shell, Console ve Prompt: Kavramları Ayırmak ve İşletim Sistemine Göre Doğru Kurulum
Terminal emulator pencereyi çizer, shell yazdığın satırı yorumlar, aradaki PTY tuşları ve sinyalleri taşır; ikisi ayrı program olduğu için ayrı ayrı kurulur ve güncellenir. bash, zsh ve PowerShell'in hangi ayar dosyasını ne zaman okuduğunu gerçek bir denemeyle gösteriyor, Windows'ta PowerShell 7.6 + Windows Terminal + WSL 2, macOS'ta zsh için karar tablosu ve repo'nun nerede durması gerektiğini anlatıyoruz.
Klavyeden Hızlı Olmak: Satır Düzenleme Kısayolları, History Arama, Tab Completion ve CLI Completion'ları
Ok tuşları yerine Ctrl-A/E/W/K/Y, Alt-. ve Ctrl-R ile çalışmak terminaldeki hızın büyük kısmını getirir; bash, zsh ve PSReadLine aynı kısayol ailesini paylaşır. History'nin secret'ları nasıl sakladığını üç shell'de gerçek denemeyle gösteriyor, doğru history ayarlarını, .NET 10'un dotnet completions script'ini, ng completion'ı ve zsh'de karşılaştığımız iki completion tuzağının çözümünü anlatıyoruz.
zsh'ı Yapılandırmak: .zshrc, Alias, Function, Plugin'ler, Prompt ve Başlangıç Hızı
İyi bir .zshrc sabit bir sırayla yazılır: history, completion, alias ve function, plugin'ler ve en sonda prompt; yavaşlığı çoğu zaman framework değil her açılışta çalışan dış komutlar getirir. Alias, function ve script'in ne zaman seçileceğini, zsh-autosuggestions ve zsh-syntax-highlighting'i elle kurmayı, git branch'ini ve .NET sürümünü gösteren Starship prompt'unu ve açılışı 206 ms'den 21 ms'ye indiren completion cache'ini gerçek ölçümlerle anlatıyoruz.
PowerShell 7 ile Geliştirici Terminali: Object Pipeline, $PROFILE, PSReadLine ve Bash Kullanıcısı için Karşılıklar
PowerShell'de pipe'tan metin değil .NET object'leri geçer; bu yüzden Bookstore API'sinin JSON'u Invoke-RestMethod ile doğrudan filtrelenip gruplanabilir (fiyatlar double gelir, para için decimal'e çevir). $PROFILE ve module'ler, execution policy'nin gerçekte neyi koruduğu, winget, bash karşılık tablosu, curl.exe, 7.6 LTS'in getirdikleri ve 7.4'ün 10 Kasım 2026'da biten desteği, encoding ve CRLF tuzaklarını gerçek çıktılarla anlatıyoruz.
Modern CLI Araçları: fzf, ripgrep, fd, bat, eza, zoxide ve jq ile Günlük İş Akışı
ripgrep ve fd .gitignore'a uyduğu için Bookstore repo'sunda grep'ten daha az ama doğru sonucu yaklaşık 90 kat hızlı buluyor; fzf ise her listenin önüne konabilen bir seçici. Araçları brew, winget ve apt ile kurmayı (Ubuntu'daki fdfind/batcat adları ve eski fzf), Ctrl-R/Ctrl-T entegrasyonunu, branch ve test seçicilerini, jq ile API, dotnet package list ve npm ls çıktılarını işlemeyi ve bu araçlara script'te neden bağımlı olmaman gerektiğini anlatıyoruz.
tmux ile Terminal Multiplexing: Pane'ler, Session'lar ve SSH Kopmasına Dayanmak
tmux'ta shell'ler arka plandaki tmux server'ın içinde çalışır, terminal yalnızca bir client'tır; bu yüzden SSH koptuğunda tmux dışındaki iş ölür, tmux içindeki devam eder (gerçek denemeyle). Session, window ve pane kavramlarını, prefix kısayollarını, dotnet watch ve ng serve'ü tek komutla açan bir geliştirme script'ini, copy mode'u, tmux 3.4 ile 3.8 arasındaki varsayılan farklarını dikkate alan minimal bir .tmux.conf'u ve iç içe tmux ile TERM tuzaklarını anlatıyoruz.