Açık Kaynak İşletim Sistemleri

5 - Komut Satırı ve Temel Komutlar - 2

Emre Can Yılmaz

Ondokuz Mayıs Üniversitesi

2025

cat

Dosya veya dosyaların içeriğini okuyup, içeriğini standart çıkışa (stdout) yazar.

echo "Test İçeriği" > ornek.txt
cat ornek.txt
Test İçeriği

# birden fazla dosyayı da okur
echo selam > selam1.txt
echo selam > selam2.txt
cat selam1.txt selam2.txt
selam
selam

Örnek:

  • Komut geçmişini cat ile görüntüle: cat ~/.bash_history
  • Bilgisayar adını hostname ile değil de cat ile görüntüle: cat /etc/hostname

tee

Yazmak istediğimiz ifadeleri hem komut satırına yansıtıp hem de bu ifadelerin bir dosya içerisine kayıt olmasını isterseniz kullanacağınız komut tee komutu olacaktır.

tee metin.txt
1. satır
2. satır
3. satır
^D

CTRL + D tuşlarına basıp yazma işlemi sonlandırılır.

cat metin.txt
1. satır
2. satır
3. satır

grep

Dosya ya da komut çıktısında bir ifade aramak için yani bir nevi filtreleme işlemi için kullanılır.

Kullanımı: grep "aranacak_ifade" dosya_adı

Örnek:

grep "ahmet" isimler.txt
  • Linux’ta büyük küçük harf duyarlılığı olduğu için yukarıdaki örnekte “Ahmet” ya da “AHMET” gibi büyük harf içeren kelimeleri yakalamayacaktır. Bunu kapatmak için -i parametresi kullanılır.

grep örnekleri

# tek bir dosyada bul
grep 'kelime' dosya

# birden fazla dosyada bul
grep 'kelime' dosya1 dosya2 dosya3

# dizindeki ve tüm alt dizinlerdeki dosyalarda bul
grep 'kelime' -r .

# komut çıktısında bul
ps ax | grep 'kelime'
dpkg --list | grep 'vim'

# büyük/küçük harf duyarsız arama
grep -i 'kelime' dosya

wc

Kelime, satır, karakter ve byte sayar. Girdiyi standart girişten veya parametre olarak verilen dosyadan alır.

  • -c Bayt sayısını verir.
  • -l Satır sayısını verir.
  • -m Karakter sayısını verir.
  • -w Kelime sayısını verir.

wc örneği

cat beni.oku
Ben bir dosyayim.
Bende toplam 4 satir vardir.

Iste bu da son satir.

cat beni.oku | wc -l
4

wc -w beni.oku
13 beni.oku

cat beni.oku | wc -c
70

Eğer birden fazla dosya verilirse veriliş sırasına göre dosyaların ilk satırları gösterilir ve her dosyanın satırlarının başına ‘==> XXX <==’ biçiminde ayraç koyar.

head -n 1 1.txt beni.oku
==> 1.txt <==
Ben 1.dosyayim
==> beni.oku <==
Ben bir dosyayim.

tail

Dosyanın son kısımlarını gösterir. -c ile byte sayısı, -n ile satır sayısı verilebilir. Eğer dosya verilmez ise standart girişten okur.

cat beni.oku
Ben bir dosyayim.
Bende toplam 3 satir vardir.

Iste bu da son satir.


tail -c 7 beni.oku
satir.

tail -n 1 beni.oku
Iste bu da son satir.

Eğer -f parametresi verilirse tail komutu EOF (dosya sonu) karakterini okuyunca durmaz. Yeni veriler için bekler ve veri hazır olur olmaz okuyup ekrana basar. Genellikle sürekli akan bir log dosyasını görüntülemek için kullanılır:

tail -f /var/log/messages

-r parametresi çıktıyı ters sırada basar.

tail -r beni.oku
Iste bu da son satir.

Bende toplam 3 satir vardir.
Ben bir dosyayim.

more

Dosyanın içeriğini sayfa sayfa görmek için kullanılır. Eğer dosya uzunluğu bir sayfadan fazla ise ekrana sadece bir sayfalık kısmını gösterir. Enter tuşu ile bir satır ilerlenir, boşluk(space) tuşu ile de bir sayfa ilerlenir.

more /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
..
--Başka--(73%)

less

more komutunun daha gelişmişidir. More komutu ile geriye doğru gidelemezken less ile gidilebilmektedir.

less /etc/passwd
  • / tuşuna basıp istenilen kelime aranabilir.
  • G ile dosya sonuna gidebilir, g ile dosya başına gidebilirsin.
  • q tuşu ile çıkılır.
  • Yukarı/aşağı ok tuşları veya Page Up/Page Down ile sayfalar arası geçiş yapılabilir.

diff

Dosyaları satır satır kıyaslar ve farkını söyler.

cat a.txt
emre
can
yılmaz

cat b.txt
emre
cezmi
cezmi
can
yılmaz
diff a.txt b.txt
1a2,3
> cezmi
> cezmi

Çıktının açıklaması:

  • 1a2,3: İlk dosyanın 1. satırından sonra, ikinci dosyada 2-3 satırları eklendi
  • > işareti eklenen satırları gösterir (ikinci dosyada olan)
  • < işareti çıkarılan satırları gösterirdi (birinci dosyada olup ikincide olmayanlar)

cut

Standart girişten ya da dosyadan okuduğu satırlar içindeki istenen sütunları gösterir. Sütun seçme işlemi bir ayraca göre yapılabileceği gibi sabit boyda da yapılabilir.

  • -c Karakter olarak seçilecek sütunları belirler.
  • -d Ayraç belirlemek için kullanılır.
  • -f Ayraç göre sütunlara ayrıldığında görüntülenmek istenen sütunları seçer.
...
gdm:x:125:130:Gnome Display Manager:/var/lib/gdm3:/bin/false
emrecan:x:1000:1000:Emre Can Yılmaz,,,:/home/emrecan:/bin/zsh
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
...
  • Yukarıda /etc/passwd dosyasının bir kısmı görülmektedir. Görüldüğü gibi bilgiler : karakteri ile birbirinden ayrılmış.

-d ile ayraç olarak : belirtildiğinde soldan sağa kullanıcı ismi 1. sütun, parola 2.sütun, UID 3. sütun, GID 4.sütun, açıklama 5.sütun, ev dizini 6.sütun ve kabuk 7.sütun olarak yerleşir

  • Örneğin kullanıcı adı ve kabuk bilgilerini ekrana yazmak için:
cut -d : -f1,7 /etc/passwd
gdm:/bin/false
emrecan:/bin/zsh
systemd-coredump:/usr/sbin/nologin

tr

Tekrar eden karakterleri değiştirmek, silmek veya sıkıştırmak için kullanılır. STDIN’den okur, STDOUT’a yazar.

tr [seçenek] SET1 [SET2]

Hem SET1, hem de SET2 belirtilmişse SET1’deki her bir karakter karşılık gelen SET2’deki karakterle değiştirilir.

tr - örnekler

  1. Küçük harfleri büyük harflerle değiştirmek için:
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
pardus
PARDUS

Aynı iş şu şekilde de yapılabilir:

tr a-z A-Z
pardus
PARDUS
  1. Süslü parantezleri normal parantezlere dönüştürme:
tr '{}' '()' < girişdosyası > çıkışdosyası
  1. Boşlukları TAB karakterine dönüştürme:
tr [:space:] '\t'
Pardus Linux
Pardus     Linux
  1. Tekrar eden karakterleri -s ile sıkıştırma: Birden fazla boşluğu tek boşluğa indirme:
echo "GNU         Linux" | tr -s [:space:] ' '
GNU Linux
  1. Belirtilen karakterleri -d ile silme:
echo "1 GNU 2 Pardus 3 Linux" | tr -d [:digit:]
 GNU  Pardus  Linux

split

split komutu dosyayı iki veya daha fazla parçaya bölmek için kullanılır.

-l parametresi ile satır sayısına göre -b parametresi ile byte miktarına göre parçalanır.

split test.pdf

ls
test.pdf  xaa xab xac xad xae xaf ...

wc -l x*
   1000 xaa
   1000 xab
   ...
  11773 toplam

split - örnek

ls -lh test.pdf
-rw-rw-r-- 1 emrecan emrecan 2,6M Nis 11 16:37 test.pdf

split test.pdf -b 500k
ls -l x*
-rw-rw-r-- 1 emrecan emrecan 512000 Nis 11 16:42 xaa
-rw-rw-r-- 1 emrecan emrecan 512000 Nis 11 16:42 xab
-rw-rw-r-- 1 emrecan emrecan 512000 Nis 11 16:42 xac
-rw-rw-r-- 1 emrecan emrecan 512000 Nis 11 16:42 xad
-rw-rw-r-- 1 emrecan emrecan 512000 Nis 11 16:42 xae
-rw-rw-r-- 1 emrecan emrecan 161464 Nis 11 16:42 xaf

Soru: Peki bu dosyaları nasıl geri birleştiririz?

split ile ayrılmış dosyaları birleştirme

cat x* > birlestir.pdf
ls -lh birlestir.pdf test.pdf
-rw-rw-r-- 1 ecylmz ecylmz 2,6M Nis 11 16:46 birlestir.pdf
-rw-rw-r-- 1 ecylmz ecylmz 2,6M Nis 11 16:37 test.pdf
diff birlestir.pdf test.pdf

Çıktı yoksa dosyalar aynıdır.

sed

  • Metinler üzerinde işlem yapan bir programdır.

  • Genel olarak programların çıktılarını düzenlemek veya pek çok dosyayı otomatik olarak düzenlemek için kullanılır.

  • Metin üzerinden tek geçişte istenen kriterlere uygun değişiklikleri yapabildiğinden oldukça etkin ve hızlı bir araçtır.

sed [seçenekler] 'komut' dosya […]

sed - örnek

  • eski dosyasındaki gun metnini bulup gece ile değiştirir, sonucu yeni dosyasına yazar:

    sed 's/gun/gece/' eski > yeni
    echo "iyi gunler" | sed 's/gun/gece/g'
    iyi geceler

Sed komutunun 4 parçası var:

s           değiştirme(substitute) komutu
/../../     Ayraçlar
gun         Aranacak düzenli ifade
gece        Uygulanacak, yerleştirilecek ifade

Öntanımlı olarak her satırdaki ilk bulduğunu değiştirir.

cat numbers.txt
bir iki uc, bir iki uc
dort uc iki bir
bir yuz

sed 's/bir/BIR/' numbers.txt
BIR iki uc, bir iki uc
dort uc iki BIR
BIR yuz

Global değiştirme için:

sed 's/bir/BIR/g' numbers.txt
BIR iki uc, BIR iki uc
dort uc iki BIR
BIR yuz

Bu durumda ilk gördüğünü değil bütün bulduklarını değiştirir.

Belirli satırda değişiklik yapmak için:

sed '3 s/bir/BIR/' numbers.txt
bir iki uc, bir iki uc
dort uc iki bir
BIR yuz

Eşleşen satırları silmek için:

sed '/dort/d' numbers.txt
bir iki uc, bir iki uc
bir yuz

Belirli bir satırı silmek için:

sed '3d' numbers.txt
bir iki uc, bir iki uc
dort uc iki bir

sort

sort komutu dosyadaki satırları sıralamak için kullanılır.

-n sayısal(numeric) sıralama yapar. -f Büyük/küçük harf ayrımı olmadan sıralar. -r sıralama sonucunu tersler listeler.

sort isimler.txt
1020 ahmet
1030 veli
990  ali
  • sayısal sıralama:
sort -n isimler.txt
990  ali
1020 ahmet
1030 veli

uniq

uniq komutu birden fazla olan aynı satırları tek satıra düşürmek için kullanılır.

Genellikle sort komutu ile sıralama yapıldıktan sonra aynı çifte kayıtları silmek için kullanılır.

sort a.txt
101
101
academy
business
Linux
Linux
pardus

sort a.txt | uniq
101
academy
business
Linux
pardus

Teşekkürler