1

Каковы различия между тем, когда мы создаем новый файл с помощью сенсорной команды, и когда мы создаем новую жесткую ссылку на файл? Пожалуйста, объясните это подробно.

4 ответа4

3

touch (только с именем в качестве аргумента) просто создает новый (пустой) файл. Этот файл не имеет никакого отношения к любому другому файлу, он автономен.

Создание новой жесткой ссылки (с использованием ln без ключа -s ) создаст вторую запись каталога для того же "файла". Это означает, что теперь у вас есть две записи каталога (каждая представляет имя), которые обращаются к одному и тому же контенту: если вы добавляете одну из них, то это изменение представляется в другой. Удаление одного из них сохранит другой (поскольку "файл" по умолчанию удаляет только запись каталога). Только "последний" контент будет удален.

2

«touch» создает новый файл, а жесткая ссылка - это просто другое имя для того же файла.

Попробуйте это с помощью следующих команд:

touch file1.txt
touch file2.txt
touch file3.txt
ln file3.txt file4.txt
echo "Hello world!" >> file1.txt
echo "Hello world!" >> file2.txt
echo "Hello world!" >> file3.txt
echo "Hello world!" >> file4.txt

Проверьте содержимое: file1.txt и file2.txt должны содержать по одной строке. file3.txt и file4.txt содержат две строки.

0

touch создаст новый файл, а ln свяжется с существующим файлом

0

man ln и man touch . Эти команды никак не связаны.

Ссылки не размещают новый индекс, другие записи делают. Вы можете узнать номер инода для файлов, используя

 ls -i

(или ls -li т. д.).

Чтобы найти файл с заданным номером инода:

 find -inum 98398

Inode уникальны только в файловой системе. Жесткая ссылка возможна только в пределах одной файловой системы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .