Bagaimana saya bisa membuat tautan simbolis di Terminal?


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.


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

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


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


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.