Cara termudah untuk menautkan ke direktori saat ini sebagai jalur absolut, tanpa mengetikkan keseluruhan string jalur
ln -s "$(pwd)/foo" ~/bin/foo_link
The target
(pertama) argumen untuk ln -s
perintah bekerja relatif ke lokasi link simbolik ini, tidak direktori Anda saat ini. Ini membantu untuk mengetahui bahwa, pada dasarnya, symlink yang dibuat (argumen kedua) hanya menyimpan teks yang Anda berikan untuk argumen pertama.
Karena itu, jika Anda melakukan hal berikut:
cd some_directory
ln -s foo foo_link
dan kemudian memindahkan tautan itu
mv foo_link ../some_other_directory
ls -l ../some_other_directory
Anda akan melihat bahwa foo_link
mencoba menunjuk ke foo
dalam direktori di mana ia berada. Ini juga berfungsi dengan tautan simbolik yang menunjuk ke jalur relatif. Jika Anda melakukan hal berikut:
ln -s ../foo yet_another_link
dan kemudian pindah yet_another_link
ke direktori lain dan periksa ke mana ia menunjuk, Anda akan melihat bahwa itu selalu menunjuk ke ../foo
. Ini adalah perilaku yang dimaksudkan, karena banyak kali tautan simbolik mungkin menjadi bagian dari struktur direktori yang dapat berada di berbagai jalur absolut.
Dalam kasus Anda, saat Anda membuat tautan dengan mengetik
ln -s foo ~/bin/foo_link
foo_link
hanya memegang tautan foo
, relatif terhadap lokasinya. Menempatkan $(pwd)
di depan nama argumen target hanya menambahkan jalur absolut direktori kerja saat ini, sehingga tautan dibuat dengan target absolut.
source_file
(pertama) argumen adalah di mana poin link, yang merupakan verbatim apa yang Anda masukkan pada perintah. Thetarget_file
(kedua) argumen menjadi nama link kecuali apa yang Anda masukkan adalah direktori, dalam hal ini nama link adalah sama dengan basename darisource_file
tetapi ditempatkan di direktoritarget_file
.ln
manual,target
adalah argumen pertama (di mana tautan menunjuk ke ) sedangkan argumen kedua hanya disebut sebagailink
(source
tidak disebutkan).target
dan yang kedualink
( man7.org/linux/man-pages/man1/ln.1.html ). Tetapi dalam BSD (termasuk OS X) yang pertama dipanggilsource
dan yang keduatarget
( freebsd.org/cgi/man.cgi?ln ). Cukup membingungkan.Menggunakan bendera
-r
(--relative
) akan membuat ini berfungsi:sumber
-r
adalah GNUism, yaitu non POSIX sehingga tidak akan berfungsi dalam kasus OP karenaln
perintah OS X standar berbasis BSD.Untuk menyimpan beberapa pengetikan, Anda bisa melakukannya
sumber
*
,?
dan[...]
).bash
, jadi biasanya Anda mengutipnya. Buruk saya, saya harus lebih spesifik.Bagaimana tentang:
sumber