[su_button url=”http://www.aridoshika.com/2018/05/ls-komutunu-bilenler-icin-linux-101/” target=”blank” style=”flat” icon=”icon: id-badge”]Linux -101 – 1 [/su_button] [su_button url=”http://www.aridoshika.com/2018/06/ls-komutu-bilenler-icin-linux-101-2/” target=”blank” style=”flat” icon=”icon: id-badge”]Linux -101 – 2[/su_button]
LS komutu bilenler için linux 101 serisinde 3. seri ile devam edelim cat ,cp ,mv ,Linkler yaratmak ve dosyaları silmek , Sembolik bağlantılar , rm ve rmdir konularını işliycez
Cat ve cp
Terminalde dosyanın içeriğini görüntülemek için cat komutunu kullanın:
$ cat benikopyala ilkdosya
Şimdi cp komutunun en basit şeklini kullanarak benikopyala dosyasının benikopyaladi isimli bir kopyasını çıkarabiliriz:
$ cp benikopyala benikopyaladi
Detaylı olarak incelersek görürüz ki bu ikisi gerçekten de birbirinden ayrı dosyalardır, inode numaraları farklıdır:
$ ls -i benikopyala benikopyaladi 8919 benikopyaladi 8901 benikopyala
Mv
Şimdi ”benikopyaladi” dosyasını ”benitasidi” olarak isimlendirmek için mv komutunu kullanalım. Bu sefer inode numarası aynı kalmakla birlikte bu inode numarasına sahip olan dosya ismi değişmiş olacaktır.
$ mv benikopyaladi benitasidi $ ls -i benitasidi 8919 benitasidi
Taşınan (move) bir dosyanın inode numarası, söz konusu dosya kaynak dosya ile aynı dosya sisteminde bulunduğu sürece aynı kalır.
Linkler yaratmak ve dosyaları silmek
Katı bağlantılar (hard links)
Daha önce dizin girişleri ve inode’lar arasındaki ilişkiden bahsederken bağlantı terimini kullanmıştık. Aslında Linux altında iki tip bağlantı çeşidi vardır. Daha önce tartıştığımız bağlantılar katı bağlantılardı. Sistem üzerindeki herhangi bir inode herhangi bir miktarda katı bağlantıya sahip olabilir, ve tüm katı bağlantılar ortadan kalkana kadar da sistem üzerinde var olmaya devam edecektir. Yeni katı bağlantılar ln komutu kullanılarak yaratılabilir:
$ cd /tmp $ touch ilklink $ ln ilklink ikincilink $ ls -i ilklink ikincilink 8940 ilklink 8940 ikincilink
Katı bağlantılar, devamı
Görebildiğiniz gibi, katı bağlantılar bir dosyayı ilişkilendirmek için inode seviyesinde çalışmaktadır. Linux sistemlerde, katı bağlantıların bazı kısıtlamaları vardır. Bir kısıtlama, sadece dosyalara katı bağlantılar yapmaya izin verir, dizinlere vermez. ”.” ve ”..” sistem tarafından yaratılmış dizinlere ilişkilenmiş katı bağlantılar olmasına rağmen bu doğrudur. ”root” kullanıcısı bile olsanız, kendinize ait dizinlere ilişkilenmiş yeni katı bağlantılar yaratamazsınız. Katı bağlantıların ikinci kısıtlaması da dosya sistemleri arasında geçiş yapılamamasıdır. Bunun anlamı, / ve /usr dizinleri farklı dosya sistemlerinda bulunuyorsa /usr/bin/bash dizininin içinde /bin/bash dizininin içindeki bir dosyaya katı bağlantı yapamazsınız.
Sembolik bağlantılar
Pratikte, sembolik bağlantılar katı bağlantılardan çok daha sık kullanılırlar. Sembolik bağlantılar özel bir tip dosya olup başka bir dosyaya doğrudan inode üzerinden değilde ismi ile ilişkilenirler. Sembolik bağlantılar bir dosyanın silinmesine engel olmazlar, hedef dosya ortadan kaybolursa, sembolik bağlantı kullanılamaz hale gelir ya da ”kırılır”.
Sembolik bağlantılar, devamı
Bir sembolik bağlantı ln komutuna -s parametresi verilerek yaratılabilir.
$ ln -s ikincilink ucunculink $ ls -l ilklink ikincilink ucunculink -rw-r--r-- 2 knoppix knoppix 0 2003-03-25 16:39 ilklink -rw-r--r-- 2 knoppix knoppix 0 2003-03-25 16:39 ikincilink lrwxrwxrwx 1 knoppix knoppix 10 2003-03-25 16:40 ucunculink -> ikincilink
ls -l çıktısında sembolik bağlantılar normal dosyalardan üç şekilde ayırdedilebilir. Birincisi, bu çıktıdaki ilk sütun dosyanın bir sembolik bağlantı olduğunu belirtmek için l karakterini farkedebilirsiniz. İkincisi,sembolik bağlantının boyutu ilişkilendiği hedef dosyasının karakter sayısını verir (yukarıdaki örnekte ikincilink). Üçüncüsü, son kolon hedef dosyanın ismini görüntüler.
Sembolik Bağlantılar, Ayrıntılar
Sembolik bağlantılar genelde katı bağlantılardan daha esnektir. Dizinler de dahil olmak üzere herhangi bir çeşit dosya sistemi nesnesi için sembolik bağlantı yaratmanız mümkündür. Ayrıca, sembolik bağlantıların yürütülmesi yollara bağlı olduğu için, mükemmel bir şekilde başka bir dosya sistemi üzerinde yer alan nesneye de sembolik bağlantı oluşturabilirsiniz. Fakat bu durum da sembolik bağlantının anlaşılmasını biraz zorlaştırabilir.
Sembolik Bağlantılar, Ayrıntılar
/tmp isimli dizin altında, /usr/local/bin isimli dizine sembolik bağlantı yaratmak istediğimiz bir durum düşününüz. Bu durumda yazmamız gereken:
$ ln -s /usr/local/bin bin1 $ ls -l bin1 lrwxrwxrwx 1 knoppix knoppix 14 2003-03-25 16:42 bin1 -> /usr/local/bin Ya da alternatif olarak: $ ln -s ../usr/local/bin bin2 $ ls -l bin2 lrwxrwxrwx 1 knoppix knoppix 16 2003-03-25 16:43 bin2 -> ../usr/local/bin
Sembolik Bağlantılar, Ayrıntılar
Gördüğünüz gibi, her iki sembolik bağlantı da aynı dizini göstermektedir. Fakat, eğer ikinci sembolik
bağlantı başka bir dizin içerisine taşınırsa, bu bağlantı bağıl yol yüzünden ”kırılmış” (broken) olacaktır.
$ ls -l bin2 lrwxrwxrwx 1 knoppix knoppix 16 2003-03-25 16:43 bin2 -> ../usr/local/bin $ mkdir yenidir $ mv bin2 yenidir $ cd yenidir $ cd bin2 bash: cd: bin2: Böyle bir dosya ya da dizin yok
/tmp/usr/local/bin dizini mevcut olmadığı için, artık bin2 bağlantısı ile dizin değiştiremeyiz. Bir başka deyişle bin2 bağlantısı artık kırılmıştır.
Sembolik Bağlantılar, Ayrıntılar
Bu yüzden bazen bağıl yol bilgisi ile sembolik link yaratmaktan kaçınmak iyi bir fikir olabilir. Fakat sembolik linklerin kullanışlı olduğu bir çok durum da vardır. /usr/bin altında yer alan bir program için başka bir isim yaratmak istediğiniz bir örneği ele alalım:
$ ls -l /home/knoppix/.Xdefaults -rw-r--r-- 1 knoppix knoppix 893 2000-02-28 03:26 /home/knoppix/.Xdefaults
Sembolik Bağlantılar, Ayrıntılar
root kullanıcısı olarak, ”.Xdefaults” için ”xd” adında başka bir isim yaratmak istiyor olabilirsiniz. Bu örnekte, komut satırlarında yer alan # işaretinden de açıkça anlaşıldığı gibi root haklarına sahibiz
# cd /home/knoppix # ln -s /home/knoppix/.Xdefaults xd
Bu çözüm çalışacak olsa da, her iki dosyayı da /usr/local/bin altına taşımaya karar verdiğimiz anda bu durum problem yaratacaktır:
$ mv /home/knoppix/.Xdefaults /home/knoppix/xd /usr/local/bin
Çünkü sembolik bağlantımız için tam yol kullanmış durumdayız, xd halen /home/knoppix/.Xdefaults dosyasını göstermektedir ki bu bağlantı artık mevcut değildir, yani kırılmıştır. Bağıl yol ve tam yolların her ikisinin de çok faydalı olduğu durumlar vardır. Sonuçta kendi uygulamanıza en uygun olan tipi seçmeniz gerekmektedir. Genellikle bağıl yol ya da tam yol düzgün bir şekilde çalışır. Bu durumda aşağıdaki örnek çalışacaktır:
$ cd /home/knoppix $ ln -s .Xdefaults xd $ ls -l xd lrwxrwxrwx 1 knoppi knoppix 10 2003-04-11 14:54 xd -> .Xdefaults
RM
Artık cp, mv ve ln komutlarının nasıl kullanıldığını biliyoruz, şimdi nesneleri dosya sistemi üzerinde kaldırmayı öğrenmenin zamanı gelmiştir. Normalde bu işlem rm komutuyla yapılmaktadır. Dosyayı kaldırmak için basitçe bunları komut satırında belirlemek gerekmektedir.
$ cd /tmp $ touch dosya1 dosya2 $ ls -l dosya $ ls -l dosya1 dosya2 -rw-r--r-- 1 knoppix knoppix 0 2003-03-25 16:53 dosya1 -rw-r--r-- 1 knoppix knoppix 0 2003-03-25 16:53 dosya2 $ rm dosya2 $ ls -l dosya1dosya2 ls: dosya2: Böyle bir dosya ya da dizin yok -rw-r--r-- 1 knoppix knoppix 0 2003-03-25 16:53 dosya1
RMDİR
Dizinleri kaldırmak için iki seçeneğiniz var. Dizinin altındaki bütün nesneleri yok edebilir ve sonra rmdir kullanarak dizinin kendisini kaldırabilirsiniz:
$ mkdir benimdir $ touch benimdir/dosya1 $ rm benimdir/dosya1 $ rmdir benimdir
RM ve dizinler
rm komutunun özyineli seçeneklerini kullanıp rm’e belirttiğiniz dizini içerdiği nesnelerle birlikte kaldırmasını söyleyebilirsiniz:
$ rm -rf benimdir
Genel olarak bir dizin ağacını kaldırmak için tercih edilen rm -rf ’dir. rm -f kullanırken dikkatli olun, çünkü bunun gücü iyi veya kötü niyetli olarak kullanılabilir.
Bu serimizinde sonuna geldik bir sonraki serimizde ” JOKER KARAKTERLER VE DÜZENLİ İFADELER” konularından devam edicez
Comments