13 Temmuz 2022 Çarşamba

Symbolic Links veya Softlink

Giriş
Özet olarak şöyle yaparız
#Create symbolic link
ln -sf /var/name.txt /etc/name.txt

#Remove symbolic link
unlink /etc/name.txt

#or remove the actual file
rm /etc/name.txt
Symbolic Link Yaratma
ln komutu kullanılır. Söz dizimi şöyle. İlk parametre gerçek dosya ismi, ikinci parametre softlinkfile ismidir.
ln -s <target> <link-name>
softlink (bir diğer ismiyle symbolic link) oluşturur. Symbolic link için eskiden fast ve slow gerçekleştirimleri vardı.  Açıklaması şöyle. Fast gerçekleştirim biraz daha optimize bir şekilde symbolic link'i depoluyor.
As for the "slow" / "fast" symbolic links, they are now a bit of history. Most filesystems have space in their inode tables of their directories. If the file is small enough to fit into the inode table itself, the file isn't created with its own block number, but rather a flag is set in the inode table and the contents of the file is stored in the inode entry directly. This only works for very small files, and symlinks are one of those kinds of files.
ln komutu ile bu özellikleri kontrol etmenin imkanı yok. Gerçekleştirim tamamen dosya sistemine bağlı. Açıklaması şöyle
There’s no way to tell ln to create “fast” or “slow” symlinks, the file system determines how it stores symlinks.
Örnek
Şöyle yaparız.
$ ln -s "hello world" README.txt
$ ls -l
total 0
lrwxr-xr-x  1 kk  wheel  11 Sep 15 11:39 README.txt -> hello world
Örnek
Şöyle yaparızsourcefile silinirse softlinkfile işe yaramaz.
ln -s sourcefile softlinkfile
Örnek
Şöyle yaparız
ln -s original_file my_symlink
cat my_symlink > original_file
Bu komut aslında şununla aynıdır
cat original_file > original_file
Açıklaması şöyle
In any shell command > some_file will first open and truncate (zero) some_file and then execute command, writing the result to some_file.

So if you cat x > x then the shell will open and truncate x, then cat x will open and read the truncated file writing all of it's zero bytes.
Örnek
Eğer link-name verimezse target'ın en son kısmı kabul edilir. Eğer target /path/dir ise dir kabul edilir. Aşağıdaki örnekte root'a soft link yartılmaya çalışılıyor ve link-name belirtilmiyor. Bu durumda ./ yaratılamadı hatası alıyoruz.
~$ ln -s /
ln: failed to create symbolic link './': File exists

Hiç yorum yok:

Yorum Gönder