Temel bash Kabuk Komutları-3
- 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ü:

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

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:

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:

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:

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ü:

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