Как я уже неоднократно упоминал в своих предыдущих руководствах по Linux , практически всё в Linux представляет собой файлы, и очень часто это текстовые файлы. Например, все файлы конфигурации в Linux — текстовые. Чтобы перенастроить приложение в Linux, достаточно просто открыть файл конфигурации, изменить текст, сохранить его заново и перезапустить приложение, после чего изменения будут применены.
При таком большом количестве текстовых файлов работа с текстом становится критически важной для управления Linux и приложениями Linux. В этом руководстве мы рассмотрим несколько команд и методов для работы с текстом в Linux.
Для демонстрации мы будем использовать файлы лучшей в мире системы обнаружения сетевых вторжений (NIDS) Snort.
Кали > кот /etc/snort/snort.conf
Как видите, snort.conf отображается на экране до конца файла. Не самый удобный и практичный способ работы с этим файлом.
kali > head /etc/snort/snort.conf
Если мы хотим увидеть больше или меньше, чем 10 строк по умолчанию, мы можем указать head, сколько строк мы хотим увидеть, указав нужное нам количество строк (с помощью ключа –) между командой и именем файла.
кали > голова -20 /etc/snort/snort.conf
Здесь мы видим, что отображаются только первые 20 строк snort.conf.
Кали > хвост /etc/snort/snort.conf
Обратите внимание, что он отображает некоторые из последних включений файлов правил, но не все. Давайте теперь посмотрим, сможем ли мы отобразить все включения правил, используя последние 20 строк из snort.conf.
Кали > хвост -20 /etc/snort/snort.conf
Теперь мы можем просмотреть почти все правила на одном экране.
Кали > нл /etc/snort/snort.conf
Обратите внимание, что теперь каждая строка имеет номер, что значительно упрощает поиск ссылок.
kali > cat /etc/snort/ snort.conf | grep output
Эта команда сначала получит файл snort.conf, а затем передаст его через конвейер (|) команде grep, которая примет его на вход, а затем выполнит поиск слов «output» и отобразит только эти строки. Grep — мощная и незаменимая команда для работы в Linux, поскольку она может сэкономить нам часы, потраченные на поиск каждого слова или команды.
kali > cat /etc/snort/snort.conf | grep mysql
Мы видим, что команда grep нашла два вхождения слова mysql.
Предположим, мы хотим, чтобы sed заменил все вхождения mysql на MySQL (помните, Linux чувствителен к регистру), а затем сохранил новый файл в snort2.conf.
Мы можем сделать это, набрав:
kali > sed s/mysql/MySQL/g /etc/snort/snort.conf > snort2.conf
Эта команда говорит: «найти слово mysql и заменить его на слово MySQL глобально (т. е. везде, где вы его найдете в файле)».
kali > cat /etc/snort/snort2.conf | grep MySQL
Теперь, когда мы выполняем grep snort2.conf для mysql, мы видим, что ничего не найдено, а когда мы выполняем grep для MySQL, мы находим два вхождения MySQL.
Если мы просто хотим заменить только первое вхождение слова mysql, мы можем опустить завершающий символ g (для global), и тогда будет заменено только первое вхождение.
kali > sed s/mysql/MySQL/ snort.conf > snort2.conf
Команда sed также может использоваться для поиска и замены любого конкретного вхождения слова. Например, если я хочу заменить только второе вхождение слова mysql, я могу просто указать номер вхождения в конце команды, и sed заменит только второе вхождение слова «mysql» на «MySQL».
kali > sed s/mysql/MySQL/3 snort.conf > snort2.conf
Шаг 7: Меньше значит больше
Хотя cat — хорошая утилита для отображения файлов и создания небольших файлов, у неё, безусловно, есть недостатки при отображении больших файлов. Когда мы используем cat для snort.conf, она прокручивает множество страниц, пока не дойдёт до конца. Не очень практично.
Для работы с большими файлами у нас есть две другие утилиты: more и less. More появилась первой и используется в страницах руководства (man). Откроем snort.conf командой more.
Кали > подробнее /etc/snort/snort.conf
Обратите внимание, что more отображает только первую страницу, а в нижнем левом углу указывается, какая часть файла показана (в данном случае 2%).
Чтобы увидеть дополнительные строки или страницы, можно использовать клавишу ENTER или клавиши PAGE UP или PAGE DN для перехода на целую страницу. Чтобы выйти из других разделов, просто нажмите «q» (выход).
less очень похож на more, но с дополнительной функциональностью, отсюда и распространённая шутка поклонников Linux : «Less is more».
Давайте откроем snort.conf с помощью less.
кали > меньше /etc/snort/snort.conf
Обратите внимание, что в левом нижнем углу экрана less выделил путь к файлу.
Если нажать клавишу /, less позволит нам искать термины в файле. Например, при настройке snort нам нужно определить, как и куда отправлять выходные данные. Если нам нужно найти этот раздел файла конфигурации, мы можем просто ввести:
/выход
Это немедленно перенесет нас к первому вхождению выходных данных и выделит его.
Затем мы можем поискать следующее вхождение выходных данных, введя «n» для следующего.
Как видите, less перенёс нас к следующему вхождению слова в результатах поиска, выделил все поисковые запросы и, в данном случае, перенёс нас прямо в раздел результатов поиска snort. Как удобно!
При таком большом количестве текстовых файлов работа с текстом становится критически важной для управления Linux и приложениями Linux. В этом руководстве мы рассмотрим несколько команд и методов для работы с текстом в Linux.
Для демонстрации мы будем использовать файлы лучшей в мире системы обнаружения сетевых вторжений (NIDS) Snort.
Шаг 1: Cat That File
Как было показано в предыдущем уроке, cat — это, пожалуй, самая простая команда для отображения текста. Давайте выполним команду cat для файла конфигурации Snort, находящегося в /etc/snort.Кали > кот /etc/snort/snort.conf
Как видите, snort.conf отображается на экране до конца файла. Не самый удобный и практичный способ работы с этим файлом.
Шаг 2: Возьмите голову
Если нам нужно просмотреть только начало файла, можно использовать команду head. По умолчанию эта команда отображает первые 10 строк файла.kali > head /etc/snort/snort.conf
Если мы хотим увидеть больше или меньше, чем 10 строк по умолчанию, мы можем указать head, сколько строк мы хотим увидеть, указав нужное нам количество строк (с помощью ключа –) между командой и именем файла.
кали > голова -20 /etc/snort/snort.conf
Здесь мы видим, что отображаются только первые 20 строк snort.conf.
Шаг 3: хватайтесь за хвост
Подобно команде head, мы просматриваем последние строки файла с помощью команды tail. Давайте применим её к файлу snort.conf.Кали > хвост /etc/snort/snort.conf
Обратите внимание, что он отображает некоторые из последних включений файлов правил, но не все. Давайте теперь посмотрим, сможем ли мы отобразить все включения правил, используя последние 20 строк из snort.conf.
Кали > хвост -20 /etc/snort/snort.conf
Теперь мы можем просмотреть почти все правила на одном экране.
Шаг 4: Нумерация строк
Иногда, особенно при работе с очень длинными файлами, может потребоваться отображение файла с номерами строк. Вероятно, это относится к файлу snort.conf, поскольку он содержит более 600 строк. Это упрощает ссылку на изменения и позволяет вернуться к тому же месту в файле. Чтобы отобразить файл с номерами строк, просто введите:Кали > нл /etc/snort/snort.conf
Обратите внимание, что теперь каждая строка имеет номер, что значительно упрощает поиск ссылок.
Шаг 5: Я использую Grep для этого
После cat, grep, пожалуй, самая распространённая команда для работы с текстом. Это команда фильтрации, другими словами, она позволяет фильтровать содержимое файла для отображения. Например, если мы хотим увидеть все случаи, когда в файле snort.conf встречается слово «output», мы можем указать cat отображать только те строки, где оно встречается, введя:kali > cat /etc/snort/ snort.conf | grep output
Эта команда сначала получит файл snort.conf, а затем передаст его через конвейер (|) команде grep, которая примет его на вход, а затем выполнит поиск слов «output» и отобразит только эти строки. Grep — мощная и незаменимая команда для работы в Linux, поскольку она может сэкономить нам часы, потраченные на поиск каждого слова или команды.
Шаг 6: Я сказал, что это работает
Команда sed, по сути, позволяет искать вхождения слова или текстового шаблона, а затем выполнять с ними некоторые действия. Название происходит от концепции потокового редактора и представляет собой сокращение этих двух слов. В своей простейшей форме sed работает подобно функции поиска и замены в Windows. Давайте найдём слово «mysql» в файле snort.conf с помощью grep.kali > cat /etc/snort/snort.conf | grep mysql
Мы видим, что команда grep нашла два вхождения слова mysql.
Предположим, мы хотим, чтобы sed заменил все вхождения mysql на MySQL (помните, Linux чувствителен к регистру), а затем сохранил новый файл в snort2.conf.
Мы можем сделать это, набрав:
kali > sed s/mysql/MySQL/g /etc/snort/snort.conf > snort2.conf
Эта команда говорит: «найти слово mysql и заменить его на слово MySQL глобально (т. е. везде, где вы его найдете в файле)».
kali > cat /etc/snort/snort2.conf | grep MySQL
Теперь, когда мы выполняем grep snort2.conf для mysql, мы видим, что ничего не найдено, а когда мы выполняем grep для MySQL, мы находим два вхождения MySQL.
Если мы просто хотим заменить только первое вхождение слова mysql, мы можем опустить завершающий символ g (для global), и тогда будет заменено только первое вхождение.
kali > sed s/mysql/MySQL/ snort.conf > snort2.conf
Команда sed также может использоваться для поиска и замены любого конкретного вхождения слова. Например, если я хочу заменить только второе вхождение слова mysql, я могу просто указать номер вхождения в конце команды, и sed заменит только второе вхождение слова «mysql» на «MySQL».
kali > sed s/mysql/MySQL/3 snort.conf > snort2.conf
Шаг 7: Меньше значит больше
Хотя cat — хорошая утилита для отображения файлов и создания небольших файлов, у неё, безусловно, есть недостатки при отображении больших файлов. Когда мы используем cat для snort.conf, она прокручивает множество страниц, пока не дойдёт до конца. Не очень практично.
Для работы с большими файлами у нас есть две другие утилиты: more и less. More появилась первой и используется в страницах руководства (man). Откроем snort.conf командой more.
Кали > подробнее /etc/snort/snort.conf
Обратите внимание, что more отображает только первую страницу, а в нижнем левом углу указывается, какая часть файла показана (в данном случае 2%).
Чтобы увидеть дополнительные строки или страницы, можно использовать клавишу ENTER или клавиши PAGE UP или PAGE DN для перехода на целую страницу. Чтобы выйти из других разделов, просто нажмите «q» (выход).
less очень похож на more, но с дополнительной функциональностью, отсюда и распространённая шутка поклонников Linux : «Less is more».
Давайте откроем snort.conf с помощью less.
кали > меньше /etc/snort/snort.conf
Обратите внимание, что в левом нижнем углу экрана less выделил путь к файлу.
Если нажать клавишу /, less позволит нам искать термины в файле. Например, при настройке snort нам нужно определить, как и куда отправлять выходные данные. Если нам нужно найти этот раздел файла конфигурации, мы можем просто ввести:
/выход
Это немедленно перенесет нас к первому вхождению выходных данных и выделит его.
Затем мы можем поискать следующее вхождение выходных данных, введя «n» для следующего.
Как видите, less перенёс нас к следующему вхождению слова в результатах поиска, выделил все поисковые запросы и, в данном случае, перенёс нас прямо в раздел результатов поиска snort. Как удобно!