Saya memiliki folder "abc". Saya membuat sebuah symlink: ln -s abc abclink
. tetapi kemudian, ketika saya mengetik, cd abclink
dikatakan "Tidak ada file atau direktori".
Saya dapat melihat tautannya, ia memiliki izin "lrwxr-xr-x", mengapa tidak berfungsi? Cara membuatnya bekerja?
mac
symbolic-link
Ecir Hana
sumber
sumber
[directory name]: Not a directory
. Ada solusi yang lebih mungkin?Jawaban:
Biasanya ketika Anda mengalami itu, target Anda tidak valid. yaitu abc tidak ada. Ya, Anda dapat membuat tautan ke hal-hal yang tidak ada.
sumber
ln -s ../some-dir/some-file some-file
vsln -s /dir/some-dir/some-file some-file
Saya memiliki kasus penggunaan yang membingungkan yang akhirnya sama dengan jawaban yang diterima - direktori tujuan tidak ada - tetapi dengan twist tambahan.
Saya sedang membuat symlink ke direktori yang ditentukan dalam variabel lingkungan yang akan kita panggil
FOO
:Ini sepertinya bekerja dengan baik:
Namun, ketika saya mencoba masuk ke
foo
folder, saya akan mendapatkan kesalahan:Ini aneh, karena kami baru saja melihatnya
foo
pasti ada. Selain itu, demikian juga~/project
:Bagaimana symlink dan folder yang menunjuk keduanya ada, tetapi saya tidak bisa menggunakan symlink?
Ternyata penyebabnya adalah bahwa
FOO
variabel lingkungan memiliki tilde~
di dalamnya. Karena saya membungkus variabel ini dalam tanda kutip ketika membuat symlink, tilde tidak melalui ekspansi bash, sehingga symlink yang dihasilkan menunjuk ke path literal,~/project
bukanproject
folder di direktori home saya.sumber
Sumber kemungkinan masalah ini: jika direktori target berisi spasi, Anda tidak perlu memberi tanda kutip di sekitar nilai yang dimasukkan dengan menekan
Tab
tombol, karena Terminal lolos dari spasi dengan garis miring terbalik untuk Anda.Misalnya, dengan asumsi ada direktori
/tmp/Dir With Spaces/
:Anda dapat melihat alasannya dengan melihat output dari
ls -l
:Entah melarikan diri dari spasi di jalur dengan garis miring terbalik, atau lampirkan jalur yang tidak dilepas dalam tanda kutip, tidak keduanya.
sumber