Поиск по сайту:

Серия RHCSA: Как осуществлять управление файлами и каталогами. Часть 2


В этой статье RHCSA Часть 2: Управление файлами и каталогами мы рассмотрим некоторые важные навыки, необходимые для выполнения повседневных задач системного администратора.

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

Управление файлами и каталогами — важнейшая компетенция, которой должен обладать каждый системный администратор. Сюда входит возможность создавать/удалять с нуля текстовые файлы (ядро конфигурации каждой программы) и каталоги (где вы будете организовывать файлы и другие каталоги), а также узнавать тип существующих файлов.

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

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

и rm [имя файла], чтобы удалить его.

Что касается каталогов, вы можете создавать каталоги внутри существующих путей с помощью mkdir [каталог] или создать полный путь с помощью mkdir -p [/full/path/to/directory].

Когда дело доходит до удаления каталогов, вам необходимо убедиться, что они пусты, прежде чем вводить команду rmdir [каталог] или использовать более мощный (обращайтесь с осторожностью!) rm -rf [каталог]. Последний вариант принудительно удалит [каталог] и все его содержимое — поэтому используйте его на свой страх и риск.

Перенаправление ввода и вывода и конвейерная обработка

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

Чтобы понять эти две важные концепции, мы должны сначала понять три наиболее важных типа потоков (или последовательностей) символов ввода-вывода (ввода и вывода), которые на самом деле являются специальными файлами в *nix-смысле этого слова.

  1. Стандартный ввод (он же stdin) по умолчанию подключается к клавиатуре. Другими словами, клавиатура — это стандартное устройство ввода для ввода команд в командную строку.
  2. Стандартный вывод (также известный как stdout) по умолчанию прикрепляется к экрану, устройству, которое «получает» вывод команд и отображает их на экране.
  3. Стандартная ошибка (также известная как stderr) — это место, куда по умолчанию отправляются сообщения о состоянии команды, что также является экраном.

В следующем примере выходные данные ls /var отправляются на stdout (экран), а также результат ls /tecmint. . Но в последнем случае отображается stderr.

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

Для перенаправления стандартного ввода (fd 0), stdout (fd 1) или stderr (fd 2) доступны следующие операторы.

Redirection Operator

Эффект

>

Перенаправляет стандартный вывод в файл, содержащий стандартный вывод. Если целевой файл существует, он будет перезаписан.

>>

Добавляет стандартный вывод в файл.

2>

Перенаправляет стандартную ошибку в файл, содержащий стандартный вывод. Если целевой файл существует, он будет перезаписан.

2>>

Добавляет стандартную ошибку к существующему файлу.

&>

Перенаправляет стандартный вывод и стандартную ошибку в файл; если указанный файл существует, он будет перезаписан.

<

Использует указанный файл в качестве стандартного ввода.

<>

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

В отличие от перенаправления, конвейерная обработка выполняется путем добавления вертикальной черты (|) после команды и перед другой.

Помнить:

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

Примеры перенаправления и конвейерной обработки

Пример 1. Перенаправление вывода команды в файл

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

ls -1 /var/mail > mail.txt

Пример 2. Перенаправление stdout и stderr в /dev/null

Если мы хотим предотвратить отображение на экране как stdout, так и stderr, мы можем перенаправить оба файловых дескриптора на /dev/null. Обратите внимание, как изменяется вывод, когда для той же команды реализовано перенаправление.

ls /var /tecmint
ls /var/ /tecmint &> /dev/null

Пример 3. Использование файла в качестве входных данных для команды

Классический синтаксис команды cat выглядит следующим образом.

cat [file(s)]

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

cat < mail.txt

Пример 4. Отправка вывода команды в качестве ввода другой

Если у вас большой каталог или список процессов и вы хотите иметь возможность быстро найти определенный файл или процесс, вам нужно передать список в grep.

Обратите внимание, что в следующем примере мы используем конвейеры. Первый ищет необходимое ключевое слово, а второй удаляет из результатов фактическую команду grep. В этом примере перечислены все процессы, связанные с пользователем Apache.

ps -ef | grep apache | grep -v grep