Bagaimana saya bisa membuat tautan simbolis di Terminal?

351

Perintah apa yang digunakan untuk membuat tautan simbolik / tautan lunak?

Patrick
sumber

Jawaban:

543
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

Untuk informasi lebih lanjut tentang ln (1) lihat halaman manual .

Path ke symlink adalah opsional; jika dihilangkan, secara lndefault membuat tautan dengan nama yang sama dengan tujuan, di direktori saat ini:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

Untuk membuat symlink untuk mengganti direktori sistem (mis. Jika Anda ingin /Usersmenunjuk ke drive disk lain), Anda perlu menonaktifkan Perlindungan Integritas Sistem . Anda dapat mengaktifkannya kembali setelah symlink diatur.

GRG
sumber
63
Kalau saja halaman manual sejelas jawaban Anda!
Adrian Lynch
izin ditolak: S dapatkah Anda memberi saya petunjuk? mencoba membuat symlink untuk Pengguna sehingga saya dapat menggunakannya di hard disk lain dan SSD baru saja symlink. terima kasih
Ewoks
2
@ patrix Saya telah mengedit jawaban saya untuk menjelaskan; merasa bebas untuk mengedit lebih lanjut.
grg
4
Fakta menyenangkan: asli tidak perlu benar-benar ada. Perintah ln -s "This directory is no longer in use" READMEitu akan sangat sah, dan kemudian siapa pun yang mengeksekusi ls -lakan melihat pesan tersebut.
Edward Falk
1
Untuk referensi di masa mendatang: Anda tidak perlu pindah / Pengguna di macOS untuk menghemat ruang. Anda dapat mengubah jalur direktori home pengguna secara individual di System Preferences di bawah Users & Groups dengan mengklik kanan entri daftar pengguna.
Peter W.
73

Perintah itu disebut ln. Jika digunakan dengan opsi -situ akan membuat tautan simbolik di direktori saat ini:

ln -s /any/file/on/the/disk linked-file
nohillside
sumber
1
Apakah file tertaut harus ada terlebih dahulu? Saya mendapatkan file tidak ditemukan kesalahan pada target.
AlxVallejo
2
File tidak (Anda mendapatkan pesan kesalahan jika itu), tetapi semua direktori di jalur apa pun. Jika Anda buntu, jangan ragu untuk mengajukan pertanyaan baru menggunakan tombol Tanya Pertanyaan di kanan atas. Sertakan tautan ke pertanyaan ini untuk memberikan konteks.
nohillside
Tautan simbolik seharusnya tidak ada sebelum Anda menjalankan perintah ini. Tapi jalur yang valid diperlukan sejauh yang saya tahu. Jika folder file output tidak ada sebelum Anda menjalankan perintah ini, Anda juga akan mendapatkan No such file or directorykesalahan.
Deniz Kaplan
34

Saya tahu pertanyaan ini secara eksplisit menanyakan tentang Terminal, tetapi jika Anda berada di GUI Land dan tidak ingin memasuki Terminal Land, Anda dapat menggunakan SymbolicLinker . Ini menempatkan opsi "Buat Symbolic Link" di menu Layanan Anda di Finder.

Menu konteks untuk folder, menampilkan submenu "Layanan", dengan tautan "Buat Simbol Simbol"

Menu konteks untuk tautan simbolik, dengan "Buat Tautan Simbolik" yang ditampilkan

Ben Leggiero
sumber
3
Saya ingin tahu mengapa ini diturunkan sehingga saya dapat membuat jawaban berkualitas lebih tinggi mulai sekarang :)
Ben Leggiero
10
mungkin karena pertanyaannya adalah "Bagaimana saya bisa membuat tautan simbolik di Terminal?" Tapi saya tidak mengecewakan Anda :)
vedrano
1
@ EdwardFalk Saya pikir di El Capitan, Anda dapat menahan Command+ Optionsambil menyeret file ... akan memperbarui jawabannya nanti
Ben Leggiero
1
@ BenLeggiero Itu membuat alias.
Andy Stewart
2
@ BenLeggerio, Perbedaannya dijelaskan di sini: apple.stackexchange.com/questions/2991/…
MiB
28

Hanya saja ln -s <source> <destination>.

TheSqrtMinus1
sumber
5

ln -s /some/dir/ ~/Desktop/dir

Anda juga dapat membuat symlink untuk direktori menggunakan perintah yang sama

ln -s "$(pwd)" ~/Desktop/dir

Untuk membuat symlink ke direktori saat ini Anda berada di.

Gerald
sumber
2
Sederhana .(titik) akan memberikan pwd. Tidak diperlukan argumen mewah :)
mylogon
@mylogon hahaha saya suka overthink kadang-kadang. jawaban saya disederhanakan!
Gerald
@mylogon saya baru menyadari bahwa .tidak berfungsi pada macOS. belum mencoba di linux. Penggunaan ./menghasilkan ini foo -> ./fooyang menunjuk ke dirinya sendiri.
Gerald
Apa perintah lengkap yang Anda ketikkan?
mylogon