Работа с файлами и директориями в Linux

Содержание

Работа с файлами

Работа с файлами и директориями в Linux

Пред.НачалоСлед.
Сведения о документе

Файловая система не только систематизирует данные, но и является основой метафоры «рабочего места» в Linux. Каждая выполняемая программа «работает» в строго определённом каталоге файловой системы.

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

В зависимости от текущего каталога может меняться поведение программы: зачастую программа будет по умолчанию работать с файлами, расположенными именно в текущем каталоге — до них она «дотянется» в первую очередь. Текущий каталог есть у любой программы, в том числе и у командной оболочки (shell) пользователя.

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

Все команды, отдаваемые пользователем при помощи shell, наследуют текущий каталог shell, т. е. «работают» в том же каталоге. По этой причине пользователю важно знать текущий каталог shell. Для этого служит утилита pwd:

[methody@localhost methody]$ pwd/home/methody[methody@localhost methody]$

Пример 1. Текущий каталог: pwd

pwd (аббревиатура от print working directory) возвращает полный путь текущего каталога командной оболочки, естественно, именно той командной оболочки, при помощи которой была выполнена команда pwd. В данном примере текущим является каталог «/home/methody».

Текущий каталог, каков бы ни был полный путь к нему, всегда имеет ещё одно обозначение, «.

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

/text» тоже приводят к одному и тому же файлу, однако в первом случае в строке пути не содержится ничего, кроме имени файла.

Отделить путь к файлу от его имени можно с помощью команд dirname и basebane соответственно: [methody@localhost methody]$ basename /home/methody/texttext[methody@localhost methody]$ basename texttext[methody@localhost methody]$ dirname /home/methody/text/home/methody[methody@localhost methody]$ dirname ./text.[methody@localhost methody]$ dirname text.

Пример 2. Использование dirname и basename

Мефодий заметил, что для «text» и «./text» dirname выдало одинаковый результат: «.», что понятно: как было сказано выше, эти формы пути совершенно эквивалентны, а при автоматической обработке результатов dirname гораздо лучше получить «.», чем пустую строку.

Информация о каталоге

В любой момент можно просмотреть содержимое любого каталога при помощи утилиты ls (сокращение от англ. «list» — «список»):

[methody@localhost methody]$ ls-filename-with- text[methody@localhost methody]$

Пример 3. Команда ls

Поданная без параметров, команда ls выводит список файлов и каталогов, содержащихся в текущем каталоге1.

Утилита ls принимает один параметр: имя каталога, содержимое которого нужно вывести. Имя может быть задано любым доступным способом: в виде полного или относительного пути.

Кроме параметра, утилита ls «понимает» множество ключей, которые нужны главным образом для того, чтобы выводить дополнительную информацию о файлах в каталоге или выводить список файлов выборочно.

Чтобы узнать обо всех возможностях ls, нужно, конечно же, прочесть руководство по этой утилите («man ls»).

[methody@localhost methody]$ ls -F /bin/ dev/ home/ mnt/ root/ swap/ tmp/ var/boot/ etc/ lib/ proc/ sbin/ sys/ usr/[methody@localhost methody]$

Пример 4. Команда ls -F

В примере использован ключ-F, чтобы отличать файлы от каталогов. При наличии этого ключа ls в конце имени каждого каталога ставит символ «/», чтобы показать, что в нём может содержаться что-то ещё. В выведенном списке нет ни одного файла — в корневом каталоге содержатся только подкаталоги.

Кроме того, можно получить более подробную информацию о содержимом каталога:

[methody@localhost methody]$ ls -aF-filename-with- .bash_history .bashrc .lpoptions .rpmmacros Documents/./ .bash_logout .emacs .mutt/ .xemacs/ text../ .bash_profile .i18n .pinerc .xsession.d/ tmp/[methody@localhost methody]$

Пример 5. Команда ls -aF

Внезапно обнаружилось, что файлов в домашнем каталоге не два, а гораздо больше. Дело в том, что утилита ls по умолчанию не выводит информацию об объектах, чьё имя начинается с «.» — в том числе о «.» и «..».

Для того, чтобы посмотреть полный список содержимого каталога, и используется ключ «-a» (all)2. Как правило, с «.

» начинаются имена конфигурационных файлов и конфигурационных каталогов.

«..» — это ссылка на родительский каталог. Родительский каталог — это тот каталог, в котором находится данный. Родительским каталогом для «/home/methody» будет каталог «/home»: он получается просто отбрасыванием последнего имени каталога в полном пути.

Иначе можно сказать, что родительский каталог — это один шаг по дереву каталогов по направлению к корню. «..» — это сокращённый способ сослаться на родительский каталог: пока текущим каталогом является «/home/methody», относительный путь «..» (или, что то же самое, «./..

») будет эквивалентен «/home». С использованием «..» можно строить сколь угодно длинные пути, такие как «../../usr/../var/log/../run/../../home»3. Ссылки на текущий и на родительский каталог обязательно присутствуют в каждом каталоге в Linux. Даже если каталог пуст, т. е.

не содержит ни одного файла или подкаталога, команда «ls -a» выведет список из двух имён: «.» и «..».

Перемещение по дереву каталогов

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

Для смены текущего каталога командной оболочки используется команда cd (от англ. «change directory» — «сменить каталог»). Команда cd принимает один параметр: имя каталога, в который нужно переместиться — сделать текущим.

Как обычно, в качестве имени каталога можно использовать полный или относительный путь.

[methody@localhost methody]$ cd /home[methody@localhost home]$ lsmethody shogun[methody@localhost home]$ cd methody[methody@localhost methody]$

Пример 6. Смена текущего каталога

Для перемещения в родительский каталог («/home») удобно воспользоваться ссылкой «..».

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

Поэтому чтобы перейти в домашний каталог из любого другого, достаточно выполнить команду «cd ~». При исполнении команды символ «~» будет заменён командной оболочкой на полный путь к домашнему каталогу пользователя.

[methody@localhost methody]$ cd ..[methody@localhost home]$ cd ~[methody@localhost methody]$ cd ~shogun[methody@localhost shogun]$ cd[methody@localhost methody]$

Пример 7. Переход в родительский и в домашний каталог

При помощи символа «~» можно ссылаться и на домашние каталоги других пользователей: «~имя пользователя». Команда cd, поданная без параметров, эквивалента команде «cd ~» и делает текущим каталогом домашний каталог пользователя.

Создание каталогов

Для этого используется утилита mkdir. Она используется с одним обязательным параметром: именем создаваемого каталога. По умолчанию каталог будет создан в текущем каталоге. [methody@localhost methody]$ mkdir examples[methody@localhost methody]$ ls -F-filename-with- Documents/ examples/ text tmp/[methody@localhost methody]$

Пример 8. Создание каталога

Копирование и перемещение файлов

Для перемещения файлов и каталогов предназначена утилита mv (сокращение от англ. «move» — «перемещать»). У mv два обязательных параметра: первый — перемещаемый файл или каталог, второй — файл или каталог назначения.

Имена файлов и каталогов могут быть заданы в любом допустимом виде: при помощи полного или относительного пути. Кроме того, mv позволяет перемещать не только один файл или каталог, а сразу несколько.

За подробностями о допустимых параметрах и ключах следует обратиться к руководству по mv.

[methody@localhost methody]$ cd examples[methody@localhost examples]$ mv ../text .[methody@localhost examples]$ lstext[methody@localhost examples]$

Пример 9. Перемещение файлов

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

Перемещение предполагает удаление ссылки на файл из того каталога, откуда он перемещён, и добавление ссылки на этот самый файл в тот каталог, куда он перемещён. В результате изменяется полное имя файла — полный путь, т. е.

положение файла в файловой системе.

Иногда требуется создать копию файла: для большей сохранности данных, для того, чтобы создать модифицированную версию файла и т. п. В Linux для этого предназначена утилита cp (сокращение от англ. «copy» — «копировать»).

Утилита cp требует присутствия двух обязательных параметров: первый — копируемый файл или каталог, второй — файл или каталог назначения. Как обычно, в именах файлов и каталогов можно использовать полные и относительные пути.

Есть несколько возможностей при комбинации файлов и каталогов в параметрах cp — о них можно прочесть в руководстве.

[methody@localhost examples]$ cp text text.bak[methody@localhost examples]$ lstext text.bak

Пример 10. Копирование файлов

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

В этом случае файл будет просто перезаписан, а данные, которые содержались в старой версии файла, бесповоротно потеряны.

Поэтому при использовании cp следует всегда быть внимательным и проверять имена файлов, которые нужно скопировать.

Удаление файлов и каталогов

В Linux для удаления файлов предназначена утилита rm (сокращение от англ. «remove» — «удалять»).

[methody@localhost methody]$ rm examples/text [methody@localhost methody]$ ls examplestest.bak

Пример 11. Удаление файла

Однако удалить командой rm каталог не получится:

[methody@localhost methody]$ rm examples rm: невозможно удалить `examples': Is a directory[methody@localhost methody]$ rmdir examplesrmdir: examples: Directory not empty[methody@localhost methody]$ rm examples/test.bak[methody@localhost methody]$ rmdir examples[methody@localhost methody]$

Пример 12. Удаление каталога

Для удаления каталогов предназначена другая утилита — rmdir (от англ. «remove directory»). Впрочем, rmdir согласится удалить каталог только в том случае, если он пуст: в нём нет никаких файлов и подкаталогов. Удалить каталог вместе со всем его содержимым можно командой rm с ключом «-r» (recursive).

Команда rm -r каталог — очень удобный способ потерять в одночасье все файлы: она рекурсивно4 обходит весь каталог, удаляя всё, что попадётся: файлы, подкаталоги…

а ключ «-f» (force) делает её работу ещё неотвратимее, так как подавляет запросы вида «удалить защищённый от записи файл», так что rm работает безмолвно и безостановочно.

Помните: если вы удалили файл, значит, он уже не нужен, и не подлежит восстановлению!

В Linux не предусмотрено процедуры восстановления удалённых файлов и каталогов. Поэтому стоит быть очень внимательным, отдавая команду rm и, тем более, rm -r: нет никакой гарантии, что удастся восстановить случайно удалённые данные.

Узнав об этом, Мефодий не огорчился, но подумал, что впредь будет удалять только действительно ненужные файлы, а всё сомнительное — перемещать с помощью mv в подкаталог ~/tmp, где оно не будет мозолить глаза, и где можно периодически наводить порядок.

Пред.НачалоСлед.
Сведения о документе

Источник: http://heap.altlinux.org/modules/linux_intro.next/index.html

Основы Linux от основателя Gentoo. Часть 1 (2/4): Управление файлами и директориями

Работа с файлами и директориями в Linux
Продолжение перевода первой части руководства. Начало тут. В данном отрывке рассмотрены команды работы с файловой системой и файлами, такие как ls, mkdir, touch, mv, cp, затронуто использование echo и cat. Рассказано про иноды файловой системы.

Знакомство с ls

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

$ cd /usr
$ ls
X11R6 doc i686-pc-linux-gnu lib man sbin sslbin gentoo-x86 include libexec portage share tmpdistfiles i686-linux info local portage.old src

Указав опцию -a, вы можете увидеть полный список, включая скрытые файлы и директории, начинающиеся с “.”. Как видно в следующем примере, ls -a выводит также особые связывающие директории “.” и “..”:

$ ls -a
. bin gentoo-x86 include libexec portage share tmp.. distfiles i686-linux info local portage.old srcX11R6 doc i686-pc-linux-gnu lib man sbin ssl

Развернутые списки директорий

Вы также можете задать одну и более директорий или файлов в командной строке с ls. Если вы укажите файл, то ls покажет вам только этот файл. А если зададите директорию, то ls выдаст ее содержимое. Опция -l очень удобна, когда необходимо посмотреть права доступа, владельца, время последнего изменения и размер в списке содержимого директории.

В следующем примере мы использовали опцию -l чтобы отобразить содержимое моей директории /usr:

$ ls -l /usr
drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6drwxr-xr-x 2 root root 14576 Dec 27 08:56 bindrwxr-xr-x 2 root root 8856 Dec 26 12:47 distfileslrwxrwxrwx 1 root root 9 Dec 22 20:57 doc -> share/docdrwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linuxdrwxr-xr-x 4 root root 96 Nov 24 13:17 i686-pc-linux-gnudrwxr-xr-x 54 root root 5992 Dec 24 22:30 includelrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share/infodrwxr-xr-x 28 root root 13552 Dec 26 00:31 libdrwxr-xr-x 3 root root 72 Nov 25 00:34 libexecdrwxr-xr-x 8 root root 240 Dec 22 20:57 locallrwxrwxrwx 1 root root 9 Dec 22 20:57 man -> share/manlrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86/drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.olddrwxr-xr-x 3 root root 3096 Dec 22 20:57 sbindrwxr-xr-x 46 root root 1144 Dec 24 15:32 sharedrwxr-xr-x 8 root root 328 Dec 26 00:07 srcdrwxr-xr-x 6 root root 176 Nov 24 14:25 ssllrwxrwxrwx 1 root root 10 Dec 22 20:57 tmp -> ../var/tmp

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

Третья и четвертая колонки — это список владельцев и групп, соответственно. Пятая колонка — размер объекта. Шестая — время последнего изменения (mtime) объекта. И наконец, последняя колонка с именами объектов.

Если файлы являются символическими ссылками, то вы увидите стрелку -> и путь, куда указывает эта символическая ссылка.

Смотрим на директории

Иногда вы захотите взглянуть на директорию, а не внутрь нее. В этом случае вы можете указать опцию -d, которая скажет ls рассматривать любую директорию, как внутреннюю:

$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share
drwxr-xr-x 4 root root 96 Dec 18 18:17 ../sharedrwxr-xr-x 17 root root 576 Dec 24 09:03 /usrdrwxr-xr-x 2 root root 3192 Dec 26 12:52 /usr/X11R6/bindrwxr-xr-x 2 root root 14576 Dec 27 08:56 /usr/bin

Рекурсивный и инодный списки

Так вы можете использовать -d чтобы смотреть на директорию, но также можно использовать -R для противоположного: не только лишь глянуть внутрь директории, но и рекурсивно посмотреть все директории с файлами внутри нее! Мы не включим в руководство никакого примера вывода для этой опции (поскольку обычно он очень объемный), но возможно вы захотите попробовать несколько команд ls -R и ls -Rl, чтобы почувствовать как это работает.

Наконец, опция -i может использоваться для отображения числа инодов для объектов в списке файловой системы:

$ ls -i /usr
1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 share 8316 distfiles 1517 include 776 man 23779 src 43 doc 1386 info 93892 portage 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage.old 784 tmp

Понятие инода

Каждому объекту файловой системы назначен уникальный индекс, называемый номером инода.

Это может показаться банальным, но понятие инодов очень важно для понимания большинства операций в файловой системе. Рассмотрим например ссылки “.” и “..”, которые появляются в каждой директории.

Чтобы полностью понять, чем на самом деле является директория “..”, мы сперва взглянем на номер инода у /usr/local:

$ ls -id /usr/local
5120 /usr/local

У директории /usr/local номер инода равен 5120. А теперь посмотрим номер инода у /usr/local/bin/..:

$ ls -id /usr/local/bin/..
5120 /usr/local/bin/..

Как видно, директория /usr/local/bin/.. имеет такой же номер, как у /usr/local! Посмотрим, как можно справиться с этим шокирующим откровением. В прошлом мы полагали, что /usr/local сама является директорией.

Теперь же, мы обнаружили, что фактически директория — это инод с номером 5120, и нашли, по меньшей мере, два элемента (называемых «ссылками»), которые указывают на данный инод. И /usr/local, и /usr/local/bin/.. — ссылки на 5120-ый инод.

Хотя этот инод и существует только в одном месте на диске, тем не менее на него может быть множество ссылок.

На самом деле, мы даже можем увидеть общее количество ссылок ведущих на этот, 5120 инод, используя команду ls -dl:

$ ls -dl /usr/local
drwxr-xr-x 8 root root 240 Dec 22 20:57 /usr/local

Если взглянуть на вторую колонку слева, то видно, что на директорию /usr/local (инод 5120) ссылаются восемь раз. На моей системе на этот инод ведут следующие пути:

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/..

/usr/local/src/..

mkdir

Давайте быстренько пройдемся по команде mkdir, которая используется для создания новых директорий. Следующий пример создает три новых директории, tic, tac, и toe, все внутри /tmp:

$ cd /tmp
$ mkdir tic tac toe

По умолчанию, команда mkdir не создает для вас родительские директории; весь путь вплоть до последнего (создаваемого) элемента должен существовать. Так, если вы захотите создать вложенные директории won/der/ful, вам придется выполнить три отдельные команды mkdir:

$ mkdir won/der/ful mkdir: cannot create directory `won/der/ful': No such file or directory

$ mkdir won

$ mkdir won/der
$ mkdir won/der/ful

Однако, у mkdir есть очень удобная опция -p, которая говорит mkdir создавать любые отсутствующие родительские директории, как можете увидеть тут:

$ mkdir -p easy/as/pie

В целом очень просто. Чтобы узнать больше о команде mkdir наберите man mkdir и прочитайте инструкцию. Это же касается почти всех команд, рассмотренных здесь (например man ls), исключая cd, которая встроена в bash.

touch

Сейчас мы собираемся окинуть взглядом команды cp и mv, используемые для копирования, переименования и перемещения файлов и директорий. Но начнем обзор воспользовавшись командой touch, чтобы создать файл в /tmp:

$ cd /tmp
$ touch copyme

Команда touch обновляет «mtime» (время последней модификации — прим. пер.) файла, если тот существует (вспомните шестую колонку в выводе ls -l). Если файл не существует, то новый, пустой файл будет создан. Сейчас у вас должен быть файл /tmp/copyme с нулевым размером.

echo

Теперь, когда файл существует, давайте добавим немного данных в него. Можно сделать это с помощью команды echo, которая принимает аргументы и печатает их на стандартный вывод. Сперва, команда echo сама по себе:

$ echo “firstfile”
firstfile

А сейчас, та же команда echo, но с перенаправлением вывода:

$ echo “firstfile” > copyme

Знак «больше» сообщает оболочке записывать вывод echo в файл по имени copyme. Этот файл будет создан, если не существовал, или перезаписан, если существует. Набрав ls -l, увидим, что файл copyme имеет размер в 10 байт, так как содержит слово firstfile и символ новой строки:

$ ls -l copyme
-rw-r–r– 1 root root 10 Dec 28 14:13 copyme

cat и cp

Чтобы вывести содержимое файла на терминал, используйте команду cat:

$ cat copyme
firstfile

Сейчас, мы можем воспользоваться основным вызовом команды cp для создания файла copiedme из оригинального copyme:

$ cp copyme copiedme

Ниже проверим, что это действительно разные файлы; у них отличаются номера инодов:

$ ls -i copyme copiedme
648284 copiedme 650704 copyme

mv

А сейчас давайте воспользуемся командой mv для переименования copiedme в movedme. Номер иноды останется прежний; однако, имя файла, указывающее на инод, изменится.

$ mv copiedme movedme
$ ls -i movedme
648284 movedme

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

Пока мы рассказываем об mv, давайте посмотрим, как еще можно использовать эту команду. mv, помимо возможности переименовать файлы, позволяет перемещать один или более файлов в другое место в иерархии директорий. Например, чтобы переместить /var/tmp/myfile.txt в директорию /home/drobbins (которая является моей домашней), я наберу (а мог бы воспользоваться ~ — прим. пер.):

$ mv /var/tmp/myfile.txt /home/drobbins

После этого myfile.txt будет перемещен в /home/drobbins/myfile.txt. И если /home/drobbins располагается в другой файловой системе, нежели /var/tmp, команда mv скопирует myfile.

txt в новую файловую систему и удалит его из старой. Как вы уже могли догадаться, когда myfile.txt перемещается между файловыми системами, то myfile.txt на новом месте получает новый номер инода.

Это все потому, что у каждой файловой системы свой независимый набор номеров инодов.

Мы также можем воспользоваться mv для перемещения нескольких файлов в одну директорию. К примеру, чтобы переместить myfile1.txt и myarticle3.txt в /home/drobbins, потребуется набрать:

$ mv /var/tmp/myfile1.txt /var/tmp/myarticle3.txt /home/drobbins

Продолжение…

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике.

После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems.

Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

Источник: https://habr.com/post/99291/

Назначение основных каталогов, директорий, папок в файловой системе Linux

Работа с файлами и директориями в Linux

Файловая система Linux представляет собой четкую структуру каталогов и файлов. В этой статье рассмотрим краткое назначение каждого из каталогов.

Файловые системы Linux содержат множество каталогов, большинство из которых определяются стандартом FHS(Filesystem Hierarchy Standard).

Назваие статьи состоит из терминов “каталог”, “директория” и “папка”. Рассмотрим их.

Каталог или директория (англ. directory — директория) — объект в файловой системе, упрощающий организацию файлов.

Папка (англ. folder) – этот термин используется для представления каталогов в графическом пользовательском интерфейсе.

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

Общая структура файловой системы ОС Linux

В зависимости от используемого дистрибутива Linux, некоторых из представленных каталогов может и не быть, или наоборот, могут присуствовать другие непредставленные тут каталоги. Я попытался собрать и дать описание лишь наиболее часто встречающихся каталогов в ОС Linux.

/
/bin
/boot
cd-rom
/dev
/etc
/home
/lib
/lib64
/lost+found
/media
/mnt
/opt
/proc
/root
/run
/sbin
/selinux
/srv
/sys
/tmp
/usr
/var

/ – корневой каталог

Главный каталог, в нем хранится все, что есть на вашей ОС Linux. Все разделы Linux хранятся в виде другого подкаталога в корневом каталоге /.

/bin – основные бинарные файлы (программы)

Содержит основные двоичные (бинарные) системные программы (модули), утилиты (ls, cp и т.п.) и командные оболочки (bash и т.п.), которые должны обеспечить минимальный уровень работоспособности системы в однопользовательском режиме. Размещение этих файлов в каталоге /bin гарантирует, что в системе эти важные утилиты будут даже в случае, если другие файловые системы не смонтированы.

/boot – файлы для загрузки ОС

Хранятся образы ядер Linux и файлы менеджеров загрузки (grub, lilo и т.д.).

/cdrom – точка монтирования для CD-дисков

Данный каталог не является частью стандарта FHS, содержится в Ubuntu и вышедших из него дистрибутивах. Используется как место для монтируования CD-ROM дисков.

/dev – файлы устройств

В Linux все устройства предоставлены в виде специфических файлов, расположеных в этом каталоге. Например, файл /dev/sda представляет диск SATA.

Также в этом каталоге хранятся файлы псевдо-устройств (виртуальных), для этих файлов нет соответствующего реального устройства.

Например, файл /dev/random генерирует случайные числа, а файл /dev/null является специальным устройством для удаления всех входных данных.

/etc – конфигурационные файлы

Содержит основные конфигурационные файлы операционной системы и различных программ.

/home – домашние каталоги пользователей

Содержит домашние каталоги пользователей. По идеологии UNIX для обеспечения безопасности ОС рекомендуется хранить пользовательские данные именно в этой директории.

Например, если ваше имя пользователя mara, то у вас есть домашний каталог, который находится в /home/mara и содержит пользовательские конфигурационные файлы и личную информацию.

Каждый пользователь имеет доступ на запись только в своем домашнем каталоге.

/lib – основные библиотеки

Эта директория предназначена для хранения системных библиотек и компонентов компилятора языка С, необходимых для работы программ из директорий /bin и /sbin и операционной системы в целом.

/lib64 – 64-битные основные библиотеки

Этот каталог присуствует в основном на 64-битных системах, содержит набор библиотек и компонентов компилятора языка С для 64-битных программ.

/lost+found – восстановленные файлы

Присуствует во всех ОС Linux. При сбое в работе файловой системы и дальнейшей проверке файловой системы (при загрузке ОС), все найденные поврежденные файлы будут помещены в каталоге lost+found, их можно попытаться восстановить.

/media – точка для автоматического монтирования

Используемая для автоматического монтирования различных устройств CD-ROM, USB-накопителей и т.д.

/mnt – точка для ручного монтирования

Используется для временного ручного монтирования (с помощю команды mount) различных устройств, таких как CD-ROM, USB-накопителей и т.д.

/opt – вспомогательные пакеты программ

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

/proc – файлы ядра и процессов

В эту директорию примонтирована виртуальная файловая система procfs. В ней находятся специальные файлы, в которых представлена информация о системе и о выполняющихся процессах. Например, в файле /proc/cpuinfo собержиться информация о процессоре.

/root – Домашний каталог пользователя root

Домашний каталог пользователя root. Вместо того, чтобы находиться в /home/root, он помещается в /root для большей надёжности системы.

/run – файлы состояния приложений

Является достаточно новым каталогом, в котором приложениям предоставляется возможность стандартным образом хранить вспомогательные файлы, которые им требуются, например, сокеты и идентификаторы процессов. Эти файлы нельзя хранить в каталоге /tmp, поскольку эти файлы могут быть там удалены.

/sbin – бинарные файлы (программы) для администрирования системы

Каталог /sbin похож на каталог /bin. В нем находятся важные двоичные файлы, которые, как правило, предназначены для их запуска пользователем при администрировании системы.

/selinux – виртуальная файловая система SELinux

В некоторых дистрибутивах (Red Hat, Fedora и т.п) для обеспечения безопасности используется пакет SELinux (Security-Enhanced Linux), при этом создается каталог с файлами /selinux.

/srv – данные сервисных служб

Этот каталог присуствует не во всех дистрибутивах, содержит “данные для сервисов, предоставляемых системой” (например сервер Apache может хранить файлы вашего сайта в этом каталоге). В большинстве случаев директория пуста.

/sys – виртуальная файловая система sysfs

Этот каталог появился с выходом ядра версии 2.6 и в него примонтирована виртуальная файловая система sysfs с информацией об устройствах, драйверах, ядре ОС и т.п.

Описание вложеных каталогов:

/sys/block – содержит директории всех блочных устройств, присутствующих на данный момент в системе.

/sys/bus – содержит список шин, определенных в ядре Linux (eisa, pci и т.д.).

/sys/class – содержит список сгруппированных устройств по классам (printer, scsi-devices и т.д.).

/tmp – временные файлы

Временные файлы, обычно удаляются при перезагрузке системы. Является аналогом C:/Windows/Temp в ОС Windows. Все пользователи имеют права чтения и записи в этом каталоге.

/usr – пользовательские бинарные файлы, используемые только для чтения

В этом каталоге находятся приложения и файлы, используемые только пользователями, а не самой системой.

Описание вложеных каталогов:

/usr/bin – исполняемые файлы для всех учетных записей.

/usr/games – каталог для компьютерных игр в системе.

/usr/include – файлы заголовков, предназначенные для компиляции С-программ.

/usr/lib – системные библиотеки и вспомогательные файлы, расположенные в директории /usr.

/usr/local – в этот каталог устанавливаются приложения, откомпилированные локально, что позволяет им не смешиваться с остальной частью системы.

/usr/local/bin – локальные исполняемые файлы.

/usr/local/etc – локальные системные команды и файлы конфигурации.

/usr/local/lib – локальные вспомогательные файлы.

/usr/local/sbin – локальные служебные системные команды.

/usr/local/src – исходные коды программ каталогов /usr/local/*

/usr/man – страницы интерактивной документации.

/usr/sbin – менее важные команды системного администрирования.

/usr/share – общие данные установленных программ (доступен только для чтения).

/usr/share/man – страницы интерактивной документации.

/usr/share/icons – иконки системы.

/usr/share/doc – справочная документация.

/usr/src – исходные коды нелокальных программных пакетов (например, здесь располагаются исходные кода ядра).

/var – каталог для часто меняющихся данных

В этом каталоге находятся журналы операционной системы, системные log-файлы, cache-файлы и т.д.

/var/adm – журнальные файлы, записи об инсталляции системы, административные компоненты.

/var/cache – все кэши для различных программ.

/var/games – файлы с игровыми достижениями.

/var/log – cистемные журнальные файлы (log-файлы).

/var/lock – лежат lock-файлы, указывающие на занятость некоторого ресурса.

/var/lib – изменяемые программами в процессе работы (например, базы данных, метаданные и др.).

/var/spool – буферные каталоги (например, очереди печати, непрочитанные или не отправленные письма, задачи cron и т.д.).

/var/tmp – каталог для временного хранения файлов.

/var/www – размещаются Web-страницы для сервера Apache.

Посмотреть структуру файловой системы можно используя команду ls -la. Ниже приведен пример вывода команды для дистрибутива OpenSUSE.

[root@linux ~]# ls -la total 260 drwxr-xr-x 24 root root 4096 Aug 30 2013 . drwxr-xr-x 24 root root 4096 Aug 30 2013 .. drwxr-xr-x 2 root root 4096 Aug 8 2012 .config -rw-r–r– 1 root root 149519 Aug 30 2013 .readahead drwxr-xr-x 2 root root 4096 Aug 8 2012 bin drwxr-xr-x 3 root root 4096 Aug 8 2012 boot drwxr-xr-x 18 root root 3340 May 16 16:29 dev drwxr-xr-x 122 root root 12288 Jun 27 2013 etc drwxr-xr-x 4 root root 4096 Sep 21 2012 home drwxr-xr-x 16 root root 4096 Aug 23 2012 lib drwxr-xr-x 10 root root 12288 Aug 23 2012 lib64 drwx—— 2 root root 16384 Aug 8 2012 lost+found drwxr-xr-x 2 root root 40 Dec 11 2013 media drwxr-xr-x 2 root root 4096 Oct 25 2011 mnt drwxr-xr-x 3 root root 4096 Aug 23 2012 opt dr-xr-xr-x 194 root root 0 Dec 11 2013 proc drwx—— 31 root root 4096 Jun 10 14:38 root drwxr-xr-x 23 root root 780 Jul 9 17:39 run drwxr-xr-x 3 root root 12288 Aug 8 2012 sbin drwxr-xr-x 2 root root 4096 Oct 25 2011 selinux drwxr-xr-x 6 1004 users 4096 Sep 21 2012 srv drwxr-xr-x 12 root root 0 Dec 11 2013 sys drwxrwxrwt 95 root root 4096 Jul 9 17:39 tmp drwxr-xr-x 13 root root 4096 Nov 10 2011 usr drwxr-xr-x 16 root root 4096 Aug 9 2012 var

Вот и все. Рассмотрение предназначения основных встречающихся каталогов в файловой системы Линукс завершено.

Источник: https://admin-gu.ru/os/linux/naznacheniya-onovnykh-katalogov-direktorij-papok-v-fajlovoj-sisteme-linux

Создание каталога в Linux: основные команды работы с файлами

Работа с файлами и директориями в Linux

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

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

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

Особенности работы с файлами в Linux

В Unix-системах применяется принцип иерархии. Файловое хранилище представляет собой дерево каталогов с корневой директорией «/». Далее можно добавлять и удалять различные ветви, путем их монтирования и демонтирования.

Второй особенностью Linux можно назвать терминал. Несмотря на то, что консоль имеется и в других ОС, именно в Linux она получила большое признание. В терминале можно значительно ускорить работу с системой и ее содержимым.

Команды, с которыми пользователь может столкнуться на первоначальном этапе, – pwd и file. Первая позволяет узнать имя текущего каталога, вторая – тип элемента и некоторые свойства.

Команда file в Linux классифицирует операнды, перечисленные в командной строке. Например, для текстовых файлов реализована возможность определять язык программирования по первым 512 байтам, а для исполняемых – номер версии.

Основные операции с файлами и каталогами

Организация файлового хранилища – основная составляющая работы за компьютером. Создание, перемещение, копирование, удаление – лишь часть операций, с которыми пользователь сталкивается ежедневно. Их реализация возможна через графическую оболочку и через терминал. Поэтому стоит перечислить основные команды для работы с файлами и каталогами в Linux:

  • ls – просмотр содержимого папки;
  • cd – изменение директории;
  • rm – удаление файла;
  • rmdir – удаление папки;
  • mkdir – создание каталога;
  • mv – перемещение файла;
  • cp – копирование файла;
  • find – поиск файла по параметрам;
  • chmod – изменение разрешений.

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

Создание

Для создания каталога в Linux применяют mkdir. Она позволяет создать подпапку в текущей директории либо в другой папке, но тогда необходимо ввести полный путь до нее. Для выполнения требуются права на запись в указанном каталоге.

Обязательный параметр утилиты – имя новой папки. Можно указать и дополнительные:

  • -m – установка прав доступа (-m 755);
  • -p – создание промежуточных директорий.

Для создания текстового документа можно воспользоваться консольным редактором, например, Namo или Vi. Так, для запуска второго нужно ввести в терминал:

vi файл.txt

После этого откроется поле для ввода информации.

В консоли Linux возможны и другие способы создания файлов. Самым простым способом является использование оператора перенаправления:

> newtext.txt

Так, можно записать результат выполнения любой команды в текстовый документ. Например:

md5sum file.txt > ~/sum.md5

В результате будет посчитана MD5-сумма и записана в file.txt.

Но чаще для решения такой задачи используют утилиту touch:

touch e.txt

Она создает новый документ. При указании имени, которое уже имеется, для существующего элемента обновится дата изменения.

Копирование

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

cp file new_file

Cp позволяет скопировать целую папку со всеми вложениями. Для этого предназначен параметр -r:

cp -r /etc /etc_new

Перемещение

Перемещение в Linux работает по тому же принципу, что и копирование, без сохранения исходного документа. Для этого в терминале необходимо выполнить:

            mv file new_file

Для перемещения нужно указать путь к требуемому каталогу:

            mv file /home/user/tmp/newdir

Утилита имеет несколько опций:

  • -f – принудительная замена при существовании элемента с таким же именем;
  • -i – уведомление, что одноименный документ уже существует;
  • -n – пропуск при возникновении вышеописанной ситуации;
  • -u – замена, если в документе есть изменения;
  • -v – вывод результата выполнения.

Внимание! Для перемещения или копирования необходимо обладать правами записи в конечную директорию.

Здесь также используется утилита mv. Дело в том, что если действия производить в одном каталоге, то происходит изменение исходного файла или папки.

Так, для переименования каталога «dir» в «folder» нужно задать следующую команду:

mv ~/dir ~/folder

Linux позволяет выполнить рекурсивное переименование всех вложенных каталогов и документов заданием параметра -R.

Удаление

Для удаления элементов применяют команду rm. Если она запускается из другого каталога, необходимо указать полный путь:

rm /usr/share/video.avi

Чтобы удалить папку, команда видоизменяется – rmdir:

rmdir folder1

Для рекурсивного удаления всех вложенных документов и папок указывают параметр -r для rm:

rm -r /home/user/video/

Поиск

Поиск по каталогам в Linux производится с помощью команды find. Его шаблонная запись выглядит следующим образом:

find путь/к/директории опции

Обычно указывают полный путь, однако возможны и частные варианты:

  • «.» – поиск в текущей папке;
  • «/» – поиск относительно корня хранилища;
  • «~» – поиск в домашней папке.

Опции find дают возможность задать условия поиска:

  • -name – искать по имени;
  • -user – искать среди файлов пользователя;
  • -type – искать по типу, например, d – каталог, f – файл, l – ссылка;
  • -size (-n, +n, n) – искать элементы с размером не более (-), не менее (+) или равное n;
  • -mtime (-n, +n) – искать файлы, модифицированные менее (-) или более (+) чем n дней назад.

Заключение

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

Уже в процессе создания, копирования и перемещения есть возможность указать параметры, среди которых имя и права доступа.

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

Источник: https://iwsm.ru/operatsionnye-sistemy/linux/sozdanie-i-peremeschenie-faylov-v-linux

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.