Грузится

Наберите для поиска

Файлы и Папки, погружаемся

Tags: ,

Файлы и Папки, погружаемся

Разобрались с тем, кто такие файлы и папки, как они появились, и как производить над ними различные операции тут. А сегодня посмотрим, как они выглядят. и как получить дополнительную информацию о них, и некоторые другие вещи.

На самом дела файл как и папка это запись в файловой системе, которая представляем собой очень специализированная база данных.
Файловые Системы бывают разные и выбор её должен зависимость от аппаратного оборудования и требований к данной файловой системой. Но на данный момент предположим что бы работаем с обычными жесткими дисками или SSD. Для конечного пользователя они не имеют большой разницы. И мы находимся уже на Linux, значит скорей всего мы используем одну их файловых систем семейства ext, ext2/3/4.

И так, начнем. Запустите оконный терминал или войдите в систему в консоли и запустите команду ls -la что бы увидишь список всех файлов и папок

ls -la

Вот лишь часть вывода на моей системе:

total 1224
drwx------ 101 pavel pavel 20480 Jun 23 07:27 .
drwxr-xr-x 5 root root 4096 Feb 13 2017 ..
drwx------ 3 pavel pavel 4096 Jan 30 2017 .adobe
drwx------ 2 pavel pavel 4096 Nov 22 2017 .android
drwx------ 4 pavel pavel 4096 Nov 23 2017 .Android
drwx------ 4 pavel pavel 4096 Feb 21 2017 .AndroidStudio2.2
drwx------ 4 pavel pavel 4096 Nov 23 2017 .AndroidStudio3.0
drwx------ 4 pavel pavel 4096 Jan 31 2017 .ansible
-rw------- 1 pavel pavel 111 Mar 6 21:55 .apport-ignore.xml
drwxrwxr-x 6 pavel pavel 4096 Jun 4 23:04 .apps
drwx------ 9 pavel pavel 4096 Feb 26 2017 .atom
drwx------ 5 pavel pavel 4096 Feb 28 2017 .atunes
-rw------- 1 pavel pavel 35423 Mar 15 2017 .babel.json
-rw------- 1 pavel pavel 54141 Jun 22 09:06 .bash_history
-rw-r--r-- 1 pavel pavel 220 Jan 25 2017 .bash_logout
-rw-r--r-- 1 pavel pavel 5643 Jan 25 2017 .bashrc
drwxrwxr-x 2 pavel pavel 4096 Jan 25 2017 Books
drwx------ 3 pavel pavel 4096 Apr 3 2017 .boostnote
drwx------ 5 pavel pavel 4096 Jan 28 22:17 Business
drwxrwxr-x 72 pavel pavel 16384 Jun 24 20:52 .cache
drwxr-xr-x 96 pavel pavel 20480 Jun 23 20:53 .config
drwx------ 2 pavel pavel 4096 Nov 10 2017 .curlew
drwxrwxr-x 4 pavel pavel 4096 Jan 29 2017 .dbeaver
drwx------ 3 pavel pavel 4096 Jan 25 2017 .dbus
drwxr-xr-x 2 pavel pavel 4096 Jun 4 22:14 Desktop
drwxr-xr-x 14 pavel pavel 4096 May 20 11:20 Documents
drwx------ 3 pavel pavel 4096 Mar 2 2017 .dotnet
drwxr-xr-x 9 pavel pavel 126976 Jun 23 20:53 Downloads
drwx------ 7 pavel pavel 4096 Jun 23 07:27 .dropbox
drwxrwxr-x 12 pavel pavel 4096 May 2 2017 Dropbox
drwxrwxr-x 2 pavel pavel 4096 Jan 25 2017 .dropbox-bin
drwxr-xr-x 3 pavel pavel 4096 Jun 18 13:14 .dropbox-dist
...

В этом выводе находятся по порядку:
разрешения или права доступа, количество ссылок, владелец, группа, размер, дата последней модификации, имя
Теперь почти по порядку:
Тут первый бит указывает тип: (d) — папка, (-) — обычный файл, есть и другие (p) — для так называемого пайпа pipe, (s) — Юникс сокет, (b) — блочное устройство, (c) — символьное устройство. О всей этой лабуде потом.

Затем идет по 3 бита на права доступа для владельца и группы определенные в следующий полях. На самом деле команда ls представляет информацию о правах доступа в более приятном для человека виде, нежили в битах. В цифровом (бинарном) формате же они выглядят как 001 = 1 — исполнение (x), 010 = 2 — запись (w), 100 = 4 — чтение (r). Ну или любые комбинации. Права доступа можно изменить при помощи команды chmod. Ей можно передать как абсолютное значение в цифровом формате типа chmod 777, или же в формате что добавить что убрать, например chmod +x, chmod -w и так далее. Ну и для кого добавить, а для кого отменить или добавить. Например chmod o-r забрать права на чтение у других (others) это все другие не подходящие под определение владельца или группы.

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

Затем идут тот самый владелец и та самая группа о которой мы уже говорили.

Размер в байтах или в любом другом формате который вы можете попросить от команды ls. Но здесь есть один небольшой трюк. Обратите внимание на то что большинство папок имеет размер 4096 или кратный этому числу. Дело в том что даже пустая папка занимает один блок данных который в моем случаи равен 4096 байтов (4КБ). Содержимое папки и информация о нем храниться в блоках данных. И как и обычный файл он растет, занимая все больше и больше блоков. Из моего примера видно что папка Downloads занимает 126976 байта это 31 блок данных. Если так же при помощи команды ls -la получить содержимое папки Downloads и перенаправить вывод в команду wc -l которая подсчитает количество строк, вот так:

ls -la Downloads | wc -l

в моем случаи это всего лишь 113 элементов это, казалось бы, совсем не много, но длинные имена элементов и их параметры занимают довольно много места.

Затем идет время модификации, которое на самом деле может показывать немного разные вещи в зависимости от настроек файловой системы. Просто она может реагировать на изменение файла и обновлять время последней модификации, а может и не обновлять. Так сказать «экономить» время на таких глупостях. Делается это действительно чаще всего на серверах где важна производительность.

Ну и последним в списке находится имя папки или файла.

Теперь хотелось бы объяснить момент с количеством ссылок. Допустим я создаю папку с именем emptydir командой mkdir, вот так:

mkdir emptydir

и посмотрим на количество ссылок на новую папку при помощи все того же ls -la:

drwxrwxr-x  2 paveld paveld       4096 Jun 25 06:24 emptydir

Как вы видите ссылки уже 2. Это происходит потому что родительская папка имеет ссылку на emptydir, а так же сама emptydir имеет ссылку на саму себя в виде почки. Если попробовать запустить текстовый редактор vim на emptydir то можно обнаружить следующее:

" ============================================================================
" Netrw Directory Listing                                        (netrw v156)
"   /home/paveld/tmp/emptydir
"   Sorted by      name
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:special
" ==============================================================================
../
./

Обратите внимание на любой вывод команды ls -la начинается с двух странных папок это (.) это папка сама и (..)  папка, в которой она находится. Именно так дерево каталогов собирается вместе и обеспечивается простое передвижение по нему.

Tags:

Добавить комментарий

%d такие блоггеры, как: