top of page

Temel bash Kabuk Komutları-3

  • Yazarın fotoğrafı: Huseyin Şahan
    Huseyin Şahan
  • 5 Mar
  • 6 dakikada okunur

Güncelleme tarihi: 16 Mar

Linux sistemi, dosyaları işlemek için kabukta çeşitli komutlar sağlar.Bu blog yazımızda size bunları göstereceğiz ve detaylı olarak kullanımlarını sunacağız.O zaman başlayalım.


Dosyaları İşleme


Önce basit bir komutumuzla başlayalım.Bazen hemen boş bir dosya oluşturmak isteyebilirsiniz.Bu işlemi kabukta yapabilmek için "touch" komutunu kullanabilirsiniz:

👉 darkside@debian:~$ touch deneme_1

Bu komut ile yeni bir dosya oluşturduk.Bu dosyanın bilgilerini ls -l görüntülerseniz dosyayı oluşturan kişi bu komutu çalıştıran kişi olacaktır.Yani burada darkside kullanıcısı dosyanın yaratıcısı olacaktır.İşte çıktı:

👉 -rw-r--r-- 1 darkside darkside    0 Mar  5 17:37 deneme_1

Burada yeşil olanla işaretlenen dosyanın sahibi ve dosya içeriği boş olduğu için 0 bayt olarak gösterilmiş.


Touch komutu sadece dosya oluşturmak için değil aynı zamanda dosyanın son erişim tarihini de değiştirebilir.Örneğin aynı dosyayı yine touch kullanarak oluşturun.Bu dosya mevcut ve içeriği varsa içeriği değiştirmeden dosyanın son erişim tarihini değiştirecektir.İşte ls -l çıktısı:

👉 -rw-r--r-- 1 darkside darkside    0 Mar  5 17:43 deneme_1

Yani:

  • Eğer dosya yoksa, touch dosya_adı komutu boş bir dosya oluşturur.

  • Eğer dosya zaten varsa, dosyanın içeriği bozulmaz, sadece zaman damgaları değişir.


Dosyaları Kopyalama

Bazen dosyaları veya klasörleri bir konuma kopyalamak isteyebilirsiniz.Bunun için cp komutunu kullanabilirsiniz.Komutumuzun kullanımı şu şekilde olacak:

👉 cp kaynak hedef

İşte basit bir kullanım işte:

👉 root@debian:~$ cp deneme_1 /var/www/html

Ancak burada bir dosyayı bir klasör içine kopyaladık.Ya eğer bir dosyayı başka bir dosyaya kopyalamak isteseydik.Burada deneme_1 dosyasının içeriği deneme_2 klasörünün içeriğine kopyalanacaktır.İşte komut:

👉 root@debian:~$ cp deneme_1 deneme_2

Eğer deneme_2 dosyanız mevcut değilse burada deneme_2 adında dosya oluşturulur ve deneme_1 içeriği deneme_2 dosyasının içine kopyalanır.


Eğer deneme_2 mevcutsa veriler deneme_2 içine kopyalanır ve deneme_2 dosyasının son erişim tarihi değiştirilir.Eğer deneme_2 dosyasında verileriniz varsa bu veriler silinip deneme_1 dosyasının içeriği gelecektir.O yüzden bu komutu kullanırken dikkat edin.deneme_2 dosya içeriğinizi kayıp edebilirsiniz.😔


Bunu dikkate alarak daha güvenli olarak şu komutu kullanabilirsiniz.Bu komut size kopyalama işleminin yapılıp yapılmayacağı ile ilgili onay isteyecektir:

👉 darkside@debian:~$ cp -i deneme_1 deneme_2

İşte ekran görüntüsü:


ree

Daha güvenli bir kopyalama için -i seçeneği ile kullanın.Terminalinizin başlangıç ayarlarında(~/.bashrc) Alias ile cp komutunu -i parametresi kullanacak şekilde yapılandırabilirsiniz.(alias cp='cp -i')Bu dosyada nasıl değişiklik yapacağınızı daha sonraki blog yazılarımızda ele alacağız.


Şimdi ise başka hedefteki bir dosyayı bulunduğunuz dizine nasıl kopyalarsınız onu öğrenelim.Önceki blogumuzda tek nokta(.) işaretinin bulunduğumuz dizini temsil ettiğini öğrenmiştik.Eğer o yazımızı okumadıysanız:

Temel bash Kabuk Komutları-2 blogumuzda okuyabilirsiniz.Şimdi gelelim nasıl kullanılacağına.İşte örnek bir komut.Bu komut /var/www/html/index.html dosyasını bulunduğumuz dizine kopyalayacaktır:

👉 root@debian:~# cp -i /var/www/html/index.html .

Burada dikkat edin sonda bir nokta var bu bulunduğumuz dizini temsil ediyor.Tek nokta burada çok işinize yarayabilir.


cp komutunun -R parametresi ile klasörü ve içindeki tüm dosyaları istediğiniz dizine taşıyabilirsiniz.İşte örnek:

👉 root@debian:~# cp -i -R /var/www/html/ /backup

Burada -R parametresi ile klasör içindeki tüm dosyaları /backup klasörüne taşıdık.Eğer -R parametresi kullanmazsanız:

cp: -r belirtilmemiş; '/var/www/html/' dizini atlanıyor

gibi bir hata alırsınız.


cp komutunu kullanırken joker karakterler ile istediğiniz kadar dosyayı yada klasörü istediğiniz yere kopyalayın:

👉 root@debian:~# cp -i /dev/tty* /backup/

Burada /dev dizinindeki tüm tty ile başlayan dosyaları /backup klasörüne kopyalamaya çalıştık.Yine

👉 root@debian:~# cp -i /dev/tty[123] /backup/

Yine burada tyy 1 ,2 ve 3 ile biten dosyaları kopyala dedik.Yine

👉 root@debian:~# cp -i /dev/tty[1-4] /backup/

1 ve 4 arasında biten tüm dosyaları kopyalamış olduk.Eğer joker karakterlerin ne anlama geldiğini bilmiyorsanız Temel bash Kabuk Komutları-2 blogunu okuyun.


Dosya Bağlantısı(Linking)

Dosya bağlantıları aynı dosyanın birden fazla kopyasını oluşturmadan farklı yerlerden erişmek için kullanılır.Bağlantılar aslında bir işaretçi gibi davranır burada kopyalamadan sadece erişim amaçlanır.İki tür bağlantı türü vardır:


  • Hard Link(Sert Bağlantı)

  • Soft Link(Sembolik Bağlantı)


Hard Link(Sert Bağlantı)

Dosyanın aslında gerçek bir kopyasını oluşturmaz sadece dosya ile aynı inode numarasını paylaşır.Ayrıca orjinal dosya silinse bile hard link dosyası kaybolmaz.

Ancak bu özelliğin kullanılması için dosyaların aynı dosya sisteminde olmaları gereklidir.Yani farklı disk bölümleri için çalışmayacaktır.

root@debian:/home/darkside# ln file1 file2

Burada file1 içeriği file2 içine kopyalanacaktır.Aslında burada dahada açıklayayım siz file1 dosyasını silseniz bile file2 aynı kimliği kullandığı için dosya içeriğini hala diskte tutacaktır.Burada normal kopyalamadan farkı file2 aslında file1 deki içeriği kullanır yani yeni bir dosya oluşturulup içerik kopyalanmaz sadece aynı veriyi paylaşır.Burada da aynı kimlik sayesinde aynı veriyi paylaşırlar.


Ben burada dosyaların aynı inode numarasını kullandığını görmek istiyorum.İşte komut:

👉 root@debian:/home/darkside# ls -li

ree

Burada görüldüğü gibi file1 ve file2 dosyaları aynı kimliği işaret ediyor.Umarım anlaşılmıştır.


Soft Link(Yönlendirmeli Bağlantı)

Burada slında Hard linkteki gibi aynı kimliği paylaşmaz sadece o dosyaya bir yönlendirme yapar.Aslında yine bir işaretçi gibi davranır ama har linkten farkı eğer orjinal dosya silinirse bu linkde bağlantı bozulacaktır.Şimdi bir soft link oluşturalım bakalım dediğimiz gibi mi çalışıyor ?

👉 root@debian:/home/darkside# ln -s file1 file2

Burada bir soft link oluşturduk.Eğer file1 dosyası silinirse ve eğer file2 içeriğini okumaya çalışırsanız boş olduğunu göreceksiniz.Çünkü orjinal dosya silindi ve bağlantı bozuldu.


Eğer veriler sizin için önemli ve kaybolmasını istemezseniz hard link geçici olarak bir veri yazıp eğer bu veri kaybolsada birşey olmayacaksa soft bağlantıyı kullanın.


Dosya Yeniden Adlandırma(Rename File) ve Taşıma

Dosya veya dizin taşıma (move) ve isim değiştirme (rename) işlemleri mv komutuyla yapılır.

mv komutu, iki ana işlevi yerine getirir:

  • Dosyayı yeni bir konuma taşıma.

  • Dosyayı yeni bir isimle değiştirme.

Şimdi bu işlevleri ele alalım ve örneklerle gösterelim:


Dosya Adı Değiştirme

Dosya adını değiştirmek için aşağıdaki komutu kullanın:

👉 root@debian:/home/darkside# mv file2 newfile2

Burada eski dosya adımız olan file2 yeni adla newfile2 olarak değiştirildi.


Dosya Taşıma

Dosyanızı bir konuma taşıma için şu komutu kullanın:

👉 root@debian:/home/darkside# mv newfile2 /var/www/html

Burada newfile2 dosyasını /var/www/html dosyasına taşıdık.


Birden Fazla Dosya Taşıma

İsterseniz birden fazla dosya da taşıyabilirsiniz:

👉 root@debian:/home/darkside# mv new1 new2 new3  /var/www/html

Ya da joker karakterle * kullanarak:

👉 root@debian:/home/darkside# mv new*  /var/www/html

Dosya Silme İşlemi

Burada dosya silmek için rm komutunu kullanabiliriz.İşte örnek ve basit bir silme komutu:

👉 root@debian:/home/darkside# rm hello

Burada hello adında bir dosyayı sildik.


Ancak eğer birden fazla dosya silmek isterseniz:

👉 root@debian:/home/darkside# rm hello1 hello2

gibi sıralı olarak dosya adlarını kullanarak bildirebilirsiniz.


Dosyaları daha güvenli silmek için:

👉 root@debian:/home/darkside# rm -i hello

Bu komutu alias ile ~/.bashrc dosyasında alias ile bildirebilirsiniz.rm komutunu daha güvenli kullanmak için.


Bazen bir dizini ve içeriğinide silmek isteyebilirsiniz.Bunun için aşağıdaki komutu kullanın.Bu komut dizindeki klasör ve dosyaları silecektir:

👉 root@debian:/home/darkside# rm -r /backup

Burada -r komutu recursive olarak çalışacak ve /backup dizini içindeki herşeyi silecek ve /backup klasörünüde kaldıracaktır.


Eğer dosyayı izin istemeden zorla hemen silmek isterseniz:

👉 root@debian:/home/darkside# rm -f hello

Lütfen silme işlemlerini dikkatlice yapın -f veya -r ile yapılan silmei şlemleri geri alınamaz !!



Şimdi birazda klasör yönetimi yani klasr oluşturma ve silme üzerinde duralım.


Klasör Oluşturma

Burada yeni bir klasör oluşturmak için mkdir komutunu kullanacağız ve çeşitli parametresinide ele alacağız.İşte basit bir klasör oluşturma komutu:

👉 root@debian:/home/darkside# mkdir newdirectory

Peki üst üste klasör oluşturmak isterseniz.Yani şunun gibi:

👉 root@debian:/home/darkside# mkdir newdir/subdir/underdir

Burada şu hatayı verecektir:


ree

Burada görüldüğü gibi daha newdir dizini olmadığından bu hatayı alırsınız.Eğer bu hatayı atlamak istiyorsanız komutu şu hale getirin:

👉 root@debian:/home/darkside# mkdir -p newdir/subdir/underdir

Burada -p(parent) parametresi eksik olan dizinleri kendi oluşturacaktır ve hatanın önüne geçecektir.Bu komutu çalıştırdıktan sonra klasör yapısına bakmak için:

👉 root@debian:/home/darkside# ls -R newdir

komutunu kullanaibilirsiniz.


Klasör Silme

Klasör silmeyi zaten rm komutu kullanarak göstermiştik.Ancak burada rmdir komutunudada değinelim rmdir komutu sadece boş klasörleri siler eğer klasör içeriğiniz dolu ise şu hatayı alırsınız:


ree

Bunun yerine rm -r yada rm -rf gibi alternatifleri kullanın.


Şimdi en yazımızın en son kısmı olan dosya görüntüleme seçeneklerinede değinip.Bu blog yazısını bitirelim.Eğer sonradan başka bir blog yazısı eklemezsek bu Temel bash komutları konusunun son blogu olacaktır.


Dosya İçeriği Görüntüleme

Önclikle file komutunu kullanarak dosya veya klasör türlerini nasıl görecebileceğimizi görelim:

👉 root@debian:/home/darkside# file new3

Komutu kullanırken bir klasör yada dosya adı verin yeter.Örneğin:


ree

Burada dosyanın türünü ve içeriğin hangi kodlama kullandığını görebilirsiniz.


Bir sonraki komutumuz cat komutu olacaktır.Bu komut ile dosya içeriğini görebilirsiniz.Örneğin:

👉 root@debian:/home/darkside# cat new3

Bu basit komut ile new3 içeriğini doğrudan terminale bastık.Eğer her satırı numaralı olarak basmak isterseniz:

👉 root@debian:/home/darkside# cat -n new3

veya boş satırları atlayı sadece içeriğin olduğu kısmlara numara vermek isterseniz:

👉 root@debian:/home/darkside# cat -b new3

İşte ekran görüntüsü:


ree

cat yerine dosya görüntülemek için daha iyi araçları kullanabiliriz.Bunlar more,less,tail ve head gibi araçlardır.İşte her birinin kullanım örneği:

more ile görüntüleme yapmak için:

👉 root@debian:/home/darkside# more new3

more aracı ile ok tuşları ile yukarı aşağı gidersiniz.


Şimdi ise lesskomutunu kullanalım:

👉 root@debian:/home/darkside# less new3

Burada ise sadece aşağı gitme özelliği vardır.more aracındaki gibi yukarı aşağı değil sadece aşağı gider.


Şimdi tail komutunun nasıl kullanıldığına bakalım.Tail komutu varsayılanda 10 satırı gösterir.Örnek:

👉 root@debian:/home/darkside# tail new3

Ancak satır sayısını değiştirebilirsiniz:

👉 root@debian:/home/darkside# tail -n 2 new3

Burada sadece 2 satırı göstermiş oldu.Tail ile ayrıca yazılan verileri gerçek zamalı görürsünüz:

👉 root@debian:/home/darkside# tail -f new3

Burada new3 içine bişeyler yazın ve kayıt edin.Size gerçek zamanlı yazılan değerleri gösterecektir.


Son olarak ise head komutunu gösterelim.Bu komut varsayılanda sadece 10 satırı gösterir:

👉 root@debian:/home/darkside# head new3

Eğer istediğiniz sayıda bir satır sayısını göstermesini isterseniz:

👉 root@debian:/home/darkside# head -3 new3

Burada 3 satırı göstermesini istedik.



Bu blog yazımızda temel kabuk komutlarını detaylı şekilde ele aldık.zaten birçok komutun anlaşılması ve uygulanması çok basit.


Eğer herhangi bir sorunuz veya yazımızda herhangi bir hata görürseniz bunu yorumlardan yada sosyal medyadan bildirin.


Comments


bottom of page