Каковы различия между тем, когда мы создаем новый файл с помощью сенсорной команды, и когда мы создаем новую жесткую ссылку на файл? Пожалуйста, объясните это подробно.
4 ответа
touch
(только с именем в качестве аргумента) просто создает новый (пустой) файл. Этот файл не имеет никакого отношения к любому другому файлу, он автономен.
Создание новой жесткой ссылки (с использованием ln
без ключа -s
) создаст вторую запись каталога для того же "файла". Это означает, что теперь у вас есть две записи каталога (каждая представляет имя), которые обращаются к одному и тому же контенту: если вы добавляете одну из них, то это изменение представляется в другой. Удаление одного из них сохранит другой (поскольку "файл" по умолчанию удаляет только запись каталога). Только "последний" контент будет удален.
«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 содержат две строки.
touch
создаст новый файл, а ln
свяжется с существующим файлом
man ln
и man touch
. Эти команды никак не связаны.
Ссылки не размещают новый индекс, другие записи делают. Вы можете узнать номер инода для файлов, используя
ls -i
(или ls -li
т. д.).
Чтобы найти файл с заданным номером инода:
find -inum 98398
Inode уникальны только в файловой системе. Жесткая ссылка возможна только в пределах одной файловой системы.