Терминал не отвечает на коды клавиши. Они обычно замечаются и интерпретируются приложением. Они приложение могут отправить a cup
(курсор), или вниз упорядочивают (обычно пользование ncurses библиотекой).
Примечание: отредактированный после @StephaneChazelas комментарий
Первое количество ls -l
вывод после блока разрешения является количеством жестких ссылок.
Это - то же значение как то, возвращенное stat
команда в "Ссылках".
Это число является hardlink количеством файла, при обращении к файлу или количеству содержавших записей каталога, при обращении к каталогу.
Файл обычно имеет количество жесткой ссылки 1, но это изменяется, если жесткие ссылки сделаны с ln
команда. См. Справочник Debian.
В Вашем примере, добавляя жесткую ссылку для tempFile2 увеличит ее число каналов:
ln -l
ln tempFile2 tempHardLink
ln -l
И tempFile2 и tempHardLink будут иметь число каналов 2.
Если Вы делаете то же осуществление с символьной ссылкой (ln -s tempFile2 tempSymLink
), значение количества не увеличится.
Каталог будет иметь минимальное количество 2 для '.'
(свяжитесь с собой), и для записи в каталоге ее родителя.
В Вашем примере, если Вы хотите увеличить число каналов tempFolder, создают новый каталог, и число повысится.
ls -l tempFolder
mkdir tempFolder/anotherFolder
ls -l tempFolder
Ссылка от anotherFolder/до tempFolder/(который является ..
) будет добавлен к количеству.
На Unix, обычно, файл является некоторой записью в таблице файлов. Существуют различные виды файлов: регулярные файлы, устройства, символьные ссылки, двери, каналы, сокеты, каталоги...
inode число (из которого Вы видите в выводе ls -i
) индекс в той таблице.
Теперь, Вы не получаете доступ к файлам inode, но путем. Путь является цепочкой записей каталога. Вы заметите, что мы не говорим о папке, но каталога здесь. Поскольку это - то, что каталог (думайте о телефонном каталоге).
Каталог является специальным видом файла, который дает имена многим inodes. Запись каталога является отображением от имени до inode.
Данный файл (inode) может иметь больше чем одно имя в одном каталоге (точно так же, как может быть больше чем одно имя по номеру телефона), и может также иметь имена (записи) больше чем в одном каталоге. Их называют ссылками, которые, как также известно как жесткие ссылки, различали с гибкими ссылками (специальный тип файла, который является указателем на путь).
Файл (inode) отслеживает количество ссылок (записей в любом каталоге), что это имеет, так, чтобы, когда число достигает 0 (когда это является несвязанным с последним каталогом, на это сослались в), это было освобождено.
Это - то число (количество ссылок), который отображен в ls -l
вывод.
Когда файл некаталога создается в первый раз, когда (с open
или creat
(или bind
или mknod
для некоторых типов файлов) системные вызовы), это сделано путем предоставления путь к новому файлу (как "/a/b"
). Что происходит, затем новый файл, и inode выделяется, и новая запись добавляется к каталогу, связанному с "a"
имя в "/"
корневой каталог. Это - начальный канал, таким образом, число каналов является тем.
Больше ссылок может быть добавлено позже с link()
системный вызов ( ln
команда). И ссылки могут быть удалены с unlink()
системный вызов ( rm
команда).
Вы заметите, что файлы каталога типа обычно имеют много ссылок, больше или равных 2.
Теперь при создании каталога Вы звоните mkdir()
системный вызов. Что-то как mkdir("/a/b")
. Что это делает затем, выделяют новый файл каталога типа. В том новом каталоге это автоматически создает две записи:
"."
(точка для каталога). Который является ссылкой на себя. Таким образом, число каналов равняется теперь 1.".."
(для каталога каталога). Который является ссылкой на "/a"
. Так число каналов "/a"
увеличен однимЗатем тот новый каталог связан с "/a"
(запись включена "/a"
для него), таким образом, его число каналов равняется теперь 2. Если a "/a/b/c"
каталог создается, из-за ".."
запись в "/a/b/c"
, число каналов "/a/b"
станет 3.
Большинство Нельдов ограничивает создание дальнейшие ссылки на каталог, потому что они могут вызвать проблематичные циклы. Когда они действительно позволяют a link()
на каталоге обычно только суперпользователь может сделать это.
Некоторые файловые системы как btrfs
отступите от той традиционной структуры каталогов. Вы заметите что числа каналов на каталогах в btrfs
файловые системы всегда являются той даже при том, что те каталоги действительно содержат a "."
запись с тем же inode числом как самостоятельно в них.
То, что число каналов традиционно 2 плюс количество subdirs, имеет свое использование. Например, в:
find . -name '*.c' -print
Если .
не содержит subdirs, но содержит миллионы файлов. Путем проверки числа каналов .
, find
может знать, что нет никакого subdir. Так все find
должен сделать читается содержание каталога, и сообщите о записях тот конец в .c
(как a grep '\.c$'
на некоторых файл мегабайта, никакое грандиозное предприятие). Иначе, find
должен был бы проверить тип каждого файла, чтобы видеть, существуют ли каталоги для убывания в там (приводящий к как многие lstat()
системные вызовы). Конечно, этот вид оптимизации не продолжает работать btrfs
(хотя в современных версиях Linux, тип файлов также хранится в записи каталога для некоторых файловых систем (включая btrfs
) и возвратился getdents(2)
системный вызов раньше получал список записей в каталоге, таким образом, lstat
все еще не необходимо).
.
запись сам по себе, плюс одна для..
записи в каждом из его subdirs. – Stéphane Chazelas 11.05.2013, 01:16ls
мог потратить 2 символа и дать Вам больше информации, и было нетstat(1)
команда, ниfind(1)
ниfsck
, ни символьные ссылки, это было, вероятно, намного более полезно, чем он, сегодня. Это не может быть изменено, не повреждая сценарии оболочки, устройства записи которых имеют долго мимо в/dev/null
; Это был тот путь с тех пор, по крайней мере, 1979. – msw 12.05.2013, 14:31