Содержание:
С возвращением, мои начинающие хакеры!
Как мы уже упоминали в предыдущих статьях, почти все в Linux — это файлы, и очень часто это текстовые файлы. Например, все файлы конфигурации в Linux представляют собой именно текстовые файлы. Чтобы перенастроить приложение, нам нужно просто открыть его файл конфигурации, изменить содержимое, сохранить сделанные изменения, а затем перезапустить приложение и новые настройки конфигурации будут применены.
С таким количеством текстовых файлов умение работать с текстом становится решающим для управления как самой Linux так и приложениями. В этом уроке мы рассмотрим несколько команд и способов обращения с текстом в Linux. Для демонстрационных целей мы будем использовать файлы из лучших в мире пакетов NID и Snort.
Шаг 1. Команда cat
Как показано в одной из предыдущих статей, команда cat является самой основной командой для отображения текста. Давайте используем ее для демонстрации содержимого файла конфигурации Snort, который находится в /etc/snort
cat /etc/snort/snort.conf
Как видите, содержимое snort.conf прокручивается на мониторе до тех пор, пока не дойдет до конца файла. И это конечно не очень удобный способ работы с таким длинным файлом.
Шаг 2. Использование команды head
Если мы просто хотим просмотреть начало какого-нибудь файла, то в этом случае можно воспользоваться командой head. По умолчанию эта команда отображает первые 10 строк файла.
head /etc/snort/snort.conf
Если мы хотим увидеть больше или меньше чем 10 строк по умолчанию, то мы можем явно указать, сколько строк нам нужно. Делается это через использование дефиса между названием команды и именем файла.
head -30 /etc/snort/snort.conf
Теперь мы видим первые 30 строк файла snort.conf
Шаг 3. Команда tail
Команда tail работает аналогично команде head, только показывает она последние строки файла. Давайте испробуем ее на snort.conf
tail /etc/snort/snort.conf
Обратите внимание, что отображаются некоторые из последних строк «include» rule-файлов, но далеко не все. Давайте теперь посмотрим, можем ли мы отобразить все правила «include», захватив последние 40 строк файла snort.conf
tail -40 /etc/snort/snort.conf
Вот теперь видно практически все включения rule-файлов.
Шаг 4. Отображение номеров строк
Иногда, особенно когда работаем с очень длинными файлами, мы можем отобразить файл с номерами строк. И это как раз случай snort.conf, так как у него 838 строк. Номера строк упрощают обращение к изменениям и дают возможность быстро вернуться в одно и то же место в файле. Чтобы отобразить файл с номером строк, просто введите:
nl snort.conf
Обратите внимание, что теперь все строки файла пронумерованы. Это упрощает поиск конкретных строк.
Шаг 5. Команда grep
После cat команда grep, вероятно, является самой широко используемой командой обработки текста. Это команда фильтрации. Она позволяет фильтровать содержимое файла и потом отображает результат. Если, например, мы хотим увидеть все вхождения слова «database» в нашем файле snort.conf, то мы используем команду cat, чтобы отобразить только те строки, где оно встречается. Наберите:
cat /etc/snort/ snort.conf | grep database
Эта команда сначала возьмет содержимое файла snort.conf, а затем пропустит его (благодаря символу «|») через команду grep, которая, в свою очередь, примет содержимое файла как входные данные, найдет все вхождения слова «database» и покажет только эти строки. Grep — мощная и важная команда для работы в Linux, так как она может сэкономить нам уйму времени, которое мы могли бы потратить на поиски нужных слов или команд.
Шаг 6. Команда sed
Команда sed позволяет искать вхождения слов или текстовых шаблонов, а затем выполнять некоторую работу над ними. Название происходит из концепции потокового редактора (stream editor) и является сокращением этих двух слов — sed. В своей самой базовой форме sed работает как функция поиска и замены в Windows. Давайте поищем слово «mysql» в файле snort.conf с помощью команды grep.
cat /etc/snort/snort.conf | grep mysql
Как видно, команда grep нашла пять вхождений слова mysql.
Предположим, мы хотим, чтобы sed заменил каждое найденное вхождение слов mysql на слово MySQL (помните, что Linux чувствителен к регистру), а затем сохранил новый файл в snort2.conf. Чтобы сделать это, нужно набрать:
sed s/mysql/MySQL/g snort.conf > snort2.conf
Эта команда говорит: «Выполнить глобальный поиск (т.е. целиком по всему файлу) слова mysql и заменить его словом MySQL».
Теперь, если мы используем команду grep snort2.conf для поиска mysql, то увидим, что ни одного вхождения этого слова не было найдено, а если мы воспользуемся grep для MySQL, то найдем пять вхождений MySQL.
cat /etc/snort/snort.conf | grep MySQL
Если мы хотим просто заменить первое вхождение слова mysql, мы можем убрать завершающий параметр «g», и команда заменит только первое вхождение.
sed s/mysql/MySQL/ snort.conf > snort2.conf
Команда sed также может использоваться для поиска и замены любого конкретного вхождения данного слова. Например, если я хочу заменить только третье вхождение слова mysql, то я могу просто поместить номер этого вхождение в конец команды, и sed заменит только третье вхождение слова «mysql» на «MySQL»
sed s/mysql/MySQL/3 snort.conf > snort2.conf
Оставайтесь с нами
Вот и все на сегодня, но впереди еще много интересного, поэтому ознакомьтесь с нашим разделом по основам Linux ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9), чтобы быть в курсе последних новостей. Если у вас есть какие-либо вопросы по использованию команд sed, cat, head, tail, nl или grep — задайте их в комментариях ниже или поищите ответ на форуме.