Linux
在一個命令上重新創建新連結並刪除舊連結
根據 ln 手冊頁:
man ln -f, --force remove existing destination files
據我所知,如果我想重新創建指向某個目標目錄/文件的新連結
我可以簡單地做
ln -s -f some_directory new_link
但這不是我從我的 linux/solaris 機器上得到的
例如
[u@h w]# mkdir dir1 [u@h w]# ln -s dir1 link [u@h w]# ls -l drwxr-xr-x 2 root root 4096 Mar 16 20:26 dir1 lrwxrwxrwx 1 root root 4 Mar 16 20:27 link -> dir1 [u@h w]# ln -s -f dir1 new_link
現在我接受看到 new_link 現在指向 dir1 而“連結”不存在但連結仍然指向 dir1 嗎?
如何在一個命令中重新創建新連結並同時刪除舊連結?
(我不想使用 rm 命令)
[u@h w]# ls -l drwxr-xr-x 2 root root 4096 Mar 16 20:26 dir1 lrwxrwxrwx 1 root root 4 Mar 16 20:27 link -> dir1 lrwxrwxrwx 1 root root 4 Mar 16 20:28 new_link -> dir1
其他不同的例子
# # mkdir dir # # ln -s dir link # # mv dir dir_new # ls -l total 32 drwxr-xr-x 2 root root 117 Mar 16 21:44 dir_new lrwxrwxrwx 1 root root 3 Mar 16 21:44 link -> dir # ln -s -f dir_new link ln: cannot create link: File exists
是否可以更新目前連結以指向新目錄/文件
(沒有得到文件存在?),
還是強制在不同的目錄上再次創建連結?
該
-f
選項允許您使用新連結覆蓋目標文件,即與您創建連結的名稱相同的文件。它不檢查同一目錄中的其他連結。例子:
$ touch file1 $ touch file2 $ ln -s file1 link1 $ ls -l total 8 -rw-r--r-- 1 jenny staff 0 Mar 16 21:13 file1 -rw-r--r-- 1 jenny staff 0 Mar 16 21:13 file2 lrwxr-xr-x 1 jenny staff 5 Mar 16 21:13 link1 -> file1 $ ln -s file2 link1 ln: link1: File exists $ ln -s -f file2 link1 $ ls -l total 8 -rw-r--r-- 1 jenny staff 0 Mar 16 21:13 file1 -rw-r--r-- 1 jenny staff 0 Mar 16 21:13 file2 lrwxr-xr-x 1 jenny staff 5 Mar 16 21:14 link1 -> file2
如果您只是想移動連結的名稱,而不是被呼叫
link1
它應該被呼叫newlink
,只需移動它:$ mv link1 newlink $ ls -l total 8 -rw-r--r-- 1 jenny staff 0 Mar 16 21:13 file1 -rw-r--r-- 1 jenny staff 0 Mar 16 21:13 file2 lrwxr-xr-x 1 jenny staff 5 Mar 16 21:14 newlink -> file2
如果您使用的是目錄而不是文件,則需要添加選項
-n
以及-f
:$ ls -l total 16 drwxrwxr-x 2 jenny jenny 4096 Mar 18 10:37 dir1 drwxrwxr-x 2 jenny jenny 4096 Mar 18 10:37 dir2 $ ln -s dir1 link1 $ ls -l total 20 drwxrwxr-x 2 jenny jenny 4096 Mar 18 10:37 dir1 drwxrwxr-x 2 jenny jenny 4096 Mar 18 10:37 dir2 lrwxrwxrwx 1 jenny jenny 4 Mar 18 10:37 link1 -> dir1 $ ln -s -n -f dir2 link1 $ ls -l total 20 drwxrwxr-x 2 jenny jenny 4096 Mar 18 10:37 dir1 drwxrwxr-x 2 jenny jenny 4096 Mar 18 10:37 dir2 lrwxrwxrwx 1 jenny jenny 4 Mar 18 10:38 link1 -> dir2