기존 심볼릭 링크 디렉토리에 대한 심볼릭 링크를 생성할 때 ln -s가 실패하라고 지시하지 않는 이유는 무엇입니까?

기존 심볼릭 링크 디렉토리에 대한 심볼릭 링크를 생성할 때 ln -s가 실패하라고 지시하지 않는 이유는 무엇입니까?

런타임(다른 Linux 우분투 버전):

>ln -s dir_1 symlink_dir
>ln -s dir_2 symlink_dir

실패했다고 말하지 않고 실패합니다. 그러나 파일에 대해 동일한 작업을 수행하거나 옵션에 v를 추가하면 실패했다는 메시지가 표시됩니다.

>ln -s file_1 symlinkg_file
>ln -s file_2 symlinkg_file

또는

>ln -sv dir_1 symlink_dir
>ln -sv dir_2 symlink_dir

오류 메시지와 함께 실패합니다.

ln: failed to create symbolic link

이것은 나에게 매우 이상한 행동처럼 보입니까? 이유가 있나요?

답변1

두 번째 프로세스에서는 ln실패하지 않기 때문에

symlink_dir/dir_2 -> dir_2

심볼릭 링크

어떤 것을 만들어:

ls -l symlink_dir/dir_2

거기에 (아마도 깨진) 심볼릭 링크가 보일 것입니다.

ln이는 대상이 디렉토리(또는 디렉토리에 대한 심볼릭 링크)인 경우 작동하는 방식입니다.

세 번째 작업은 이미 내부 작업 (일명 )이 ln있기 때문에 실패할 수 있습니다 .dir_2symlink_dirdir_2

답변2

원하는 경우 두 번째 명령이 실패 -n하도록 지정합니다.ln

$ ln -ns realdir symdir
$ ln -ns realdir symdir
ln: creating symbolic link `symdir' to `realdir': File exists

물론 이는 -v결과와는 아무런 관련이 없습니다.

답변3

옵션을 통해 무슨 일이 일어나고 있는지 확인하고 ln원하는 동작을 구현할 수 있습니다. 다음 별칭을 사용하세요 ln.

alias ln='\ln -vsn'

ln옵션:

   -v, --verbose
          print name of each linked file
   -s, --symbolic
          make symbolic links instead of hard links
   -n, --no-dereference
          treat destination that is a symlink to a directory as if it were a normal file

관련 정보