Bash Komutları

Berkcan Tezcaner
8 min readFeb 13, 2020

--

Sizi hızlandıracak, gui’nin hantallığıyla uğraşmadan işlemlerinizi daha pratikçe ve DE (desktop environment) bağımsız yapmanızı sağlayacak, olmassa olmaz bash komutlarını bu yazımda paylaşıyorum. Hiç bilmeyenlere, bilenlere hatırlatma maksatlı basit kodlardan ileri düzey kodlara içerecek şekilde yazı kendini güncelleyecektir. Öncelikle bu komutları nerede, nasıl kullanabileceğimize bakalım.

  1. Linux/macOS/Unix bazlı sistemlerde zaten halihazırda gömülü gelmekte.
  2. Windows’da ise şu seçeneklerimiz var
  • Windows Subsystem Linux (W10) —Features kısmından aktif ettikten sonra Windows Store’dan istenilen bir distro seçip yüklemek.
  • Cygwin ve MinGW gibi POSIX/UNIX ortamlar kurmak (WVista+) — (Git Bash kullanıyorsanız zaten kuruludur) (linux’a özel bazı komutlar çalışmayabilir)

(Bazı komutlar bazı distrolarda önyüklü gelirken bazılarında olmayabiliyor. Paket yöneticinizin reposuna gözatın.)

Dosya Sisteminde Gezinmek

pwd
pwd -L
pwd -P
  • pwd(Print Working Directory) — Olduğumuz dosya dizinini yazdırır. (-L: mantıksal dizini gösterir, bir sembolik linkin altında isek sembolik linkin altında olarak gösterir. -P: fiziksel dizini gösterir, sembolik linkin altında iseniz linkin bağlı olduğu asıl dizinin altında gösterir).
ls
ls *arama*
ls -a
ls -l
ls -F
ls -R
tree

tree -L n
  • ls —olduğumuz dizindeki dosyaları listeler. (-a: gizli dosyaları da dahil eder. -l: dosyalar hakkında bazı detayları da gösterir. dizinleri input olarak alabilir.-F: listelenenlerin formatını belirtir (/-> directory, *->executable,@->link…). -R: rekürsif olarak listeleme yapar, dizin içeriklerini de gösterir.)
  • ls *arama* — *__* içine yazılanları isminde barındıran dosyalar listelenir.
  • tree — Dosya ağacını görüntüler (-L n: ağacı n derinlikle limitler)
cd AltDizinler
cd /Herhangi/Bir/Dizin
cd ..
cd .
cd ~
cd ~username
cd -

Change Directory — Gitmek istediğimiz dizin

  • cd ‘AltDizin’ — ls sonucu çıkan sonuçlara yani alt dizinlere gitmek için.
  • cd ‘/Baska/Bir/Dizin’— dosya sistemimizde bulunan herhangi başka bir dizine gitmek için.
  • cd .. — bir üst dizine çıkmak için (birden fazla üst dizine çıkmak için cd ../.. şeklinde birleştirerek istenildiği kadar kullanılabilir.).
  • cd . — şu an bulunduğumuz konumu işaret eder. (cd yapmanın bir anlamı yoktur fakat farklı komutlarla kullanıldığında kullanışlıdır.)
  • cd ~ — aktif kullanıcının Home dizinine gitmek için.
  • cd ~username — belirtilen kullanıcının Home dizinine gitmek için.
  • cd - — bir önceki dizine geri gitmek için.

Veri Boyutu Yönetimi

df
du
du /Bir/Dizin
ncdu
  • df — dosya Sistemindeki disk ve partisyonların toplam, kullanımdaki, boş alanlarını, kullanım yüzdelerini ve mount pointlerini gösterir.
  • du — working directorydeki dizinlerin disk kullanımını gösterir. (dizin belirtilirse o dizin için aynı işlemi yapar)
  • ncdu — du’nun gelişmiş versiyonu. read-only bir window açacaktır.

Dosyalara Gözatmak ve Düzenlemek

head BirDosya
tail BirDosya
cat BirDosya
cat BirDosya BaşkaBirDosya
< BirDosya
uniq
BirDosya
sort BirDosya
more
BirDosya
less
BirDosya
diff BirDosya BaşkaBirDosya
diff --color BirDosya BaşkaBirDosya
file BirDosya
  • head ‘Dosyaİsmi’ — dosyanın baştan 10 satırını gösterir.
  • tail ‘Dosyaİsmi’ — dosyanın sondan 10 satırını gösterir.
    (Varsayılan olarak 10 satır gösterirler fakat head -n/tail -n şeklinde yazdığınız n sayısı kadar satır gösterecektir. Ayrıca head -n +a için a kadar sonrası satırdan itibaren n kadar satır yazdırır. tail -n -a ise sondan başlayıp a kadar öncesinden itibaren n adet satır yazdırır.)
    (ayrıca bir diğer kullanışlı parametre
    -c ‘dir head -c a/tail -c a şeklinde girdiğimiz komutta a değerine girilen değer kadar byte yazdıracaktır. örn: head -c 300 ilk 300 byte’ı yazdırır. yanına K, KB, G, GB gibi değerler alabilir.)
  • cat ‘Dosyaİsmi’ — dosyanın bütün içeriğini gösterir. birden fazla dosya ismi girerseniz ikisini birleştirip gösterir. pipelarla kullanıldığında müthiş bir işlevsellik kazanır. (-b: satır numaralarını gösterir.)
  • < ‘Dosyaİsmi’ — dosyayı yazdırmaya yarar, ekstra bir program çalıştırmadığından daha hafiftir.
  • uniq ‘Dosyaİsmi’ — birbirini tekrarlayan satırları tek olarak yazdırır fakat sadece ardışık tekrarları birleştirir.(-c: tekrar sayısını gösterir)(-d: tekrar sayısı 1 olan satırları göstermez) (-u: sadece tekrar sayısı 1 olan satırları gösterir) (bütün satırlardaki birbirinden farklı satırları göstermesi için sort’un çıktısını pipe aracılığı ile uniq’e göndermeliyiz.)
  • sort ‘Dosyaİsmi’ — varsayılan olarak, seçilen dosyayı (/dosyaları) veya başka bir komuttan pipe edilmiş çıktıyı a-z şeklinde sıralar (-r: sıralamayı tersten yapar, -R: sıraları rastgele karıştırır, -n: sayıları sıralayabilmesi icin gerekli komut, -o: çıktıyı belirtilen bir isimle bir dosyaya yarar fakat ‘>’ kullanarak da aynı şeyi yapabilirsiniz.)
  • more ‘Dosyaİsmi’ — dosyanın bütün içeriğini read-only bir pencere içerisinde gösterir. (vi)
  • less ‘Dosyaİsmi’ — more ile çok yakındır. büyük bir farkı dosyanın tamamını göstermek yerine sadece o an ekranda görünen kısmı gösterir, scroll ettikçe devamını gösterir. bu sayade daha performanslı çalışabilir.(terminal emülatörü yerine gerçek bir terminal üzerinde çalışıyor iseniz bir komut çıktısı üzerinde scroll gerçekleştiremeyebilirsiniz. komutu less’e pipelayarak scroll yeteneniğini kazandırabilirsiniz.)
    (Navigasyon — ⬇,
    :
    aşağı tek satır, PAGEDOWN,Spacebar: aşağı bir sayfa kadar, PAGEUP,B: yukarı bir sayfa kadar, ⬆: yukarı tek satır, Shift+G: çıktının sonu, 1G: çıktının başı, /arama: istenilen değeri arar N ile bulunanlar arasında ileri yönde gidebilirsiniz. ?arama: sondan başa arama gerçekleşir. Q: çıkış)
  • diff ‘BirDosya’ ‘BaşkaBirDosya’ — iki dosya arasındaki farkları gösterir. ( — color:renklendirilerek daha okunaklı hale getirir).
  • file ‘BirDosya’ — parametre girilen dosyanın tipini geri döndürür. (dosyanın uzantısına değil içeriğine bakarak karar verir. genel dosya tiplerinde doğru çalışırken kaynak kodu dosyalarında programlama dillerini pek iyi tanıyamayabiliyor.)
locate DizinveyaDosya
  • locate — diskte aradığınız dosyyı veya dizini bulmanızı sağlar. (arama öncesinde updatedb ile dosyaları indexleme işlemi yapılmalıdır)

Dosya/Dizin Yaratmak ve Silmek

touch Dosyaİsmi
mkdir Dizinİsmi
mkdir -p İc/İce/Dizinler
mkdir -p İc/İce/Dizinler{child1,child2}
rm
Dosyaİsmi
rm -r Dizinİsmi
rmdir Dizinİsmi
rmdir -p İc/İce/Dizinler
  • touch ‘Dosyaİsmi’— Belirtilen isimde boş bir dosya yaratacaktır. (Birden fazla parametre alabilir.)
  • mkdir ‘Dizinİsmi’ — Belirtilen isimde boş bir dizin yaratacaktır.( -p: belirtilen şekilde iç içe dizinler oluşturur. ({} içine virgül ile yazılan adlarla çoklu klasörler açar))
  • rm ‘Dosyaİsmi’ — Belirtilen dosyayı silecektir. (-i ile yes/no onayı eklenebilir. -r: rekürsif çalıştırarak dolu veya boş dizinleri silmek için kullanılabilir. -f: zorlayarak silinebilir, tehlikelidir(force)).
  • rmdir ‘Dosyaİsmi’ — Belirtilen boş dizini silecektir. (-p: iç içe bulunan boş dizinleri siler).

Metin İşleme

nano BirDosya
{} > BirDosya
{} >> BirDosya
# {}-> output veren bir komut
  • nano ‘Dosyaİsmi’ — dosyayı ‘nano’ isimli terminal editöründe açar. (Eğer tercih ettiğiniz başka bir editör ö:vim,emacs… varsa onlarla da açabilirsiniz. hatta dilerseniz gui editörler ile de açabilirsiniz ö: code,kate…).
  • ‘komut’/metin > ‘Dosyaİsmi’ — işaretin solunda kalan komutun outputunu sağdaki dosya içine yazar (dosya mevcut değilse dosyayı yaratır ve içeriğini yazar,mevcutsa overwrite yapar!). cat ile ekrana çıktı vermeyen komutlar için de kullanması sağlanabilir.
  • ‘komut’/metin >> ‘Dosyaİsmi’ — önceki komuttan farkı overwrite yerine dosyaya append yapmasıdır

Taşıma/Kopyalama/Symbolic Link İşlemleri

mv Dosyaİsmi /Dosyayı/Tasımak/İstedigimiz/Dizin
mv Dosyaİsmi Yeniİsmi
cp Dosyaİsmi KopyaDosyaİsmi
cp -R Dizin1 Dizin2
ln
HedefDosya OlusacakLink
ln -s HedefDosya OlusacakLink
  • mv ‘Dosyaİsmi’ /Dizin Dosyayı belirtilen dizine taşır.
  • mv ‘Dosyaİsmi’ ‘Yeniİsmi’ — Dosyanın adını değiştirir (rename).
  • cp ‘Dosyaİsmi’ ‘KopyaDosyaİsmi’ — Dosyanın belirtilen adda kopyasını oluşturur.
    (dizinler için de kullanılabilir. ikinci parametre directory girilerek aynı isimle kopyalama işlemi gerçekleştirilebilir. kopyalanacak dosya olarak çoklu parametreler girilebilir, sonuncu parametre kopyalanmak istenen directory olmalıdır. -R: rekürsif olarak kopyalama yapar, ikinci parametrede belirtilen dizin halihazırda varsa birinci parametrenin içeriğiyle ikinci dizin açılır, eğer var ise klasörün kendisi ikinci parametrenin içine kopyalanır.)
  • ln ‘HedefDosya’ ‘OlusacakLink’ — İkinci parametre ilk parametreyi referans göstererek hard link oluşturur (Dizinler için de kullanılabilir).
  • ln -s ‘HedefDosya’ ‘OlusacakLink’ — Soft link oluşturmak için.

Proses Yönetimi (Process Management)

ps
top
htop
kill
pid
  • ps — çalışan prosesleri terminale yazdıran komut. ek parametrelerle müthiş işlevsellik kazanır.
  • top — çalışan prosesleri önizlemek için hafif basit bir task manager
  • htop — tam işlevsel bir terminal task manager
  • kill — belirtilen process id’ye sahip işlemi sonlandırır

Yardım Almak

{} -h
{} -help
{} --h
{} --help
man
{}
# {} -> herhangi bir komut/tool

not: bütün komutlar desteklemeyebilir. bazı paketler “-h”yi başka bir işlem parametresi olarak kullanıyor olabilir.

  • -h / -help …— genelde komutun parametrelerini ve nasıl kullanılacağı hakkında bilgi verir. bazı paketlerde bu komutlardan biri veya birçoğu çalışabilir.
  • man — geliştiricinin hazırladığı dökümantasyon ve kullanım kılavuzu(manuel) incelemenizi sağlar. çeşitli parametrlerle dökümantasyonun derinliklerinde gezinti yapılabilir.

Paketlerin Versiyon Bilgisi

{} -v
{} -version
{} --v
{} --version
# {} -> herhangi bir komut/tool

not: bütün komutlar desteklemeyebilir. bazı paketler “-v”yi başka bir işlem parametresi olarak kullanıyor olabilir.

  • -v / -version … — paketin versiyon bilgisini verir.

Terminal Yönetimi

clear
history
exit
  • clear — terminal ekranını temizler. (kısayol: CTRL+L)
  • history — komut tarihçenizi terminale yazdırır. -n parametresi ile sayı belirtilebilir.
  • exit — çalışıyor olduğunuz terminal oturumunu sonlandırır.

Alias Kullanımı

alias YeniAlias='komut'
unalias YeniAlias
  • alias — belirtilen komut veya komut dizisini başka bir adla çalıştırabilmek için kısayol oluşturur.
  • unalias — daha önce tanımlanmış aliasın atamasanı kaldırmak için kullanılır.

(bu şekilde veya bir bash scriptinin içinde atanan aliaslar o bash oturumuna özgüdür. eğer kalıcı olarak kaydetmek istersek ~/.bashrc dosyasına eklenmelidir.)

Klavye Kısayolları

  • İşlem Yönetimi: CTRL+C: çalışan process’i kill etmek için kullanılır. (SIGINT sinyali gönderir. bu bir requesttir ve process bu signale karşılık olarak kendini sonlandırır.), CTRL+Z: çalışan processi suspend (uyutma) etmek için kullanılır. (SIGTSTP sinyali gönderir. eğer sonradan devam ettirilmek istenirse fg process_ismi komutuyla uyandırılabilir.), CTRL+D: Shell’i kapatır, exit komutunu çalıştırmakla aynı işi yapar.
  • Ekran Kontrolleri: CTRL+L: ekranı temizler(clear komutu ile aynı işi yapar), CTRL+S: çalışan processin ekrana çıktı vermesini durdurur. (komutu kill etmez, komut işini yapmaya devam edecektir.), CTRL+Q: ctrl+s ile durdurduğumuz output’u devam ettirmeye yarar.
  • İşaretçi Navigasyonu: CTRL+A/Home: satır başı, CTRL+E/End: satır sonu, ALT+B: bir kelime geri, CTRL+B: bir karakter geri, ALT+F: bir kelime ileri, CTRL+F: bir karakter ileri, CTRL+XX: satırın başına döner, bir daha çalıştırıldığında kısayolu ilk çalıştrdığınız yere geri gelirsiniz.
  • Silme İşlemleri: CTRL+D/Delete: imleçten sonraki karakteri siler, ALT+D: imleçten sonraki bütün karakterleri siler, CTRL+H/Backspace: imleçten önceki karakteri siler.
  • Düzeltme: ALT+T: mevcut kelimeyi bir önceki kelimeyle değiştirir, CTRL+T: imleçin sağındaki karakter ile solundaki karakteri yer değiştirir, CTRL+_: son basılan tuşu geri alır.
  • Kes&Yapıştır: CTRL+W: imleçten önceki kelimeyi kesip panoya ekler, CTRL+K: imleçten sonraki bütün karakterleri kesip panoya ekler, CTRL+U: imleçten önceki bütün karakterleri kesip panoya ekler, CTRL+Y: panoya alınan son öğeyi yapıştırır.
  • Capitalize Case: ALT+U: imlecin sağındaki bütün karakterleri UPPERCASE yapar, ALT+L: imleçten sonraki bütün karakterleri lowercase yapar, ALT+C: imleçten sonra gelen karakteri büyük harf yapıp imleci kelimenin sonuna atar.
  • TAB: mümkün eşleşmeler ile tamamlama yapılmaya çalışır.
  • Komut Geçmişi: ↑/CTRL+P: geçmişte yukarı yönde gezinmek için, ↓/CTRL+N: geçmişte aşağı yönde gezinmek için.
    CTRL+R: komut geçmişinizde geriye dönük arama yapmaya yarar, en yakın eşleşmeyle tamamlar, CTRL+O: aradığınız komutu bulduktan sonra çalıştırmanıza yarar, CTRL+G: arama modundan çıkmak için.

Diğer

{komut} Boşluk\ içeren\ dizin/
  • Dizin ve dosya isimlerindeki boşluklar: kelime sonlarına \ karakteri eklenmelidir. dizin ise sonuna / konularak dizin olduğunu belirtiriz.

Yakında…

  • ; / && / & / “|”||, tee(pipes)/$sytemvars/-/!!/! / %% / % /#* / ##* prefixes, wildcards+regex, shebang, bang
  • more text processing(detailed cat),sort,wc
  • more directories (.. ./ .)
  • find,locate,grep(-v),egrap,sed,awk,ack,ag,rgrep,chmod,paste,cut
  • ifconfig, dig, nslookup, fetches, sestatus ,lsof, netstat, results, watch, which, where, whatis,curl, wget, env, jq. more status…
  • scp,ssh
  • bash scripting(+executing, permissions),systemd(systemctl), path, configs(bashrc..), aliases, — paramaters, cli apps, cronjobs, xargs
  • bash alternatifleri: zsh ve fish

son güncelleme: 23.04.2020

--

--

Berkcan Tezcaner

berkctezc.github.io | loves💙 tech💻, programming👨‍💻, rock👨‍🎤, guitar+bass🎸, video games🎮