Linux

符號連結命令行為 ln -s

  • October 23, 2020

如果我發出ln -s source.txt symlink.txt並且symlink.txt不存在,是自動創建的連結文件被呼叫symlink.txt還是命令是 noop?

如果它是一個 noop,如果我只是創建一個空白symlink.txt( touch symlink.txt) 然後執行上一個命令,操作會按計劃進行嗎?

謝謝您的幫助

好吧,這很容易測試:

$ mkdir test; cd test
test$ ln -s source.txt symlink.txt
test$ ls -l
total 0
lrwxrwxrwx 1 ilkkachu ilkkachu 10 Oct 23 18:24 symlink.txt -> source.txt
test$ cat symlink.txt 
cat: symlink.txt: No such file or directory

(將輸出表示為文本對 GNU ls 及其所具有的著色支持並不公平。)

無論是否存在,這些ln -s命令都會創建符號連結。但是,嘗試通過符號連結訪問文件是行不通的,因為指向的文件不存在。使用輸出著色,將連結名稱和目標顯示為紅色(或者無論設置是什麼,反正不是實時連結。)symlink.txt``source.txt``ls

如果symlink.txt存在,ln -s source.txt symlink.txt給出一個錯誤,可以預見。用於ln -sf覆蓋目標文件。

是的,ln將創建連結文件,如果文件存在,它將失敗(除非您使用-for--force選項)。

順便提一句。執行命令或閱讀手冊頁會給你更快的答案;-)

引用自:https://unix.stackexchange.com/questions/616055