В ответ на вопрос the_undefined о том, как удалить жесткую ссылку в каталог, не удаляя содержимое других каталогов, с которыми оно связано: насколько я могу судить, это невозможно сделать из командной строки с помощью встроенного команды. Тем не менее, эта маленькая программа (вдохновленный пост Фримена) будет делать это:
#include <unistd.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
if (argc != 2) {
fprintf(stderr,"Use: hunlink <dir>\n");
return 1;
}
int ret = unlink(argv[1]);
if (ret != 0)
perror("unlink");
return ret;
}
Чтобы следовать на с примером Фримена,
$ gcc hunlink.c -o hunlink
$ echo "foo bar" > child1/baz.txt
$ ./hunlink parent/clone2
будет удалить жесткую связь на родительском/clone2, но оставить ребенка1 каталог и файл child1/baz.txt.
Это должно быть на суперпользователя, если вы заинтересованы в том, чтобы доступ к этой функции в качестве пользователя из командной строки. Если вы хотите сделать это программно, это будет другая история :-) – Joey