“ln -sf”不会覆盖目录的符号链接

Mar*_*ahl 4 linux symlink ln overwrite

ln -sf
Run Code Online (Sandbox Code Playgroud)

不会覆盖给定目录的符号链接。

参见例如

% ls -ld program*        
drwxr-xr-x 22 b users 4096 Nov 25 14:33 program
drwxr-xr-x 22 b users 4096 Nov 25 14:29 program-201611181546
-rw-r--r--  1 b users    0 Nov 25 14:34 program-current
% ln -fs program-201611181546 program-current
% ls -ld program*                            
drwxr-xr-x 22 b users 4096 Nov 25 14:33 program
drwxr-xr-x 22 b users 4096 Nov 25 14:29 program-201611181546
lrwxrwxrwx  1 b users   18 Nov 25 14:34 program-current -> program-201611181546
% ln -fs program program-current 
% ls -ld program*               
drwxr-xr-x 22 b users 4096 Nov 25 14:33 program
drwxr-xr-x 22 b users 4096 Nov 25 14:34 program-201611181546
lrwxrwxrwx  1 b users   18 Nov 25 14:34 program-current -> program-201611181546
Run Code Online (Sandbox Code Playgroud)

我本以为

lrwxrwxrwx  1 b users   18 Nov 25 14:34 program-current -> program
Run Code Online (Sandbox Code Playgroud)

作为解决方法,我可以明确取消链接。

% unlink program-current 
% ls -ld program*         
drwxr-xr-x 22 b users 4096 Nov 25 14:33 program
drwxr-xr-x 22 b users 4096 Nov 25 14:34 program-201611181546
% ln -fs program program-current
% ls -ld program*               
drwxr-xr-x 22 b users 4096 Nov 25 14:33 program
drwxr-xr-x 22 b users 4096 Nov 25 14:34 program-201611181546
lrwxrwxrwx  1 b users    5 Nov 25 14:35 program-current -> program
Run Code Online (Sandbox Code Playgroud)

但我更愿意ln做这份工作。

这可能吗?如何?

cev*_*ing 5

man ln

SYNOPSIS
  ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
  ln [OPTION]... TARGET                  (2nd form)
  ln [OPTION]... TARGET... DIRECTORY     (3rd form)
  ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

DESCRIPTION
  In  the  1st form, create a link to TARGET with the name LINK_NAME.
  In the 2nd form, create a link to TARGET in the current directory.
  In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Run Code Online (Sandbox Code Playgroud)

您有第三种形式,因为您的链接是目录的链接。

  • 。。。您可以通过使用“-T”标志强制使用第一种形式来达到所需的效果:“ln -Tfs emacs emacs-current”。 (8认同)