. и .. являются записи, которые обычно присутствуют в каждом каталоге. Их значение не связано с рабочим каталогом процесса (например, shell), но с каталогом, в котором находится запись.
.. обеспечивает двустороннюю привязку структуры дерева каталогов, а . - удобное имя для обращения к самому каталогу. Путь directory/. совпадает с directory. Теоретически пустую строку можно было бы выбрать для обозначения самой директории, но на самом деле это не так: ls '' не работает, а значение пустой строки было бы неоднозначным, поскольку в начале пути, к которому оно относится, корневой каталог уже: /file1 означает file1 в корневом каталоге или file1 в текущем рабочем каталоге?
Как показало thomasrutter, в качестве обычных записей в каталоге вы можете использовать . и .. на пути. Например, ./-filename можно использовать, чтобы избежать интерпретации символа тире - в качестве введения параметров командной строки. Путь directory1/../directory2 по сути такой же, как ./directory2, который совпадает с directory2.
Файл ( и каталог) имена с . в начале по умолчанию скрыты в Unix-подобных системах, поэтому по умолчанию большинство инструментов не будут показывать каталоги . и ... Это полезно, потому что мы уже знаем, что . и .. обычно присутствуют в каждом каталоге.
Команда ls -a показывает все записи в каталоге. В Nautilus Ctrl + H отображает скрытые записи, но за исключением . и .., потому что они обычно не очень полезны в графическом диспетчере файлов. Для подобного поведения в командной строке вы можете использовать ls -A.
Да, в часто используемой файловой системе они , (как напомнил Джонатан Леффлер). Как мы можем это проверить?
# prepare the directory
cd /tmp ; mkdir testdir1
# test 1
ls -lid testdir1 testdir1/. testdir1/..
1179767 drwxrwxr-x 2 pabouk pabouk 4096 Nov 12 11:52 testdir1
1179767 drwxrwxr-x 2 pabouk pabouk 4096 Nov 12 11:52 testdir1/.
1179650 drwxrwxrwt 14 root root 4096 Nov 12 15:17 testdir1/..
Номер inode (1-й столбец), ссылающийся на структуру данных самого каталога / файла, одинаковый для одного и того же каталога testdir1 и testdir1/.. Количество ссылок (3-й столбец), показывающее количество записей в каталоге, относящихся к inode (каталог / файл), равно 2 сразу после создания каталога, потому что в /tmp и . в /tmp/testdir1 есть testdir1. Индекс /tmp/testdir1/.. (/tmp) имеет 14 ссылок, потому что у него есть 12 подкаталогов, содержащих .. + 2 записи в качестве каждой директории.
# test 2
touch testdir1/tesfile1 # to have a regular file too
debugfs /dev/sda2 -R 'ls -l /tmp/testdir1' | cat
debugfs 1.42.12 (29-Aug-2014)
1179767 40775 (2) 1000 1000 4096 12-Nov-2015 11:52 .
1179650 41777 (2) 0 0 4096 12-Nov-2015 15:46 ..
1179771 100664 (1) 1000 1000 0 12-Nov-2015 11:52 tesfile1
Утилита debugfs читает ext2 ( и более новые) данные файловой системы непосредственно из дисковых секторов (обход файловой системы в ядре Linux).
# test 3
debugfs /dev/sda2 -R 'dump /tmp/testdir1 '>(od -tax1)
debugfs 1.42.12 (29-Aug-2014)
0000000 w nul dc2 nul ff nul soh stx . nul nul nul stx nul dc2 nul
77 00 12 00 0c 00 01 02 2e 00 00 00 02 00 12 00
0000020 ff nul stx stx . . nul nul { nul dc2 nul h si bs soh
0c 00 02 02 2e 2e 00 00 7b 00 12 00 e8 0f 08 01
0000040 t e s f i l e 1 s o c k e t nul nul
74 65 73 66 69 6c 65 31 73 6f 63 6b 65 74 00 00
0000060 nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0010000
Если вы не верите в список каталогов debugfs, вы можете изучить исходный дамп каталога и убедитесь, что записи . и .. действительно присутствуют.
Число индексов установлено в момент форматирования раздела. Обычно количество созданных инодов достаточно для любой цели; однако, если у вас есть очень большое количество очень маленьких файлов, вы можете использовать индексы перед заполнением диска.
Вам нужно найти много тысяч небольших файлов, которые вы используете в системе, использующей и удалять их, или переместить их в раздел, который был специально настроен с очень большим количеством доступных inodes. Невозможно изменить количество inodes, доступных в разделе после его форматирования.
Сценарий, написанный paxdiablo в stackoverflow, может быть удобным способом проверить чрезмерное использование небольшого файла, которым вы не можете быть осознавая. Здесь снова:
#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$
Поместите этот скрипт в текстовый файл ~ / bin / count_em, а затем выполните команду
chmod +x ~/bin/count_em
, чтобы сделать его исполняемым. Если вам нужно было создать каталог ~ / bin, то он еще не будет на исполняемом пути, поэтому просто войдите и снова войдите.
Чтобы запустить программу, просто введите
count_em
, и в нем будут перечислены номера всех файлов в текущем каталоге и подкаталогах по каталогу с наивысшим показателем последнего. Очень удобно!
Число индексов установлено в момент форматирования раздела. Обычно количество созданных инодов достаточно для любой цели; однако, если у вас есть очень большое количество очень маленьких файлов, вы можете использовать индексы перед заполнением диска.
Вам нужно найти много тысяч небольших файлов, которые вы используете в системе, использующей и удалять их, или переместить их в раздел, который был специально настроен с очень большим количеством доступных inodes. Невозможно изменить количество inodes, доступных в разделе после его форматирования.
Сценарий, написанный paxdiablo в stackoverflow, может быть удобным способом проверить чрезмерное использование небольшого файла, которым вы не можете быть осознавая. Здесь снова:
#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$
Поместите этот скрипт в текстовый файл ~ / bin / count_em, а затем выполните команду
chmod +x ~/bin/count_em
, чтобы сделать его исполняемым. Если вам нужно было создать каталог ~ / bin, то он еще не будет на исполняемом пути, поэтому просто войдите и снова войдите.
Чтобы запустить программу, просто введите
count_em
, и в нем будут перечислены номера всех файлов в текущем каталоге и подкаталогах по каталогу с наивысшим показателем последнего. Очень удобно!
Вы также можете отобразить отсортированный список каталогов по числу inodes с помощью этой команды: du --inodes -d 3 / | sort -n | tail
Оттуда вы можете определить, какие каталоги удалить
Я обнаружил, что использование inode происходит из /root/.local и удаляет эту папку.
Вы также можете отобразить отсортированный список каталогов по числу inodes с помощью этой команды: du --inodes -d 3 / | sort -n | tail
Оттуда вы можете определить, какие каталоги удалить
Я обнаружил, что использование inode происходит из /root/.local и удаляет эту папку.