Menghubungkan ke suatu direktori memberikan hasil yang berbeda dengan ls -l
bergantung pada apakah saya ln -s dir
atau ln -s dir/
. Tetapi apa perbedaan yang sebenarnya, dan mana yang harus saya pilih mengapa?
30
Tidak ada perbedaan. (Akan ada perbedaan jika target itu bukan direktori yang ada.)
Slash terakhir mungkin berakhir di sana karena penyelesaian shell: dengan beberapa konfigurasi, ln -s tar
TabSpacelink
selesai ln -s target/ link
.
foo -> bar/
kemudianfoo/qux
setara denganbar//qux
. Sementara judul pertanyaan, secara formal, tidak termasukfoo -> bar/
, saya juga membahas kasus itu dalam jawaban saya di sana.Satu-satunya hal yang dapat saya pikirkan adalah bahwa ia "melindungi" Anda dari seseorang yang menghapus direktori dan membuat file.
Versi dengan garis miring pecah ketika target diganti dengan file.
sumber
Pertanyaan menarik. Saya telah membuat tes kecil:
Seperti yang Anda lihat, tidak ada perbedaan dalam jumlah panggilan sistem (setidaknya untuk ls) dan jejak terlihat sangat mirip. Namun, ini hanya tes dump dan saya tidak yakin - mungkin ada beberapa perbedaan.
sumber
Pertanyaan Anda sebenarnya tentang perilaku
ls
program.1) Jika Anda melakukan di
ls -l $dir
mana $ dir sebenarnya adalah symlink, Anda mendapatkan informasi tentang symlink.2) Jika Anda melakukan di
ls -lL $dir
mana $ dir adalah symlink ke direktori, Anda mendapatkan informasi tentang direktori target.3) Jika Anda melakukannya
ls -l $dir/.
, symlink harus diikuti dan memberikan informasi tentang direktori target.4) Jika ya
ls -l $dir/
, hasilnya mungkin sama dengan # 1 atau mungkin sama dengan # 3 tergantung pada versi mana yangls
sedang digunakan. Saya sudah terbiasa dengan versi lama Solaris yang melakukannya seperti # 1 dan terkejut oleh Linux yang melakukannya seperti # 3.Tanpa trailing slash jika Anda mungkin khawatir apakah nama direktori give adalah direktori aktual versus symlink ke direktori.
Dengan trailing slash jika Anda lebih peduli tentang file dalam direktori daripada direktori itu sendiri.
sumber