En Çok Kullanılan Terminal Komutları (Linux / macOS)
Unix temelli işletim sistemlerinde onlarca komut bulunur. Bu yazıda günlük hayatta en çok ihtiyaç duyacağınız komutlara değinmeğe çalıştım. Her ne kadar konuyu çok kullanılan komutlar olarak indirgesem de takdir edersiniz ki bir yazıda komutları tüm özellikleri ile anlatmak mümkün değil. Yine de terminal komutlarına yeni başlayan ve öğrenenler için iyi bir rehber olacağına inanıyorum.
- Öncelikle, temel birkaç husus...
- echo
- pwd
- ls
- cd
- mkdir
- touch
- cat
>
ve>>
- mv
- cp
- rm
- grep
- man
- history
- Bir bakışta tablosu
Öncelikle, temel bir kaç husus...
Devam eden başlıklarda açıklamaları ve örnekleri Linux referans alarak yapacağım. Ancak burada kullanılan terminal komutları hem Linux hem de macOS işletim sistemi için geçerlidir. Kimi zaman bazı komutların kullanımı işletim sistemine göre farklılık gösterse de her ikisi de unix tabanlı olduğu için çoğu komutun kullanımı aynıdır.
Geçerli Klasör (Working Directory)
Bu kavram içinde bulunduğunuz klasörü kasteder ve working directory ya da current directory olarak adlandırılır. Mesela Windows işletim sisteminde Belgelerim ve onun içinde Resimler klasörüne tıklarsanız sizin working directory niz "Resimlerim" klasörü olur. Tıpkı bunun gibi Linux içinde o anda işlem yaptığınız ya da bulunduğunuz klasör de bu şekilde adlandırılır.
Flags (Etiket)
Linux'ta birçok komut ek özellikler ile kullanılır. Bu özellikler ile o komutun çalışma şekli zenginleşir ya da değişir. Komutlara ek özellikler vermek için FLAG kullanılır (Buradaki anlamını etiket olarak çevirebiliriz). Flag' lar genellikle önlerinde tire (-) işareti ile kullanılır. Mesela ls komutu tek başına kullanılabildiği gibi ls -a şeklinde "a" flag ile de kullanılır ve -a flag tüm dosyaları, gizli dosyalar dahil listeler. Komutları sırası geldikçe açıklayacağım şimdilik flag' ın bir komuta ek özellik kazandırdığını bilelim yeter.
(*) wildcards
"*" işareti çoğu zaman komutlarla birlikte kullanılır. Bu joker bir karakterdir ve bir ya da birden çok karakter yerine kullanılabilir. Örneğin *.txt
sonu .txt ile biten tüm dosyaları kasdeder. Sadece "*" kullanır isek bir klasör altındaki gizli dosyalar hariç tüm klasör ve dosyaları belirtir.
/ - Root Path (Kök-Ana Yol)
Windows işletim sisteminde varsayılan olarak ana klasör "C:\" klasörüdür. Aksine bir ayar yapılmadıkça bu hep böyledir. Windows dosyaları "C:\Windows" altında bulunur. Windows bilgisayarınıza yeni bir sürücü eklerseniz muhtemelen başka bir harfle mesela "D:\" harfi ile görürsünüz.
Linux'ta ise bu şekilde bir harf sistemi yoktur. Bunun yerine bir root (kök) dizin vardır ve diğer klasörler de bu dizine göre konumlanır. Root dizin "/" ile gösterilir. Root dizin altında "/home", "/var", "/bin" gibi dizinler bulunur.
home (~) dizini
Linux işletim sisteminde kullanıcı yetkileri ve kullanıcı ağacı geniş bir konudur ve hatta ayrı bir yazının konusu olabilir. Bu nedenle şimdilik genel olarak iki tür kullanıcı bulunur diyebiliriz. Biri admin diğeri kullanıcı.
Her kullanıcının varsayılan olarak root dizini /home
klasörü altında kullanıcı ismiyle kendi klasörleri bulunur. /home/<kullanıcıAdı>
Örneğin linux bilgisayarımızda biri izleogrenkodla diğeri kodman isminde iki kullanıcı olsun diyelim. Bu durumda ilk kullanıcı linux komut satırını açtığında varsayılan olarak /home/izleogrenkodla
dizini altında kendini bulur. Aynı şekilde ikinci kullanıcı da bilgisayarı kullandığında /home/kodman
dizini altında olduğunu görecektir. Her kullanıcının home dizini altındaki kendi klasörüne okuma ve yazma yetkisi vardır.
home klasörü tilde karakteri (~) ile gösterilir. Yukarıdaki izleogrenkodla kullanıcısı linux bilgisayarı kullanıcı adı ve parolası ile açıp komut satırına (terminal) gittiğinde aşağıdaki gibi bir ekranla karşılaşır.
myPc:~$
Relative Path(Referans Adres)
Sözlük anlamına baktığımızda relative yakın path ise yol anlamında kullanıldığını görürüz. Path işletim sisteminde dosya ve klasörün yolu ya da adresi olarak kullanılır. Relative Path ise içinde bulunduğumuz klasöre (Working Directory) göre başka bir klasörü tarif etmek için kullanılır. Örneğin aşağıdaki şemaya bakalım.
/home/izleogrenkodla/depom
/home/izleogrenkodla/depom/filmler
|--Avatar.mp4
|--StarWars.mp4
/home/izleogrenkodla/depom/resimler
|--cicek.jpg
|--rozet.jpg
Depom klasörü altında "filmler" ve "resimler" olmak üzere iki tane klasör var. Her klasörün altında da dosyalar bulunuyor.
Diyelim ki "filmler" klasörü içindeyiz. bu durumda bulunduğumuz klasörü /home/izleogrenkodla/depom/filmler
şeklinde tam yoluyla (absolute path) gösterebileceğimiz gibi ./
şeklinde referans ile de gösterebiliriz. Linux'ta .
bulunulan klasör ya da working directory 'yi belirtir.
Yine filmler klasörü içindeyiz. Bu defa bir yerine iki nokta kullanır isek yani ../
şeklinde gösterir isek bu da bulunulan klasörün bir üst klasörünü simgeler. Bu durumda bir üst klasör /depom klasörüdür. Yani filmler klasörü içinde ../
yazmak açık olarak /home/izleogrenkodla/depom
yazmakla aynı şeydir. Eğer
../resimler
yazarsanız bu da tahmin edebileceğiniz gibi /home/izleogrenkodla/depom/resimler
ile aynı adresi belirtir. İşte bulunduğumuz klasöre göre başka klasörleri bu ./
ve ../
şeklinde göstermeye Relative Path ya da referans adres gösterimi denir. Bu husus aşağıda örneklerle incelendiğinde daha iyi anlaşılacaktır.
echo
Bir vadiye gidip bağırarak bir şey söylerseniz, size sesiniz geri döner ve yankı yaptı dersiniz ya da eko yaptı dersiniz. Zaten ingilizce de echo yankı anlamına gelir.
Linux komutu olarak da echo
benzer şekilde davranır ve ekrana bir metin yazdırmak için kullanılır. echo
komutundan sonra bir iki kelime yazıp enter
tuşuna basarsanız, kelimelerin ekranınıza yazdırıldığını görürsünüz.
myPc:~$ echo Merhaba!
Merhaba!
echo
komutu genelde bir çevresel değişkeni (environmental variable) ekrana yazdırmak için kullanılır. Environmental variable konusuna daha sonra değineceğiz.
echo
komutu ayrıca komut satırı kodlama (bash script) içinde bir ifadeyi yazdırmak için de kullanılır.
pwd
pwd
komutu "print working directory" (yazdır geçerli klasör) kelimelerinin baş harflerinden oluşmuştur ve o anda bulunduğunuz klasörün tam adresini verir.
myPc:~$ pwd
/home/izleogrenkodla
ls
list kelimesi liste yada listelemek anlamlarına sahiptir. Linux komutu olarak "list" kısaltılmış hali ile ls olarak kullanılır ve bir klasör içeriğini ekranda listelemek için kullanılır.
myPc:~$ ls
depom liste.pdf video.mp4
Yukarıda gördüğünüz gibi home klasöründe (~
) biri ".mp4" biri de ".pdf" olmak üzere iki dosya ve "depom" adında da bir klasörümüz var.
ls
komutu ile kullanabileceğiniz birkaç pratik flag bilmek işinizi kolaylaştırır. örneğin ls -l
, dosya ve klasörleri alt alta sıralar ve daha okunaklıdır. Ayrıca dosya izin ve boyut bilgileri de görülür.
ls -a
gizli dosyalar dahil bütün dosyaları listeler.
Flagları birleştirmek de mümkündür. Örneğin ls -la
hem bütün dosyaları listeler hem de tek sütun alt alta listeler.
cd
change directory (değiştir dizin) kelimelerin baş harflerinden oluşan cd
komutu adından da anlaşılacağı gibi bulunulan dizini değiştirir. cd
hem relative path (referans adres) hem de absolute path (açık adres) ile çalışır. Yukarıdaki /depom
klasör ağacına geri dönelim diyelim ki depom
dizini working directory 'miz ve resimler dizinine gitmek istiyorsak cd
kullanırız. Aşağıda relative path kullandık çünkü direkt resimler yazdık. Linux bu durumda geçerli dizinin içinde resimler klasörünü arar ve böyle bir dizin varsa dizini değiştirir. Yoksa "böyle bir dosya ya da klasör yok" uyarı mesajı verir.
myPc:~/depom$ cd resimler
myPc:~/depom/resimler$
Bulunulan dizinden bir üst dizine çıkmak için cd ..
kullanırız. Hatırlayın yukarıda relative path' den bahsedeerken iki noktanın ..
bir üst dizin olduğunu belirtmiştik.
myPc:~/depom/resimler$ cd ..
myPc:~/depom$
İsterseniz doğrudan tam adresi yazarak başka bir dizine de gidebilirsiniz.
myPc:~/depom$ cd /home/izleogrenkodla/depom/filmler
myPc:~/depom/filmler$
mkdir
make directory (yap dizin) kelimelerinin baş harflerinden oluşan mkdir
komutu dizin oluşturmak için kullanılır. Örneğin depom dizini altında projeler isimli yeni bir dizin oluşturmak istersem mkdir projeler
yazmam yeterli.
myPc:~/depom$ mkdir projeler
Eğer depom dizininde dosya ve klasörleri listelersek projeler klasörünün oluşturulduğunu göreceğiz.
myPc:~/depom$ ls -l
drwxrwxr-x 2 izleogrenkodla izleogrenkodla 4096 Sep 9 21:19 filmler
drwxrwxr-x 2 izleogrenkodla izleogrenkodla 4096 Sep 9 21:31 projeler
drwxrwxr-x 2 izleogrenkodla izleogrenkodla 4096 Sep 9 21:11 resimler
touch
touch
komutu yeni bir dosya oluşturmak için kullanılır. bu komuttan hemen sonra yeni dosyanın ismi ne olacaksa o yazılır.
myPc:~/depom$ touch yenidosya.txt
myPc:~/depom$ ls
filmler projeler resimler yenidosya.txt
cat
cat
bir dosya içeriğini görüntülemek için kullanılır. Yukarıda yeni oluşturduğumuz yenidosya.txt
dosyasını cat
ile görüntülersek boş bir ekran elde ederiz. Çünkü henüz içeriği boş bir dosya. Ancak içi dolu bir dosyada cat
komutu içeriği ekranda gösterecektir.
myPc:~/depom$ cat siir.txt
Ne içindeyim zamanın,
Ne de büsbütün dışında;
Yekpare, geniş bir anın
Parçalanmaz akışında.
> ve >>
>
ve >>
bir dosya içeriğini değiştirmek için kullanılır. Bu iki işaretten önce bir komut çalıştırılır ve komutun çıktısı bir dosya içeriğine kaydedilebilir. Örneğin echo
komutu ile bir ifade yazdırılır ve bu ifade bir dosya içerisine kaydedilebilir. >
her seferinde dosya içeriğini siler ve baştan yazar (overwrite). >>
işareti ise doya içeriğini korur ve yeni verilen içeriği dosya sonuna ekler (edit).
myPc:~/depom$ echo "Nasılsın?" > yenidosya.txt
myPc:~/depom$ cat yenidosya.txt
Nasılsın?
myPc:~/depom$ echo "Merhaba Dünya!" > yenidosya.txt
myPc:~/depom$ cat yenidosya.txt
Merhaba Dünya!
Gördüğünüz gibi >
işareti içeriği her seferinde sildi ve yeniden yazdı. Şu anda dosya içeriği "Merhaba Dünya!" Eğer bu içeriği tutarak sonuna bir şey eklemek ister isek >>
işaretini kullanırız.
myPc:~/depom$ echo "Beni hatırla!" >> yenidosya.txt
myPc:~/depom$ cat yenidosya.txt
Merhaba Dünya!
Beni hatırla!
mv
ingilizce move (hareket et, ettir) kelimesinin kısa hali olan mv
komutu dizin ve dosyaları kaynak (source) adresten hedef (target) adrese hareket ettirmek için kullanılır. Kullanımı mv <source> <target>
şeklindedir. Aşağıdaki örnekleri inceleyelim.
# önce backups adında yeni dizin oluştur
myPc:~/depom$ mkdir backups
# projeler klasörünü backups klasörü altına taşı
myPc:~/depom$ mv projeler /backups/
# yenidosya.txt dosyasını filmler klasörü altına taşı.
myPc:~/depom$ mv yenidosya.txt filmler/
mv
komutunu kes yapıştır gibi düşünebilirsiniz. Kaynaktaki dosya ve klasörleri kesip hedefe yapıştırır ya da taşır. Eğer aynı dizin içinde bir dosyayı yine aynı dizin içinde başka bir isimle taşırsak, mv
komutu varolan dosyayı keser ve yeni isimle yapıştırır. Aslında bu dosyayı yeniden adlandırır (rename). Yani mv
komutunu dosyaları yeniden adlandırmak için kullanabiliriz.
# geçerli klasörü filmler klasörü olarak değiştir.
myPc:~/depom$ cd filmler
# yenidosya.txt dosyası ismini değiştir.
myPc:~/depom/filmler$ mv yenidosya.txt benimdosyam.txt
cp
cp
komutunun kullanımı mv
komutuna çok benzer. cp adından da anlaşılacağı gibi dizin ve dosyaları kaynak adresten hedef adrese kopyalar. cp
kaynak ve hedef olmak üzere iki parametre alır ve cp [flag] <kaynak hedef>
şeklinde kullanılır. Flag' lar daha önce belirttiğim gibi değişik opsiyonlardır. Örneklerle birkaç senaryoyu inceleyelim.
- Aynı dizin içinde bir dosyayı kopyalamak
# cicek.jpg dosyasını kopyala ve aynı dizine başka isimle yapıştır.
myPc:~/depom/resimler$ cp cicek.jpg cicek_copy.jpg
- Dosyayı başka bir dizine kopyalamak
# Relative path ile dosyayı filmler dizinine kopyalamak
myPc:~/depom/resimler$ cp cickek.jpg ../filmler
# Absolute path ile dosyayı kopyalamak
myPc:~/depom$ cp resimler/cickek.jpg /home/izleogrenkodla/depom/backups
- Bir dizini başka bir dizine kopyalamak
# filmler klasörü ve tüm içeriğini kopyala
myPc:~/depom$ cp -R filmler filmler_copy
Yukarıdaki komut, depom dizini altında filmler_copy adlı yeni bir dizin oluşturur ardından filmler dizini içindeki tüm alt dizin ve dosyaları filmler_copy dizinine kopyalar.-R
ya da -r
opsiyonu recursive yani iç içe tüm klasör ve dosyalar demektir.
rm
rm
ya da remove dizin ve dosyaları silmek için kullanılır. UYARI! tehlikeli bir komuttur ve dikkatli kullanılması gerekir. Önce depom klasörü altında beni_sil.txt isimli bir dosya oluşturalım. Daha sonra da o dosyayı silelim.
myPc:~/depom$ touch beni_sil.txt
myPc:~/depom$ ls
myPc:~/depom$ rm beni_sil.txt
rm
komutu ile "*" wildcards' ı (joker karakterler) sıklıkla kullanılır. Örneğin depom klasörü içinde sonu .pdf ile biten tüm dosyaları silmek için aşağıdaki komutu kullanırız.
myPc:~/depom$ rm *.pdf
rm
komutu dizinleri silmek için de kullanılır. Bu durumda -R
ya da -r
flag' ı kullanmak gerekir.
# backups dizinini ve tüm içeriğini sil.
myPc:~/depom$ rm -R backups
grep
Bir metin ya da bir komut sonucu içerisinde arama veya filtreleme yapmak için grep
kullanılır. grep
komutundan sonra aranmak isteden ifade belirtilir ve grep
eşleşen tüm ifadeleri geri döndürür.
# siir.txt dosyası içerisinde "ma" kelimesini arama
myPc:~/depom$ grep ma siir.txt
Ne içindeyim zamanın,
Parçalanmaz akışında.
Yukarıda da görüldüğü gibi ilk satırdaki zamanın ve ikinci satırdaki Parçalanmaz kelimeleri "ma" kelimesini barındırdığı için grep komutu ile görüntülendi.
man
manual (kullanım klavuzu) kelimesine atıfta bulunan man
komutu kendisinden sonra yazılacak komutun nasıl kullanıldığını gösterir. Ancak man
çok detaylı ve uzun bir liste verebilir. Aşağıda komuttan sonra muhtemel elde edeceğiniz çıktının ilk birkaç satırı verilmiştir.
myPc:~/depom$ man ls
LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
with -l, print the author of each file
. . .
history
history
daha önce kullandığımız komutların listesini satır numaraları ile birlikte verir. Listedeki bir komutu yeniden kullanmak istediğinizde ünlem işareti ve satır numarasını yazmanız yeterlidir.
myPc:~/depom$ history
640 echo "Beni Hatırla" >> yenidosya.txt
641 cat yenidosya.txt
642 ls
643 mv yenidosya.txt resimler/
644 cd depom
645 copy -R * backups
myPc:~/depom$ !642
ls
filmler filmler_copy resimler siir_copy.txt siir.txt
Bir bakışta tablosu
Komut | Açıklama |
---|---|
echo |
ekrana yazdır |
pwd |
bulunulan dizini göster |
ls |
klasör ve dosyaları listele |
cd |
bulunulan dizini değiştir |
mkdir |
yeni dizin oluştur |
touch |
yeni boş dosya oluştur |
cat |
dosa içeriğini ekrana yazdır |
> >> |
bir komut sonucunu dosyaya yaz yada ekle |
mv |
dizin veya dosyaları kaynaktan hedefe taşı |
cp |
dizin veya dosyaları kaynaktan hedefe kopyala |
rm |
dizin veya dosyaları sil |
grep |
bir metin içerisnde belirtilen ifadeden eşleşenleri bul |
man |
bir komut hakkında klavuz bilgi ver |
history |
komut geçmişini listele |