4 - Komut Satırı ve Temel Komutlar
2025
En yaygın kullanılan kabuk programı Bash (BourneAgain Shell) olmakla birlikte sh, ksh, csh, zsh, fish gibi farklı kabuklar da bulunmaktadır.
Araştırma sorusu: Kabuk programı nasıl değiştirilir?
Konsol, kullanıcı ile kabuk arasında yer alarak kullanıcının komut girmesini sağlayan grafiksel ve komut satırı arayüzüne sahip bir araçtır.
Biz komutlarımızı bu araç aracılığı ile kabuğa ulaştırırız kabuk ise kullanıcıdan gelen girdileri yorumlayarak çekirdeğe aktarır.
Örnek: gnome-terminal
, alaacritty
, konsole
, xterm
, ghostty
:~
: Bulunduğu dizinNot 1: $
normal kullanıcı, #
root kullanıcı
Not 2: Komut satırları özelleştirilebilir. Her zaman bu bilgileri göreceğinizin garantisi yoktur.
Araştırma sorusu: Yukarıdaki komut satırı (prompt) nasıl özelleştirilebilir?
Terminal, güçlü bir komut satırı arayüzü sunar:
Terminal kullanmanın avantajları:
Terminal (konsol) uygulamasını açmak için birkaç yöntem:
Ctrl+Alt+T
klavye kısayoluÖrnek:
ls
: Komut (list files)-al
: Seçenekler/etc
: Argüman (hangi dizinin listeleneceği)Seçenekler genellikle -
veya --
ile başlar:
-a
, -l
(birleştirilebilir: -la
)--all
, --long-format
Terminal ekranına echo $SHELL
yazıp Enter
’a basın.
Konsola girmiş olduğumuz komut yorumlandı ve neticesinde bize /bin/bash
şeklinde bir çıktı verdi.
Bu çıktı bize mevcut sistemde kullanılan ana kabuk programının BASH
olduğunu bildirmiş oldu.
Peki $SHELL
ne, nasıl yorumlandı?
$
eklenerek ulaşılır.BASH bir programlama dilidir. Programlama dillerinde de bildiğiniz gibi değişkenler vardır.
Uygulama:
Bu ortam değişkenlerinin içeriğini komut satırında görüntüleyin.
O andaki tüm ortam değişkenlerini görmek için:
Aynı değişkenlere diğer programlama dillerinden de erişim sağlanabilir
Python örneği:
Komutlar hakkında önceden hazırlanmış yardım dokümanlarına man
isimli komutla erişebilirsiniz.
Örnek: man
’in kendi yardım dokümanına erişmek için:
Bazı komutlar için man
komutu sonuç veremeyebiliyor. Böyle durumlarda önce help
komutunu o da olmuyorsa komuta eklenecek --help
seçeneğini deneyebiliriz.
Örnek:
.bash_history
isimli dosyada tutulmaktadır.Ctrl + R
’ye basıp bir kaç harf yazarak geçmişte uyguladığınız komuta da ulaşabilirsiniz.Dene: history
Genel bir komut satırı arama aracıdır.
Komut geçmişinden tutun da dosyalara dizinlere kadar arama ve otomatik tamamlama yapabiliyor.
Komut satırında dizinler arasındaki geçişler cd
komutuyla yapılır.
cd
komutu parametre olarak hedef dizinin yolunu alır.
Eğer bir dizinin ya da dosyanın yolu kökten itibaren yani /
ile başlıyorsa buna mutlak yol denir.
Örnek:
Göreceli yollar kökten itibaren değil, bulunulan dizinden itibaren işleme konur. Yolun başında /
bulunmaz.
Karakter | Temsil Ettiği Dizin |
---|---|
. | Mevcut dizini belirtir |
.. | Bir üst dizini belirtir. |
~ | Kullanıcının ev dizinini belirtir. |
- | Bir önceki dizini belirtir. |
.
mevcut dizinde bulunan programların çalıştırılmasında kullanılır. Örnek: ./program
cd
komutunu çalıştırdığınızda ev dizinine gidersiniz.~
karakteri yol gösteriminde kullanılabilir.~kullanıcı
gösterimi kullanılabilir.Dizin içeriğini (dosya ve alt dizinleri) listeler.
ls komutunun pek çok parametresi vardır. Yardım sayfaları (man ls) kullanılarak detaylı bilgi alınabilir.
ls -a
. ile başlayan dosyaları yani gizli dosyaları da gösterir.ls -l
dosya haklarını sahibini, grubunu, değişiklik zamanı gibi detaylı bilgileri sunar.ls -i
dosyaların inode numaralarını gösterir.Not: ls
komutuna bir dosya verilirse yalnızca o dosyayı listeler, bir dizin verilirse dizinin içerisindekileri listeler.
emrecan@ubuntu:~$ ls -ali
total 24
435620 drwxr-xr-x 3 emrecan emrecan 4096 Mar 30 10:52 .
393218 drwxr-xr-x 4 root root 4096 Mar 24 08:10 ..
457708 -rw-r--r-- 1 emrecan emrecan 220 Mar 24 08:10 .bash_logout
399439 -rw-r--r-- 1 emrecan emrecan 3771 Mar 24 08:10 .bashrc
458824 drwx------ 2 emrecan emrecan 4096 Mar 30 10:52 .cache
399202 -rw-r--r-- 1 emrecan emrecan 807 Mar 24 08:10 .profile
Dosya boyutlarını daha okunaklı(human readable) halde görebilmek için -h
parametresi eklenebilir. Yani: ls -alih
Not: ls -al
çıktısında her zaman .
ve ..
görünür.
ls -l
komutunun çıktısında sol başta dosya türünü belirten bir karakter yer alır. Bu karakterlerin anlamları şöyledir:
Dizin oluşturmak için kullanılır.
Örnekler:
Bulunduğumuz dizinde foo
isminde bir dizin oluşturmak için:
Bulunduğumuz dizini değiştirmeden /tmp
dizini altında dizin oluşturmak için:
Bulunduğumuz dizinde tek komutla birden fazla dizin açmak için:
İçiçe dizin oluşturmak için -p
parametresi kullanılır:
Boş bir dosya oluşturmak için veya mevcut dosyanın erişim ve değiştirilme zamanını(mtime) güncellemek için kullanılır.
Örnek:
Kendisine verilen metni yazdırır.
Dosya ve dosyaların içeriğini okuyup, içeriğini standart çıkışa(stdout) yazar.
Dosya ve dizin kopyalar. Bir dosyayı başka bir dosya olarak kopyalayacağı gibi birkaç dosyayı bir dizine de kopyalayabilir.
cp kaynak hedef
şeklinde çalışır.
Eğer bir dosyayı A dizininden B dizinine kopyalarsak ve B dizini içerisinde A dizininden taşıdığımız belge ile aynı isimde dosya varsa, taşıdığımız dosya mevcut konumda bulunan aynı isimdeki eski dosyanın üzerine yazılacaktır.
Bu da B konumunda var olan eski dosyanın önceki içeriğinin yok olması demek.
-i parametresi cp
komutunu interaktif modda çalıştırır.
Eğer hedef dosya mevcut ise kullanıcıyı uyarır. “y” tuşuna basarak hedef dosyanın üzerine yaz denir.
Bulunduğumuz dizindeki birden fazla dosyayı farklı bir dizine kopyalamak için:
Dizinleri alt dizinleriyle birlikte kopyalamak için “-r” parametresi kullanılır:
Bir dosyayı veya dizini başka bir dosya veya dizin olarak taşır ya da birkaç dosya veya dizini başka bir dizine taşır.
mv kaynak hedef
şeklinde çalışır.
cp
komutundaki gibi hedef dosya varsa üzerine yazar. “-i” ile interaktif mod kullanılabilir.
Çalışma sorusu: mv ile dosya adını değiştirdiğinizde inode numarası değişir mi?
Dosya veya dizin siler. Bu komutu kullanırkan dikkatli olun.
Sildiğiniz dosya “çöp kutusuna” gitmiyor, doğrudan siliniyor!
Önemli parametreleri:
Dosya ve dizin aramak için kullanılır.
Kullanımı:
find dizin seçenekler
Dizin adı belirtilmezse bulunulan dizin ifade edilir.
-name dosya_ismi: Aranacak dosyanın ismi
-type dosya_tipi: Aranacak dosyanın tipi
f: Normal dosya
d: Dizin
l: sembolik bağlantı
-mtime -N: son N gün önce değişmiş dosyalar (geçmiş ile şimdi arasında)
-mtime +N: N günden önce değişmiş dosyalar
-size +-boyut: Aranacak dosya boyutu
-exec: Çıkan arama sonuçları üzerinde komut çalıştırmayı sağlar.
/etc
dizini altında adı local
ile başlayan dosyaları bul./etc
dizini altında adı local
ile başlayan dizinleri bul./bin
dizini altında boyutu 1 MB’tan büyük dosyaları bul.Dosya ve dizinler arasında bağlantı oluşturmak için kullanılır.
ln
komutuyla oluşturulmaktadır.ln parametre kaynak hedef
şeklinde kullanılmaktadır.Katı bağlantıda orijinal dosya ile bağlantı oluşturulan dosyanın birebir aynısı iki farklı dosya oluşur. Katı (hard) bağlantılarda yapılan değişikler orijinal dosyayı etkiler. Orijinal dosya silinse bile katı bağlantı içeriği korumaya devam eder.
Bu durumu disklerde kullanılan RAID-1 teknolojisine benzetebiliriz. Orijinal dosya silinse bile verilere diğer dosya üzerinden erişilebilir.
ln
ile oluşturulur.
Katı bağlantılar yalnızca dosyalar için yapılabilir ve dosyaların aynı disk üzerinde olması gereklidir. Yani farklı iki disk arasında katı bağlantı yapamazsınız.
ln -s
ile oluşturulur.ln -s ikinci ucuncu
ls -il birinci ikinci ucuncu
457767 -rw-rw-r-- 2 emrecan emrecan 0 Nis 4 10:23 birinci
457767 -rw-rw-r-- 2 emrecan emrecan 0 Nis 4 10:23 ikinci
457904 lrwxrwxrwx 1 emrecan emrecan 6 Nis 4 10:24 ucuncu -> ikinci
cat ucuncu
selam
rm -f ikinci
cat ucuncu
cat: ucuncu: Böyle bir dosya ya da dizin yok
ls -il birinci ucuncu
457767 -rw-rw-r-- 1 emrecan emrecan 6 Nis 4 12:39 birinci
457904 lrwxrwxrwx 1 emrecan emrecan 6 Nis 4 12:39 ucuncu -> ikinci
Link oluşturma genelde bulunan dosya sisteminde disk alanı yetersiz hale geldiğinde dosyaları başka bir dosya sistemine taşıdıktan sonra eski dosya/dizin yolunu kullanan kişi ve uygulamaların hala eski yol üzerinden erişmeleri için kullanılır.
Örnek:
Veriler yeni_disk
’te olmasına rağmen burada verilere /var/lib/data
altından erişebilir olduk.
Bu komut genel olarak sistemde kullanılan çekirdek hakkında bilgiler verir.
Bilgisayarın adını gösterir.
Bu isim /etc/hostname
dosyasında saklanır. Kalıcı isim değişikliği için bu dosya güncellenir.
Kullanılan dağıtım hakkında bilgiler verir.
Örnek:
Komutu çalıştıran kullanıcının kim olduğunu söyler.
Sistemde hangi kullanıcı nereden bağlanmış ne çalıştırıyor bilgisini söyler.
Bilgisayarın ne kadar zamandır açık olduğu bilgisini verir.
İsminden de anlaşılacağı gibi bu komut bize sistemin o anki tarih ve saat bilgisini verir. Farklı formatlarda çıktı da verebilmekte. Yardım için: man date
Alıştırma: Bugünün tarihini ‘GG.AA.YYYY’ şeklinde ekrana yazdırın.
Herhangi bir komutun tam yol bilgisini öğrenmek için kullanılır.
Alıştırma: ls programını ev dizini altına listele
adıyla kopyalayın ve listele
programıyla ev dizinini listeleyin.
Bu komutun işlevi sistemin donanım ve BIOS bilgilerini göstermektir.
Sistemdeki disklerin kullanımı hakkında bilgiye ulaşmak için kullanılır.
emrecan@ubuntu:~$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 445M 0 445M 0% /dev
tmpfs tmpfs 98M 1.1M 97M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 9.0G 4.4G 4.1G 52% /
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda2 ext4 877M 108M 708M 14% /boot
/dev/loop2 squashfs 44M 44M 0 100% /snap/snapd/14978
/dev/loop3 squashfs 62M 62M 0 100% /snap/core20/1376
/dev/loop4 squashfs 68M 68M 0 100% /snap/lxd/22526
/dev/loop5 squashfs 44M 44M 0 100% /snap/snapd/15177
tmpfs tmpfs 98M 0 98M 0% /run/user/1001
/dev/loop6 squashfs 62M 62M 0 100% /snap/core20/1405
/dev/loop0 squashfs 68M 68M 0 100% /snap/lxd/22753
Bir dizinin, içerdiği tüm dosyalar ile birlikte diskte kapladığı toplam alanı verir.
Tavsiye: ncdu
isimli program daha güzel sonuçlar veriyor.
Alıştırma: ncdu
isimli paketi kurup /var
dizini altında çalıştırın.
Bu komut ile kullanılan bellek miktarını öğrenebilirsiniz.
emrecan@ubuntu:~$ free -h
total used free shared buff/cache available
Mem: 976Mi 160Mi 124Mi 1.0Mi 691Mi 665Mi
Swap: 1.7Gi 1.0Mi 1.7Gi
Swap: Sistem belleğinin yetersiz kaldığı durumlarda harddisk üzerinde bellek olarak kullanılan alana takas alanı (swap) denir.
Bütün PCI aygıtlarını listelemeye yarar. Genellikle anakarta takılı olan donanımların marka/model bilgisine erişmek için kullanılır.
emrecan@ubuntu:~$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: VMware SVGA II Adapter
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0b.0 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02)