Skip to main content 41q.ru

Файловая Система

Файлы

Команда cat показывает, как выглядит файл. Команда od (octal dump – восьмеричный дамп) выводит видимое представление всех байтов файла. Параметр -c означает «интерпретировать байты как символы». Если задан параметр -b, то будет показано и восьмеричное представление байтов:

none code snippet start

% cat junk
now is the time
for all good people
% od -cb junk
0000000    n   o   w       i   s       t   h   e       t   i   m   e  \n
          156 157 167 040 151 163 040 164 150 145 040 164 151 155 145 012
0000020    f   o   r       a   l   l       g   o   o   d       p   e   o
          146 157 162 040 141 154 154 040 147 157 157 144 040 160 145 157
0000040    p   l   e  \n                                                
          160 154 145 012                                                
0000044

none code snippet end

Между прочим, то, что восьмеричным числам придано такое значение, – это наследие PDP11, для которой предпочтительной была восьмеричная нотация. Для других машин больше подходит шестнадцатеричная запись – параметр -x позволяет выводить в таком виде.

!!! Warning -x выводит в шестнадцатеричном виде “hexadecimal shorts”, т.е. 2 байта. Чтобы посмотреть нормально, т.е. 1 байт - 1 символ, надо использовать -t x1

none code snippet start

% od -c -t x1 junk 
0000000    n   o   w       i   s       t   h   e       t   i   m   e  \n
           6e  6f  77  20  69  73  20  74  68  65  20  74  69  6d  65  0a
0000020    f   o   r       a   l   l       g   o   o   d       p   e   o
           66  6f  72  20  61  6c  6c  20  67  6f  6f  64  20  70  65  6f
0000040    p   l   e  \n                                                
           70  6c  65  0a

none code snippet end

!!! Макось поставляется с утилитой Hexdump . В ней есть наглядный вывод в две разделенные колоночки

none code snippet start

% hexdump -C junk 
00000000  6e 6f 77 20 69 73 20 74  68 65 20 74 69 6d 65 0a  |now is the time.|
00000010  66 6f 72 20 61 6c 6c 20  67 6f 6f 64 20 70 65 6f  |for all good peo|
00000020  70 6c 65 0a                                       |ple.|
00000024

none code snippet end

Посмотреть каталог вглубь, поиск по-имени

Пользователь может забыть и то, куда он положил файл, и то, какие вообще файлы у него есть. Решить эту проблему поможет пара команд, просматривающих каталоги. Команда ls весьма полезна при поиске файлов, но она не просматривает подкаталоги.
*Большинство современных реализаций UNIX допускают использование команды с параметром ls –R для рекурсивного просмотра подкаталогов. – Примеч. науч. ред.

Команда du имеет параметр –a (all – все), при задании которого выводятся все файлы каталога. Если среди файлов есть каталоги, то du обработает и их:

sh code snippet start

$ du a
2 ./recipes/pie/apple
3 ./recipes/pie/crust
6 ./recipes/pie
3 ./recipes/cookie/choc.chip
4 ./recipes/cookie
11 ./recipes
1 ./junk
13 .
$

sh code snippet end

Вывод команды du -a можно перенаправить на grep, если требуется найти определенный файл:

sh code snippet start

$ du -a | grep choc
3 ./recipes/cookie/choc.chip
$

sh code snippet end

!!! Находчиво. Я для поиска по-файлам видел только Find .
Например, find . -name '*filename*'.

Каталоги, устройства, иерархия

Оставлю на потом. Хочу скорее нырнуть в оболочку.