Intereting Posts
Solaris grep и регулярные выражения? Где находится «графическая оболочка» в иерархии «оконная система, оконный менеджер, среда рабочего стола»? Как установить adobe flash tar? Скрытые файлы, начинающиеся с B Для результатов как ps aux, так и ps -ef, как мне найти команды с помощью скобок? Различные версии пакетов в разных хранилищах Как создать виртуальное устройство ALSA, из которого я могу записать все, что воспроизводится? D-Link DWM-157 3G USB-модем не подключается Как я могу переименовать все файлы с одним расширением на другое расширение рекурсивно Какая команда очистить ошибку «ИДЕНТИФИКАЦИЯ ДИСТАНЦИОННОГО ХОЗЯИНА ИЗМЕНЕНА!» Есть ли способ определить, какая версия ядра была скомпилирована модулем ядра? Предоставлять доступ только для чтения к определенным папкам? Как и где метаданные файловой системы кэшируются в Linux В чем преимущество использования pthreads в Linux? Перемещение и пустое / домашнее разделение Ubuntu

Почему ln -s не говорит, что сбой при создании символической ссылки на существующий символический каталог?

При запуске (на linux разные варианты ubuntu):

>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 

Он не работает с ошибкой msg:

 ln: failed to create symbolic link 

Для меня это кажется очень странным поведением? Для этого есть причина?

Потому что во втором ln это не терпит неудачу, он создает

 symlink_dir/dir_2 -> dir_2 

символическая ссылка

Сделайте:

 ls -l symlink_dir/dir_2 

И вы увидите там (возможно, сломанную) символическую ссылку.

Вот как ln предназначен для работы, если целью является каталог (или символическая ссылка на каталог).

Третий ln может потерпеть неудачу, потому что уже существует dir_2 внутри symlink_dir (aka dir_2 ).

Как желательно, указание -n сделает ln fail во второй команде:

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

Заметим, что -v конечно, не имеет отношения к исходу.

Вы можете увидеть, что происходит, и добиться желаемого поведения с помощью опций ln . Используйте этот псевдоним для ln :

 alias ln='\ln -vsn' 

Опции:

  -v, --verbose print name of each linked file -f, --force remove existing destination files -n, --no-dereference treat destination that is a symlink to a directory as if it were a normal file