- Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки
- Глава 8. Работа с содержимым файлов
- Утилита head
- Утилита tail
- Утилита cat
- Утилита tac
- Утилиты more и less
- Утилита strings
- Практическое задание: работа с содержимым файлов
- Корректная процедура выполнения практического задания: работа с содержимым файлов
- Strings v2.53
- Introduction
- Using Strings
- Strings
- TcpView
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Курс по сетям
- 15 примеров команды PING для диагностики сети
- Руководство по команде grep в Linux
- Рекурсивно найти слово в файлах и папках Linux
- Как перезапустить или перезагрузить Linux сервер из командной строки
- Как показать скрытые файлы в Linux
- Руководство по команде fsck для проверки и восстановления файловой системы
- Изменение регистра символов в командной строке Linux
- Как использовать команду Strings в Linux
- Использование команды strings
- Установка минимальной длины строки
- Ограничение вывода команды strings командой less
- Использование strings с файлами объектов
- Поиск в конкретной области файла
- Вывод номера строки
- Вывод управляющих символов
- Мы не ограничены только файлами
- Поиск нескольких файлов сразу
- Команда strings распутана
Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки
Глава 8. Работа с содержимым файлов
В данной главе мы будем работать с содержимым текстовых файлов , используя утилиты head , tail , cat , tac , more , less и strings .
Также мы познакомимся с возможностями таких инструментов с интерфейсом командной строки, как cat .
Утилита head
Утилита tail
Утилита tail поддерживает и другие полезные параметры, причем некоторые из них мы будем использовать в рамках данного курса.
Утилита cat
Комбинация клавиш Ctrl+d позволяет передать исполняющемуся процессу символ окончания файла (End of File — EOF), что приведет приведет к завершению исполнения процесса cat .
Специальный маркер окончания файла
Утилита tac
Утилиты more и less
Утилита more может оказаться полезной в случае возникновения необходимости вывода содержимого файлов, которое не умещается на экране. Утилита more позволяет ознакомится с содержимым файла, разделенным на страницы. После открытия файла с использованием данной утилиты следует использовать клавишу «пробел» для перехода к следующей странице или клавишу q для выхода из режима просмотра содержимого файла. Некоторые пользователи предпочитают использовать утилиту less вместо утилиты more .
Утилита strings
Практическое задание: работа с содержимым файлов
1. Осуществите вывод первых 12 строк файла /etc/services .
2. Осуществите вывод последней строки файла /etc/passwd .
4. Используйте утилиту cp для создания резервной копии этого файла с именем cnt.txt .
5. Используйте утилиту cat для создания резервной копии этого файла с именем catcnt.txt .
6. Осуществите вывод содержимого файла catcnt.txt таким образом, чтобы строки из файла были выведены в обратном порядке.
7. Используйте утилиту more для вывода содержимого файла /var/log/messages .
8. Осуществите вывод читаемых пользователем строк из бинарного файла /usr/bin/passwd .
9. Используйте утилиту ls для поиска файла наибольшего размера в директории /etc .
10. Откройте два окна терминала (или вкладки) и убедитесь в том, что в каждом из окон открыта одна и та же директория. Введите команду echo это первая строка > tailing.txt в первом окне терминала, после чего выполните команду tail -f tailing.txt во втором окне терминала. Теперь перейдите в первое окно терминала и введите команду echo это вторая строка >> tailing.txt (обратите внимание на два символа >>), после чего убедитесь в том, что средствами команды tail -f во втором окне терминала выводятся обе строки. Прекратите исполнение команды tail -f с помощью сочетания клавиш Ctrl+C .
11. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого файла tailing.txt , после которых в него должны быть добавлены данные из файла /etc/passwd .
12. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого этого файла tailing.txt , перед которыми в него должны быть добавлены данные из файла /etc/passwd .
Корректная процедура выполнения практического задания: работа с содержимым файлов
1. Осуществите вывод первых 12 строк файла /etc/services .
2. Осуществите вывод последней строки файла /etc/passwd .
4. Используйте утилиту cp для создания резервной копии этого файла с именем cnt.txt .
5. Используйте утилиту cat для создания резервной копии этого файла с именем catcnt.txt .
6. Осуществите вывод содержимого файла catcnt.txt таким образом, чтобы строки из файла были выведены в обратном порядке.
7. Используйте утилиту more для вывода содержимого файла /var/log/messages .
8. Осуществите вывод читаемых пользователем строк из бинарного файла /usr/bin/passwd .
9. Используйте утилиту ls для поиска файла наибольшего размера в директории /etc .
Strings v2.53
By Mark Russinovich
Published: July 4, 2016
Download StringsВ (506 KB)
Introduction
Working on NT and Win2K means that executables and object files will many times have embedded UNICODE strings that you cannot easily see with a standard ASCII strings or grep programs. So we decided to roll our own. Strings just scans the file you pass it for UNICODE (or ASCII) strings of a default length of 3 or more UNICODE (or ASCII) characters. Note that it works under Windows 95 as well.
Using Strings
usage:
Strings takes wild-card expressions for file names, and additional command line parameters are defined as follows:
Parameter | Description |
---|---|
-a | Ascii-only search (Unicode and Ascii is default) |
-b | Bytes of file to scan |
-f | File offset at which to start scanning. |
-o | Print offset in file string was located |
-n | Minimum string length (default is 3) |
-s | Recurse subdirectories |
-u | Unicode-only search (Unicode and Ascii is default) |
-nobanner | Do not display the startup banner and copyright message. |
To search one or more files for the presence of a particular string using strings use a command like this:
Download StringsВ (506 KB)
Runs on:
- Client: Windows Vista and higher
- Server: Windows Server 2008 and higher
- Nano Server: 2016 and higher
—>
Strings
Эта утилита предназначена для поиска строк в формате Unicode или ASCII в двоичных образах. Запуск программы осуществляется из интерпретатора командной строки. Strings работает без установки.
Для этого его помещают в папку исполняемых файлов и вводят команду:
—s – включая поддиректории.
—o – печать смещения находится в строке файла.
—a – сканировать только для ASCII.
—u – сканировать только для UNICODE.
—b bytes – байты файла для сканирования.
—n – строка должна быть не меньше n символов длинной.
Пример нахождения нескольких файлов, содержащих одинаковую строку:
strings * | findstr /i f
Выводит информацию об ошибке в открытие каких-либо возможно подходящих файлов. А также список файлов, содержащих данную одинаковую строку.
TcpView
TCPView — это программа, предназначенная для операционной системы Windows, которая выводит на экран списки конечных точек всех установленных в системе соединений по протоколам TCP и UDP с подробными данными, в том числе с указанием локальных и удаленных адресов и состояния TCP-соединений. В операционных системах Windows NT, 2000 и XP программа TCPView также сообщает имя процесса, которому принадлежит конечная точка. В комплект загрузки программы TCPView входит программа Tcpvcon с теми же функциональными возможностями, предназначенная для работы в режиме командной строки.
В режиме командной строки:
Применение программы Tcpvcon аналогично применению служебной программы Netstat, которая встроена в операционную систему Windows.
Синтаксис: tcpvcon [-a] [-c] [-n] [имя процесса или PID]
-a
Показать все конечные точки (по умолчанию на экран выводятся установленные TCP-соединения).
-c
Распечатать в формате CSV.
-n
Не выполнять разрешение адресов.
В результате выполнения выводится список активных соединений, их пид, текущий статус (чтение, временно приостановлен, временно ждет и другие), локальный и удаленный доменные адреса.
При запуске программа TCPView формирует список всех активных конечных точек соединений по протоколам TCP и UDP, отображая все IP-адреса в виде доменных имен. Чтобы переключить режим отображения для просмотра адресов в цифровом виде, можно использовать кнопку панели инструментов или пункт меню. Программа TCPView для каждой конечной точки отображает имя процесса, которому эта точка принадлежит.
По умолчанию программа TCPView обновляет информацию один раз в секунду, но период обновления можно изменить с помощью пункта Update Speed (Скорость обновления) в меню View. Если в период между обновлениями состояние конечной точки изменилось, она выделяется желтым цветом, если конечная точка удалена — красным цветом, новые конечные точки отображаются зеленым цветом.
Чтобы закрыть установленные подключения по протоколам TCP/IP (с отметкой состояния ESTABLISHED (установлено)), можно выбрать пункт Close Connections (Закрыть подключения) в меню File (Файл) или щелкнуть правой кнопкой мыши какое-либо подключение и выбрать в контекстном меню пункт Close Connections.
Данные, отображенные в окне программы TCPView, можно сохранить в виде файла с помощью пункта меню Save (Сохранить).
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
Курс по сетям
15 примеров команды PING для диагностики сети
Руководство по команде grep в Linux
Рекурсивно найти слово в файлах и папках Linux
Как перезапустить или перезагрузить Linux сервер из командной строки
Как показать скрытые файлы в Linux
Руководство по команде fsck для проверки и восстановления файловой системы
Изменение регистра символов в командной строке Linux
Еженедельный дайджест
Как использовать команду Strings в Linux
Нужно просмотреть текст внутри двоичного файла или файла данных? Команда Linux strings извлечет и выведет на терминал биты текста, которые называются «строками».
Обучайся в Merion Academy
Пройди курс по сетевым технологиям
Начать
Linux полон команд, которые могут выглядеть как решения в поисках проблем. Команда strings одна из них. Так, зачем же она нужна? Есть ли похожая команда, которая перечисляет строки для печати из двоичного файла?
Давайте вернемся назад. Двоичные файлы, такие как программные файлы, могут содержать строки читаемого человеком текста. Но как мы их видим? Если использовать cat или less , то, скорее всего, зависнет окно терминала. Программы, предназначенные для работы с текстовыми файлами, не могу обрабатывать исполняемые файлы, содержащие непечатаемые символы.
Большая часть данных в двоичном файле нечитабельна и не могут быть выведены в окно терминала каким-либо образом, так как нет знаков или стандартных символов для представления двоичных значений, которые не соответствуют буквенно-цифровым символам, знакам пунктуации или пробелам. В совокупности они называются «печатаемыми» символами. Остальные — «непечатаемые» символы.
Поэтому попытка просмотра или поиска текстовых строк в двоичном файле или файле данных является проблемой. И вот здесь на помощь спешит strings . Он извлекает строки печатаемых символов из файлов, чтобы другие команды могли использовать эти строки без необходимости контактировать с непечатаемыми символами.
Использование команды strings
На самом деле нет ничего сложного в этой команде: просто передаем команде название файла.
Как пример, мы попробуем просмотреть содержимое исполняемого файла jibber с помощью strings .
На скриншоте ниже список строк, извлечённых из указанного файла:
Установка минимальной длины строки
По умолчанию, команда strings ищет строки, содержащие четыре и более символов. Чтобы изменить значение по умолчанию используется ключ –n .
Имейте ввиду, что чем короче минимальная длина, тем больше шансов получить на выводе бесполезного материала.
Некоторые двоичные значения имеют то же числовое значение, что и значение, представляющее печатаемый символ. Если два из этих числовых значений находятся рядом в файле, а минимальная длина, равна двум, эти байты будут отображаться как строки.
Чтобы установить длину строки равной двум, используйте следующую команду:
Теперь у нас на выводе есть строки, длина который равна двум и более символам. Учтите, что пробел тоже считается печатаемым символом.
Ограничение вывода команды strings командой less
Чтобы ограничить объем выведенной информации вывод команды strings можно передать команде less , а затем прокруткой просматривать всю информацию:
Теперь мы видим список, выводимый командой less , где начало списка отображено первым:
Использование strings с файлами объектов
Обычно исходный код программ компилируется в файлы объектов. Они в свою очередь связаны с файлами библиотек, чтобы создать исполняемый файл. У нас есть файл объектов jibber , давайте посмотрим, что в нем:
Данные выводятся в таблице по 8 колонок, каждая из строк которой заканчивается на букву “H” . В данном примере у нас SQL запрос.
Но если прокрутить ниже, то можно заметить, что форматирование не относится ко всему файлу.
Думаю, интересно видеть разницу между текстовыми строками файла объектов и конечного исполняемого файла.
Поиск в конкретной области файла
Скомпилированные программы имеют различные области, которые используются для хранения текста. По умолчанию, strings ищет текст во всем файле. Это так же, как если бы вы использовали параметр -a (all). Для поиска строк только в инициализированных, загруженных разделах данных в файле используйте параметр -d (data).
Если нет особой причины, то вполне можно обойтись значением по умолчанию.
Вывод номера строки
Иногда бывает необходимо узнать точное смещение, расположение строки в файле. В этом нам поможет ключ –o (offset).
В данном случае номера строки показаны в восьмеричной системе.
Для получения значений в других системах исчисления, достаточно использовать опцию –t , а затем передать нужный ключ: d (десятичная система), x (шестнадцатеричная) или o (восьмеричная). Опция –t с ключом o равнозначна запуску команды strings с ключом –o .
Теперь номера строк показаны в десятичной системе:
А тут в шестнадцатеричной:
Вывод управляющих символов
Команда strings принимает знаки табуляции и пробела, как часть строки, игнорируя при этом символ начала новой строки — /r или возврата каретки — /r . Чтобы включить их отображение нужно добавить ключ –w .
Ниже мы видим пустую строку. Это результат работы управляющих символов: либо символа новой строки, либо символ возврата каретки.
Мы не ограничены только файлами
Мы можем использовать строки с любым, что есть или может создать поток байтов.
С помощью этой команды мы можем просмотреть содержимое оперативной памяти (RAM) нашего компьютера. Нам нужно использовать >sudo, потому что мы получаем доступ /dev/mem . Это символьного файл устройства, в котором хранится изображение оперативной памяти компьютера.
В списке не все содержимое оперативной памяти, а лишь то, что команда strings смогла извлечь.
Поиск нескольких файлов сразу
Маски можно использовать для выбора групп файлов для поиска. Символ * обозначает нуль и больше символов, а символ «?» означает любой отдельный символ. Можно также указать в командной строке множество имен файлов.
Мы будем использовать маску для поиска всех исполняемых файлов в каталоге /bin . Поскольку список будет содержать результаты из многих файлов, будет использоваться параметр -f (имя файла). Имя файла будет напечатано в начале каждой строки. Затем можно просмотреть файл, в котором была найдена данная строка.
Затем передадим результаты через grep и выведем строки, содержащие слово «Copyright»:
Мы получаем упорядоченный список с об авторских правах каждого файла в каталоге /bin , с именем файла в начале каждой строки.
Команда strings распутана
Команда strings – это не какая-то тайная команда. Это обычная команда Linux. Он делает выполняет конкретные задачи и делает это очень хорошо. Это еще один из преимуществ Linux, и действительно мощных в сочетании с другими командами. Когда вы видите, как он может оперировать двоичными файлами и другими инструментами, такими как grep, начинаете по-настоящему ценить функциональность этой слегка непонятной команды.