Вторая статья из серии статей-шпаргалок, предназначенных для быстрого доступа к наиболее часто используемым командам. Как было описано в предыдущей – Debian. Шпаргалка сисадмина. Операции с пользователями – вся упомянутая информация является общедоступной и не представляет из себя чего-то уникального. Рекомендуется к чтению новичкам в Linux
Если интересуетесь Linux, рекомендую обратиться к разделу Unix/Linux на моем блоге.
Содержание
Работа с файлами и каталогами
Команды сгруппированы по выполняемым изменениям.
Создание, изменение и удаление файлов и каталогов
Создать файл можно разными способами. В большинстве случаев я использую nano, если нужно создать текстовый файл и сразу в него что-то записать. В статье Как создать пустой файл в Linux есть аж 12 способов.
Вообще самым элегантным способом создания пустого файла мне показался вариант простого вывода данных в текстовый файл, этот способ есть в упомянутой выше статье:
1 |
> filename |
А теперь рассмотрим разные утилиты.
touch
Изменяет временные штампы файла. Небольшая выдержка из “манов”:
Если заданный файл еще не существует, то он создается (как пустой файл с правами доступа 0666, с учетом umask), если не задана опция -c.
Создание файла file_test01 в текущем каталоге:
1 |
touch file_test01 |
Создание файла с указанием метки времени:
1 |
touch -t 200701310846.26 file_test01 |
Можно указать и будущую дату.
nano
Файл будет создаy в том случае, если будет не пустым. Создание файла file_test02 в текущем каталоге и сразу же открытие на редактирование:
1 |
nano file_test02 |
На мой взгляд nano – отличный универсальный редактор, который к тому же установлен в Debian по умолчанию.
mkdir
Mkdir создает каталоги. Например создать каталог testdir01 в /root/ можно следующей командой:
1 |
mkdir /root/testdir01 |
Создать каталог testdir02 в /root/ с полными правами доступа только у владельца (у остальных нет прав даже на чтение):
1 |
mkdir -m 700 /root/testdir02 |
-m – Устанавливает права доступа к создаваемым каталогам. Эти права могут быть заданы либо в символьном виде, как описано в chmod(1), либо в виде восьмеричного числа.
А вот так можно одной командой создать сразу два каталога (/tmp/dir1 и /tmp/dir2):
1 |
mkdir /tmp/{dir1,dir2} |
Интересная запись с фигурными скобками называется Brace Expansion, не знали?
Для удаления файлов и каталогов можно воспользоваться командами ниже.
rm
Удаляет файлы или каталоги
Удалить файл testfile01 из каталога /root/:
rm /root/testfile01
Каталог этой командой без дополнительных аргументов удалить не получится:
rm testdir01
rm: невозможно удалить «testdir01»: Это каталог
…но можно удалить каталог рекурсивно со всеми файлами, например, вот так:
rm -r testdir01
-r – Рекурсивное удаление дерева каталогов.
rmdir
Удаляет пустые каталоги
Удалить каталог testdir04 из текущего расположения:
rmdir testdir04
Непустые каталоги удалить не получится:
rmdir /root/testdir02
1 |
rmdir: не удалось удалить «/root/testdir02»: Каталог не пуст |
Придется использовать rm, как описано выше.
Копирование, переименование и перемещение файлов и каталогов
mv
Перемещает (переименовывает) файлы
Переместить файл file_primer03 из каталога /root/ в каталог /root/testdir02/, при этом задать ему новое имя – fileprimer031:
mv /root/file_primer03 /root/testdir02/fileprimer031
Хотя для изменения имени файла существует и другая команда.
Для копирования файлов воспользуйтесь другой командой.
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 для двоичного мегабайта (мебибайт’), к каждому размеру.
На этом пока все, по мере необходимости буду дополнять статью другими командами.
Помимо упомянутых выше, при написании статьи использовались следующие источники: