Debian. Шпаргалка сисадмина. Работа с файлами и каталогами

Debian. Шпаргалка сисадмина. Работа с файлами и каталогами

www.debian.org

Вторая статья из серии статей-шпаргалок, предназначенных для быстрого доступа к наиболее часто используемым командам. Как было описано в предыдущей — Debian. Шпаргалка сисадмина. Операции с пользователями — вся упомянутая информация является общедоступной и не представляет из себя чего-то уникального. Почти все это вы сможете найти в справочных страницах официального дистрибутива Debian 7.7, а на остальные источники даны ссылки.


Если интересуетесь ОС Debian, рекомендую обратиться к тегу Debian на моем блоге.


Debian. Шпаргалка сисадмина. Работа с файлами и каталогами

Команды сгруппированы по выполняемым изменениям.

Создание, изменение и удаление файлов и каталогов

Создать файл можно разными способами, в большинстве случаев я использую nano, если нужно создать текстовый файл и сразу в него что-то записать. В статье «Как создать пустой файл в Linux» есть аж 12 способов.

touch

Изменяет временные штампы файла

Небольшая выдержка из «манов»:

Если заданный файл еще не существует, то он создается (как пустой файл с правами доступа 0666, с учетом umask), если не задана опция -c.

Создание файла file_test01 в текущем каталоге:

touch file_test01

Создание файла с указанием метки времени:

touch -t 200701310846.26 file_test01

Можно указать и будущую дату.

nano

Nano’s ANOther editor, an enhanced free Pico clone

Файл будет создаy в том случае, если будет не пустым.
Создание файла file_test02 в текущем каталоге:

nano file_test02

На мой взгляд nano — отличный универсальный редактор, который к тому же установлен в Debian по умолчанию. Если все же nano не подходит, можете воспользоваться vim, gedit или чем-то другим.

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

Создание пустого файла file_test03 в текущем каталоге:

> file_test03

Про создание файлов на этом все.

mkdir

Создает каталоги.

Создать каталог testdir01 в /root/:

mkdir /root/testdir01

Создать каталог testdir02 в /root/ с полными правами доступа только у владельца, у остальных нет прав даже на чтение (о правах доступа см. ниже):

mkdir -m 700 /root/testdir02

-m — Устанавливает права доступа к создаваемым каталогам. Эти права могут быть заданы либо в символьном виде, как описано в chmod(1), либо в виде восьмеричного числа.

Для удаления файлов и каталогов можно воспользоваться командами ниже.

rm

Удаляет файлы или каталоги

Удалить файл testfile01 из каталога /root/:

rm /root/testfile01

Каталог этой командой без дополнительных аргументов удалить не получится:

rm testdir01

rm: невозможно удалить «testdir01»: Это каталог

…но можно удалить каталог рекурсивно со всеми файлами, например, вот так:

rm -r testdir01

-r — Рекурсивное удаление дерева каталогов.

rmdir

Удаляет пустые каталоги

Удалить каталог testdir04 из текущего расположения:

rmdir testdir04

Непустые каталоги удалить не получится:

rmdir /root/testdir02

rmdir: не удалось удалить «/root/testdir02»: Каталог не пуст

Придется использовать rm, как описано выше.

Копирование, переименование и перемещение файлов и каталогов

mv 

Перемещает (переименовывает) файлы

Переместить файл file_primer03 из каталога /root/ в каталог /root/testdir02/, при этом задать ему новое имя — fileprimer031:

mv /root/file_primer03 /root/testdir02/fileprimer031

Хотя для изменения имени файла существует и другая команда.

Примечание: изменить имена групп файлов можно командой rename 1 (на самом деле это не команда, а скрипт). Например изменить расширения всех php-файлов на html можно командой rename -v ‘s/\.php$/\.html/’ *.php

Для копирования файлов воспользуйтесь другой командой.

cp 

Копирование файлов и каталогов

Копирование файла test_file01 из текущего расположения в каталог testdir02:

cp test_file01 testdir02/test_file01

Рекурсивное копирование каталога testdir02 из текущего расположения в новый каталог testdir02_copy:

cp -r testdir02 testdir02_copy

Очень интересное описание параметра:

-r — Копировать каталоги рекурсивно; выполнять какие-то, неопределенные стандартом действия, когда попадаются объекты, не являющиеся обычными файлами или каталогами. (Так, разрешается, и фактически одобряется, наличие опции-r как синонима для -R. Однако, глупое поведение, которое проявляет версия cp в GNU 4.0 не запрещается.)

Просмотр и редактирование

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

cat 

Concatenate files and print on the standard output

Отображение содержимого файла test_file01:

cat test_file01

Объединение файла test_file01 с файлом test_file02, результат записывается в файл test_file03 в текущем расположении:

cat test_file01 test_file02 > test_file03

sort 

Sort lines of text files

Сомневаюсь, что у меня получится описать работу команды «sort» лучше, чем это сделано в статье «HuMan: sort«.

head 

Output the first part of files

Отображение первых строчек файла test_file01 (по умолчанию последние 10 строчек):

head test_file01

Отображение первых 4 строчек файла test_file01:

head -n 4 test_file01

-n — print the first K lines instead of the first 10; with the leading `-‘, print all but the last K lines of each file

tail 

Output the last part of files

Отображение последних строчек файла test_file01 (по умолчанию последние 10 строчек):

tail test_file01

Отображение последних 4 строчек файла test_file01:

tail -n 4 test_file01

-n — output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth

tee 

Read from standard input and write to standard output and files

Удобная команда, предназначеня для одновременного вывода информации на экран и в файл.

Отправка пяти эхо-запросов до узла ya.ru с выводом информации на экран и в файл ping_ya_c_5.ru:

ping -c 5 ya.ru | tee ping_ya_c_5.ru

О всех описанных выше командах можно подробнее прочитать в статье «Операции с файлами и фильтрация«.

grep, egrep, fgrep, rgrep 

Print lines matching a pattern

О данных командах, в частности речь идет о grep, в некотором будущем я планирую написать отдельную статью, т.к. модели их применения достаточно объемны.

ls, dir, vdir 

Выводит содержимое каталога

Отобразить список файлов в текущем расположении:

ls -l
-l — Выдавать (в одноколоночном формате) тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла (в байтах), временной штамп и имя файла.

Отобразить список файлов в текущем расположении рекурсивно:

ls -lR

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

Подробнее о команде ls можно прочитать в статье «15 базовых примеров команды ls в Linux«

Поиск файлов

find 

Search for files in a directory hierarchy

Поиск файлов, начинающихся на testf, с корневого каталога:

find / -name «testf*»

locate 

Find files by name

Описание с официального сайта:

Команда updatedb создаёт индекс всех файлов и папок, имеющихся в системе. Команда locate позволяет быстро находить файлы в системе по этому индексу без необходимости сканирования всей файловой системы каждый раз. Также см. пакеты mlocate и slocate.

whereis

Locate the binary, source, and manual page files for a command

Команду удобно использовать для определения месторасположения исходных файлов, ман-страниц.
Информация о консольном редакторе nano:

whereis nano

which 

Locate a command

Также прочитать подробнее о командах поиска можно в статье «5 способов поиска файлов в Linux, используя терминал.«.

Другие команды

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

pwd — print name of current/working directory/

Очень полезная команда, которая наиболее часто используется вообще без каких-либо аргументов.

cd — используется для перехода между каталогами.

Для перехода в домашний каталог:

cd

Для перехода в каталог /usr/bin/:

cd /usr/bin/

Переход на один уровень вверх:

cd ..

ln — создает ссылки между файлами

du — оценка места на диске, занимаемого файлом

Вывести размер текущего каталога:

du -sh

-s — Выводить размеры только для указанных явно аргументов, а не для их подкаталогов.
-h — Добавлять букву размера, например M для двоичного мегабайта (`мебибайт’), к каждому размеру.

На этом пока все, по мере необходимости буду дополнять статью другими командами.


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

Основные команды Linux — Справочник команд Линукс

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

comments powered by HyperComments