Bu yazımda GNU/Linux işletim sistemlerinde kullanılan başlangıç terminal komutlarından ve bu komutlarla ilgili basit örneklerden bahsedeceğim. Ben bu yazıyı hazırlarken Ubuntu 18.04 kullandım, farklı dağıtımlarda küçük farklılıklar olabilir.


Komut satırı nedir?

Komut satırı, kullanıcıların belirli metin komutları kullanarak işletim sistemi ile iletişim sağladığı arayüzdür.

Komut satırı nasıl açılır?

Ubuntu dağıtımında Ctrl+Alt+T kısayolunu kullanarak açabilirsiniz. Alternatif olarak GUI kullanabilirsiniz.


Basit Terminal Komutları

ls
man
mkdir
cd
pwd
whoami
mv
cp
rm
history
clear

ls

ls("list directory content" ) komutu, hedef dizindeki dosyaları ve dizinleri görüntülememizi sağlar.

Absolute path kullanarak bulunduğumuz dizinden bağımsız olarak "/" dizininden başlayıp hedef dizinde bitirip hedeflediğimiz dosya veya dizinleri görüntüleyebiliriz.

$ ls /home/blog/Documents/
Courses  todolist.txt  Work

Ya da relative path kullanarak bulunduğumuz dizine bağlı olarak hedeflediğimiz dizindeki dosya ve dizinleri görüntüleyebiliriz.

$ ls Documents/
Courses  todolist.txt  Work

ls komutunu parametresiz kullanarak bulunduğumuz dizindeki dosya ve dizinleri görüntüleyebiliriz.

$ ls
Desktop  Documents  Downloads  Pictures

ls komutu, -l parametresi ile birlikte kullanıldığında aşağıdaki gibi ayrıntılı bir çıktı verir.

$ ls -l
total 16
drwxrwxr-x 2 blog blog 4096 Mar 28 22:17 Desktop
drwxrwxr-x 4 blog blog 4096 Mar 28 22:17 Documents
drwxrwxr-x 2 blog blog 4096 Mar 28 22:17 Downloads
drwxrwxr-x 2 blog blog 4096 Mar 28 22:17 Pictures

ls komutu, -h parametresi ile tek başına bir anlam ifade etmez. -lh veya -hs olarak kullanılır. -lh parametresi dosya ve dizin boyutlarını okunması kolaylaşacak şekilde aşağıdaki gibi dönüştürür.

$ ls -lh
total 16K
drwxrwxr-x 2 blog blog 4,0K Mar 28 22:17 Desktop
drwxrwxr-x 4 blog blog 4,0K Mar 28 22:17 Documents
drwxrwxr-x 2 blog blog 4,0K Mar 28 22:17 Downloads
drwxrwxr-x 2 blog blog 4,0K Mar 28 22:17 Pictures

Not: ls komutunda, parametreler sıralamaları önemsiz olmaksızın birlikte kullanılabilirler.

GNU/linux sistemlerde gizli dosya ve dizinler "." karakteriyle başlar. -a parametresi ile "." karakteriyle başlayan gizli dosya ve dizinleri görüntüleyebiliriz.

$ ls -a
.  ..  .bash_history  .bash_logout  .bashrc  .cache  Desktop  Documents  Downloads  .gnupg  Pictures  .profile

ls komutu -R parametresi ile hedef dizinde bulunan alt dizinleri ve içindeki dosyaları listeler.

$ ls -R
.:
Desktop  Documents  Downloads  Pictures

./Desktop:

./Documents:
Courses  todolist.txt  Work

./Documents/Courses:
Calculus  Data-Security  Physic

./Documents/Courses/Calculus:

./Documents/Courses/Data-Security:
DS1.pdf  DS2.pdf  DS3.pdf  DS4.pdf  DS5.pdf  DS6.pdf  DS7.pdf  DS8.pdf  DS9.pdf

./Documents/Courses/Physic:

./Documents/Work:

./Downloads:

./Pictures:

man

man("system's manual pager") komutu, komutların man(açıklama) sayfalarını görüntülememizi sağlar.

$ man ls
LS(1)                            User Commands                           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  speci‐
       fied.

       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
...

man komutunda, -k parametresi kullanılarak man sayfasında istenilen kelime aratılabilir. apropos komutu ile eşdeğer olarak çalışır.

$ man -k key
Compose (5)          - X client mappings for multi-key input sequences
XCompose (3)         - X client mappings for multi-key input sequences
XCompose (5)         - X client mappings for multi-key input sequences
XkbBell (3)          - Rings the bell on the default keyboard
apt-key (8)          - APT key management utility
authorized_keys (5)  - OpenSSH SSH daemon
ckbcomp (1)          - compile a XKB keyboard description to a keymap suitabl...
Digest::HMAC (3pm)   - Keyed-Hashing for Message Authentication
Digest::HMAC_MD5 (3pm) - Keyed-Hashing for Message Authentication
Digest::HMAC_SHA1 (3pm) - Keyed-Hashing for Message Authentication
...

mkdir

mkdir("make directories") komutu dosya sisteminde var olmayan yeni bir dizin oluşturmamızı sağlar.

$ mkdir newfile

Bu dizini görüntülersek ;

$ ls
Desktop  Documents  Downloads  Pictures  newfile

yeni newfile dizini oluştu.

mkdir komutu, --verbose paremetresini kullanarak oluşturulan her dizin için bir mesaj görüntülenmesini sağlar.

$ mkdir --verbose newfile2
mkdir: created directory 'newfile2'

cd

cd ("change directory") komutu shell'deki anlık dizini değiştirmemizi sağlar.

~$ cd Documents/
~/Documents$ 

cd komutu "/" (slash) işaretiyle de kullanılabilir. Eğer gidilicek dizin adresinin başına "/" konursa root dizininden belirtilen dizine gidilir. Konmazsa bulunulan dizinden belirtilen dizine gidilir.

~$ cd /Home/Music

Komutu root dizininden Home dizininin içindeki Music dizinine gider.

~$ cd Documents/Work

Komutu bulunulan dizindeki Documents dizininin içindeki Work dizinine gider.

cd komutu "." (nokta) işaretiyle de kullanılır. Nokta işareti bulunulan dizinde kalmamızı sağlar.

~$ cd .

cd komutu ile dizin değiştirirken belirtilen dizin isminin istenilen yerine nokta işareti konulabilir.

~$ cd ./Documents
~$ cd Documents/.
~$ cd ./Documents/.

pwd

pwd ('Print working directory') komutu hangi dizinde olduğumuzu bize bildirir.

~$ pwd
/home/blog/mysymlink/Projects

Not: symlinks
GNU/Linux sistemlerde hedef dosyaya başka bir dizin üzerinden ulaşmak için oluşturulan sembolik linktir. Bellekte sadece bir kere yer kaplar.

pwd komutu "-P" parametresi alarak symlinks'i olan dosyanın bize aslında hangi dizinde bulunduğunu gösterir.

~$ pwd -P
/home/blog/actual_directory_name/actual_subdirectory/Projects

whoami

whoami komutu sistemi kullanan geçerli userid'i görüntüler.

~$ whoami
cagla

mv

mv komutu,sistemdeki dosya ve dizinleri taşımamızı ve yeniden adlandırmamızı sağlar.

Önce ls komutuyla dosyayı görüntüleyelim.

~/Belgeler$ ls
file_name.txt

mv komutu ile dosya adını değiştirelim.

~/Belgeler$ mv file_name.txt new_file_name.txt

Tekrar ls komutu ile yeni dosya adını görüntüleyelim.

~/Belgeler$ ls
new_file_name.txt

mv komutu ile dosyayı başka bir dizine taşıyalım

~/Belgeler$ mv new_file_name.txt /home/blog/Projects

ls komutu ile Projects dizinini görüntüleyelim.

~/Projects$ ls
guessGame  new_file_name.txt

Not: Dosyayı taşırken var olmayan bir dizin adresi yazılırsa önce o dizin sistemde oluşturulur sonra taşınmak istenen dosya oluşturulan yeni dizine taşınır.

cp

cp komutu dosyaların ve dizinlerin koplarını oluşturur.

$ cp new_file_name.txt cop_new_file_name.txt

ls komutu ile bulunduğu dizine bakarsak,

$ ls
cop_new_file_name.txt new_file_name.txt

dosyanın bir kopyasının oluştuğunu görürüz.

cp komutunu kullandığımızda varsayılan olarak bir çıktı mesajı görülmez. -v(verbose) parametresi kullanılarak bir çıktı mesajı görüntülenebilir.

$ cp -v new_file_name.txt cop_new_file_name.txt

'new_file_name.txt' -> 'cop_new_file_name.txt'

Dosya kopyalarken kopyalayacağımız dosya ya da dizin zaten varsa varsayılan olarak üzerine kopyalanır. Varolan dosya kaybolur. Kopyalama işlemi yapılırken uyarı almak için -i(interactive) paremetresi kullanılır.

$ cp -i new_file_name.txt cop_new_file_name.txt 

cp: 'cop_new_file_name.txt''ın üzerine yazılsın mı?

rm

rm ("remove") komutu dosyaları kaldırır, siler. Varsayılan olarak dizinleri silmez. -r/-R/--recursive parametrelerini kullanarak kaldırmak istediğimiz dizini ve içerdiklerini siler, kaldırır.

$ rm -r  Projects/

Kaldırmak istediğimiz dizin boşsa -d/--dir parametrelerini kullanarak kaldırılabiliriz.

history

history ("GNU History Library") komutu daha önce kullanılan komutları görüntülemek için kullanılır.

$ history
  161  rm -r  Projects/
  162  ls
  163  rm --dir Projects/
  164  ls
  165  cd Belgeler/
  166  ls
  167  unrar e -p NN2019 CNNexample.rar 
  168  sudo apt install unrar
  169  unrar e -p NN2019 CNNexample.rar 
  170  unrar e -p 2019NN CNNexample.rar 
  171  unrar e -p  CNNexample.rar 
  172  ls
  173  history

Daha önce kullanılan komutları belirli sayıda görüntülemek için parametre olarak sayı verebiliriz.

$ history 5
  170  unrar e -p 2019NN CNNexample.rar 
  171  unrar e -p  CNNexample.rar 
  172  ls
  173  history
  174  history 5

history komutunda grep kullanarak daha önce kullandığımız komutlarda kelime aratabiliriz.

$ history | grep unrar
  167  unrar e -p NN2019 CNNexample.rar 
  168  sudo apt install unrar
  169  unrar e -p NN2019 CNNexample.rar 
  170  unrar e -p 2019NN CNNexample.rar 
  171  unrar e -p  CNNexample.rar 
  176  history | grep unrar

!! kullanılarak en son kullanılan komut çalıştırılarak gösterilir.

$ !!
history | grep unrar
  167  unrar e -p NN2019 CNNexample.rar 
  168  sudo apt install unrar
  169  unrar e -p NN2019 CNNexample.rar 
  170  unrar e -p 2019NN CNNexample.rar 
  171  unrar e -p  CNNexample.rar 
  176  history | grep unrar

Daha önce kullandığımız kaydedilen komutlar -c parametresi kullanılarak silinebilir.

$ history -c

clear

Terminal ekranını temizlemek, boşaltmak için kullanılır.