Информационные технологииStfw.Ru 🔍

Перемещение по файловой системе и поиск файлов

🕛 22.05.2009, 13:03
Имена файлов
В стандартной файловой системе Linux имена файлов могут быть длиной до 255 символов. Имена файлов в Linux чувствительны к регистру символов. В именах файлов лучше всего использовать только буквы от a до z (A-Z), цифры и символ подчеркивания (_). Файлы, имена которых содержат пробелы, могут быть неправильно обработаны некоторыми утилитами и приложениями. В именах файлов недопустимо использование следующих символов:
# & * ? [] ~ ! <> ` ; () {} В Linux не требуется использование суффиксов (расширений). Суффикс - это часть названия файла, идущая после точки. При использовании суффиксов следует руководствоваться установленными или принятыми на практике стандартами. Файлы, начинающиеся с точки, называются скрытыми файлами и по умолчанию не отображаются в списке файлов каталогов. Для отображения списка всех файлов, включая скрытые, следует использовать команду ls -a. Если у файла нет суффикса, можно ввести команду file <имя файла> и нажать ввод. На экран будет выведено короткое сообщение с информацией о типе данных, содержащихся в файле.


Каталоги и типичное дерево каталогов
Файловая система Linux организована в виде иерархической структуры каталогов, на вершине которой расположен корневой каталог (/). Структура каталогов не привязана к конкретному устройству хранения информации (диску). Она может располагаться на двух или более физических дисках и может включать каталоги с других компьютеров сети. В каждый момент времени один каталог является текущим (рабочим). Положение этого каталога в файловой системе задаетсяего полным (абсолютным) путем (например, /home/suzanne/Documents/Essays). В рабочем каталоге можно использовать и относительные пути. Например, находясь в каталоге /home/suzanne/Documents, вы можете ввести команду cd Essays для перехода в каталог /home/suzanne/Documents/Essays.

Имена каталогов и используемые в них символы:

. Текущий рабочий каталог
.. Родительский каталог
~ Домашний каталог текущего пользователя
/ Корневой каталог
../dir Другой подкаталог родительского каталога
/dir1/dir2/dir3/dir4 Полный путь
dir4 Относительный путь
Чтобы обратиться к домашнему каталогу из командной строки, можно воспользоваться переменной окружения $HOME или символом тильды (~). Символ тильды можно использовать и для идентификации домашнего каталога другого пользователя системы. Например, запись ~chris будет интерпретирована командной оболочкой как домашний каталог пользователя с идентификационным именемchris (вероятнее всего, это будет каталог /home/chris). Для идентификации каталогов в командной строке можно использовать символ точки (.), обозначающий текущий рабочий каталог; символ "две точки" (..), обозначающий каталог, расположенный на один уровень выше текущего рабочего каталога; и переменную окружения $OLDPWD, соответствующую каталогу, который являлся текущим до момента последнего изменения каталога.

Стандартная структура каталогов:

/ Корневой каталог. Содержит самые важные файлы для запуска системы и служит родительским каталогом для всей структуры
/bin В данном каталоге хранятся наиболее распространенные пользовательские команды Linux, такие как ls, sort, date, chmod и др.
/boot Файлы, используемые при загрузке системы
/dev Файлы этого каталога представляют собой "точки" доступа к различным устройствам системы, в число которых входят устройства терминалов (tty*), дисководы (fd*), жесткие диски (hd*), диски в оперативной памяти (ram*) и накопители CD-ROM (cd*). (Как правило, пользователи осуществляют доступ к этим устройствам непосредственно через файлы устройств.)
/etc Файлы системных настроек и сценариев. Среди наиболее важных файлов - скрипты инициализации системы. Эти скрипты хранятся в каталогах /etc/rc0.d, /etc/rc1.d, /etc/rc2.d и т.д, соответстующих уровням исполнения системы (run level). Загрузка системы управляется скриптами /etc/rc и /etc/rc.local. Здесь находится подкаталог default, где хранятся параметры по умолчанию многих команд
/home В этом каталоге хранятся домашние каталоги пользователей системы, имеющих учетную запись
/lib Библиотеки общего пользования, в т.ч. библиотечные файлы языка C. Стандартные названия библиотечных файлов имеют вид lib*.so, где * - это один или более символов, определяющих содержимое библиотеки.
/lost+found Каталог "потерянных" файлов. Ошибки целостности файловой системы, возникающие при неправильном останове Linux или аппаратных сбоях, могут привести к появлению т.н. "безымянных" файлов - структура и содержимое файла являются правильными, однако для него отсутствует имя в каком-либо из каталогов. Программы проверки и восстановления файловой системы помещают такие файлы в каталог /lost+found под системными числовыми именами.
/mnt Предоставляет каталоги для подключения различных устройств, таких как удаленные файловые системы и съемные устройства (накопители CD-ROM, дисководы и т.д.)
/opt Каталог, в который устанавливается коммерческое программное обеспечение
/proc Виртуальная файловая система, хранящая информацию ядра и процессов
/root Домашний каталог суперпользователя
/sbin Важные системные утилиты, используемые при загрузке
/tmp Место для хранения временных файлов
/usr Место для хранения файлов, которые должны быть доступны в пределах системы, включая пользовательские утилиты и программы (/usr/bin), документацию (/usr/share/doc), библиотеки, используемые программами, установленными пользователями (/usr/lib), программы, установленные пользователями на данном компьютере (/usr/local), руководство (/usr/share/man), не жизненно важные утилиты для системного администрирования (/usr/sbin), файлы заголовков (/usr/include)
/var Файлы данных переменной длины, включая буферные каталоги почтовых программ и принтеров.


Файловая система Linux и файловые системы компании Microsoft
Несмотря на большое сходство с файловыми системами MS-DOS и Windows 9x/2000, файловая система Linux имеет несколько существенных отличий:
- В файловых системах MS-DOS и Windows имена дисководов соответствуют различным устройствам хранения информации (например, дисковод А: представляет накопитель на гибких дисках, а дисковод С: - жесткий диск). В Linux все устройства хранения размещены в единой иерархии файловой системы. Т.о., каталог /usr вполне может соответствовать второму жесткому диску, а каталог /mnt/rem1 - файловой системе удаленного компьютера, невидимой для пользователя.
- Вместо использования для отделения друг от друга имен каталогов символа обратной косой черты в Linux используется символ прямой косой черты. Т.о., каталогу C:\home\chris в операционных системах Microsoft соответствует каталог /home/chris в операционной системе Linux.
- Обычно имена файлов в операционной системе DOS имеют расширения (например, .txt для текстовых файлов и .doc для файлов текстового процессора Word). Несмотря на то, что этому соглашению можно следовать и в Linux, трехсимвольные расширения файлов не имеют здесь такого решающего значения. Расширения файлов в Linux удобно использовать только для определения типа файла.
- Каждый файл и каталог в операционной системе Linux имеет ассоциированные с ним права доступа и владельца. Что же касается операционных систем Microsoft, то здесь средства безопасности различны в различных системах. Поскольку DOS и Windows изначально разрабатывались как однопользовательские операционные системы, концепция принадлежности файлов не была встроена в них на стадии разработки. Для решения этой проблемы в более поздних версиях Windows появилась возможность определения свойств файлов и каталогов.

Маски shell
При необходимости выборочного отображения списка файлов или поиска нужных файлов в файловой системе следует использовать маски интерпретатора (маски поиска).
Символы, используемые в масках:

* Один или более произвольных символов
? Один произвольный символ
[символы] Любой из заданных символов
[символ1-символ2] Любой символ из диапазона символ1-символ2
[!символы] Любой символ, кроме заданных


Перечень команд

cd [каталог | путь]
Смена текущего каталога. При вводе команды без параметров происходит переход в домашний каталог текущего пользователя. Это одна из встроенных команд оболочки, не являющаяся внешней утилитой.

dirs
Отображает список каталогов, содержащихся в стеке каталогов. Для добавления каталога к стеку используется команда pushd, а для извлечения его оттуда - popd. Параметр -l показывает полные пути к каталогам.

echo [строка]
Отображает указанную строку на дисплее. Эта команда может использоваться также для отображения значений переменных и функций.

file имя файла
Отображает тип содержимого файла (текст, выполняемый файл, данные). Для некоторых типов данных возможно отображение подробной информации, включая название утилиты, создавшей эти данные.

find маска
find [путь] [параметр поиска]
В простой форме (find маска) эта команда ищет в текущем каталоге файлы, имена которых соответствуют указанной маске. Указание пути дает возможность вести поиск в определенном каталоге и всех его подкаталогах. При задании параметров поиска, требующих сравнения чисел, пишите +n для поиска файлов, у которых этот параметр больше или равен n, и -n для поиска файлов, у которых параметр меньше или равен n. Если указать просто n, то будут найдены только файлы, у которых значение этого параметра в точности равно n.

Параметр Действие
-name имя_файла Поиск файлов, имена которых соответствуют указанной маске. Остальные параметры см. справку по find, раздел TESTS.

free
Отображение информации об оперативной памяти (в килобайтах): полный объем доступной памяти, объем используемой памяти, свободная память, общая память, объем буферов ядра, кэшируемая память, размер файла подкачки, объем используемой памяти в файле подкачки, объем свободной памяти в файле подкачки.

locate [маска]
Позволяет быстро найти файлы с помощью поиска по базе данных имен файлов, а не по дереву каталогов. Для создания базы используется команда locatedb. По умолчанию locate использует поиск подстроки, поэтому использовать символ-заменитель для поиска нескольких файлов, содержащих подстроку в своих именах, не обязательно. База данных не отражает изменения в файловой системе, произошедшие с момента ее последнего обновления системным администратором. Для автоматического обновления базы данных через произвольные промежутки времени
можно использовать cron. См. также updatedb.

ls [параметры] [маска]
Отображает файлы в текущем каталоге в алфавитном порядке с учетом регистра символов в несколько колонок. При задании маски выводятся только файлы, ей соответствующие. Идентична команде dir.

Параметр Результат
-1 Каждый файл с новой строки
-a Включать в список скрытые файлы, имена которых начинаются с точки
-A Отобразить список всех файлов в каталоге, включая скрытые, не отображая символы, соответствующие текущему (.) и родительскому (..) каталогам
-B Не отображать резервные файлы, имена которых начинаются с символа ~
-d Отобразить список имен подкаталогов, не выводя их содержимое
-F Отобразить тип файла при помощи символа, добавляемого к выводимому имени файла: * - исполняемый файл / - каталог = - сокет | - именованный конвейер (pipe) FIFO @ - символическая связь
-Iмаска Не выводить имена файлов, соответствующие маске
-i Выводить номер узла inode для каждого файла
-l Отобразить список файлов в подробном (длинном) формате
-R Вывести содержимое подкаталогов
-r Вывести список в обратном порядке
-s Показывать размер каждого файла в блоках
-S Сортировать файлы по размеру в порядке убывания. Для вывода размеров файлов используйте параметр -Sl
-t Отсортировать список по времени последнего изменения файлов. Для вывода времени изменения используйте ключ -tl
-X Отсортировать по расширению

popd
При вызове без параметров команда снимает со стека верхний каталог (см. dirs) и делает его текущим. Использование параметра (+n, -n) позволяет снять конкретный каталог со стека и сделать его текущим.

pushd [параметры] [каталог]
При вызове без параметров и без указания каталога команда меняет местами два верхних каталога в стеке и делает новый верхний каталог текущим. Указание каталога позволяет добавить его к стеку и сделать его текущим.

slocate
Позволяет быстро находить файлы путем поиска в базе данных. В отличие от locate, slocate представляет собой защищенную версию, поскольку не дает пользователям смотреть содержимое файлов, принадлежащих другим пользователям.

vdir
При вызове без параметров и аргументов выводит список файлов в текущем каталоге в алфавитном порядке с учетом регистра в подробном формате в несколько колонок (как ls -l).

Linux   Теги: Linux

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉