Команда less в Linux
Об утилите и команде more, которая предназначена для постраничного просмотра больших текстовых файлов, мы уже писали. А сегодня расскажем о более функциональной команде less — она позволяет перематывать текст не только вперёд, но и назад, осуществлять поиск в обоих направлениях, переходить сразу в конец или в начало файла.
Особенность less заключается в том, что команда не считывает текст полностью, а загружает его небольшими фрагментами.
Синтаксис и опции less
Запись команды less в терминале выглядит так:
команда опции файл
Наиболее популярные опции:
- -a, —search-skip-screen — не осуществлять поиск в тексте, который в данный момент отображен на экране;
- -bn, —buffers=n — задать размер буфера памяти;
- -c, —clear-screen — листать текст, полностью стирая содержимое экрана (построчная прокрутка работать не будет);
- -Dxcolor, —color=xcolor — задать цвет отображаемого текста;
- -E, —QUIT-AT-EOF — выйти, когда утилита достигнет конца файла;
- -e, —quit-at-eof — выйти, когда утилита второй раз достигнет конца файла;
- -F, —quit-if-one-screen — выйти, если содержимое файла помещается на одном экране;
- -f, —force — открыть специальный файл;
- -hn, —max-back-scroll=n — задать максимальное количество строк для прокрутки назад;
- -yn, —max-forw-scroll=n — задать максимальное количество строк для прокрутки вперёд;
- -i, —ignore-case — игнорировать регистр;
- -I, —IGNORE-CASE — игнорировать регистр, даже если паттерн для поиска содержит заглавные буквы;
- -jn, —jump-target=n — указать, в какой строке должна быть выведена искомая информация;
- -J, —status-column — пометить строки, соответствующие результатам поиска;
- -n, —line-numbers — не выводить номера строк;
- —N, —LINE-NUMBERS — вывести номера строк;
- -s, —squeeze-blank-lines — заменить множество идущих подряд пустых строк одной пустой строкой;
- -w, —hilite-unread — выделить первую строку нового фрагмента текста.
Во время просмотра текста утилитой можно управлять при помощи внутренних команд, набирая их на клавиатуре компьютера. Наиболее часто используемые из них:
- h, H — справка;
- Space, Ctrl+V, f, Ctrl+F — прокрутить текст на один экран вперёд;
- Enter, Return, Ctrl+N, e, Ctrl+E, j, Ctrl+J — прокрутить текст на n строк вперед, по умолчанию n=1;
- y, Ctrl+Y, Ctrl+P, k, Ctrl+K — прокрутить текст на n строк назад, по умолчанию n=1;
- Ctrl+→ — прокрутить текст по горизонтали в конец строки;
- Ctrl+← — прокрутить текст по горизонтали в начало строки;
- :d — удалить текущий файл из списка файлов;
- Ctrl+G, :f — вывести основную информацию о файле;
- q, Q, :q, :Q, ZZ — выход.
Перечень всех опций и внутренних команд можно просмотреть в терминале, выполнив команду
Примеры использования less
Использование опций не является обязательным. Открыть файл можно, выполнив следующую команду:
Командная строка исчезнет, а в окне терминала откроется указанный вами документ. После этого его можно читать, пользуясь для прокручивания строк вперед и назад клавишами Enter и y либо другими.
Внизу окна вы увидите поле с мигающим курсором — здесь можно напечатать какую-либо внутреннюю команду, например, задать утилите паттерн поиска.
Опции нужны для того, чтобы оптимизировать отображение текста и сделать работу с утилитой более удобной. К примеру, в текстах часто встречаются множественные пустые строки. Они «съедают» место на экране, не принося никакой пользы. Поэтому к команде less стоит всегда добавлять опцию -s или —squeeze-blank-lines — она удаляет лишние пустые строки.
less -s textfile.txt
Сравните как выглядит один и тот же текст с использованием опции -s (слева) и без неё (справа).
Впрочем, утилиту less зачастую используют не для чтения текста, а для поиска определенных участков в больших документах. Если вам нужно найти то или иное слово, напечатайте в поле с мигающим курсором /текст (для поиска вниз по тексту) или ?текст (чтобы выполнить поиск less вверх по тексту) и нажмите Enter. При необходимости используйте стандартные паттерны. Все участки текста, которые соответствуют заданным условиям поиска, будут подсвечены контрастным цветом.
Если вас интересует как выйти из less, то для выхода из утилиты и возвращения к командной строке терминала нажмите q, ZZ или выполните другую команду, сигнализирующую о завершении работы.
Следует заметить, что утилита less предназначена только для просмотра документов. Она не позволяет вносить в текст правки, форматировать или пересохранять его.
Выводы
Команда less в Linux пригодится для просмотра по-настоящему больших текстовых файлов, с которыми затруднительно работать в текстовых редакторах вроде vim или с помощью утилит, загружающих весь документ сразу. Если какие-то нюансы управления утилитой less остались вам непонятны, оставьте свой вопрос в комментариях и более опытные пользователи помогут решить проблему.
Про Debian
Дисклеймер: я настоятельно рекомендую прочитать всё же man less. Но подобные рецепты — хорошая штука для новичков. Поэтому пусть будет.
В своё время в никсах существовала утилита под названием more. Она ничерта не умела, кроме как показывать файл. В насмешку над ней появилась утилита less. Которую используют для того же самого, хотя она и умеет намного больше. Наиболее полезные «больше» я вам и расскажу.
Типичное использование less:
less file
После этого откроется файл. Мы можем перемещаться по файлу при помощи стрелочек, pg up, pg down, пробела (на экран) и энтера. Привычное j/k тоже работают.
По открытому файлу можно искать:
/something
?something
(Жмете /, печатаете something)
Поиск можно повторить, пойдя к следующему совпадению, клавишей n, или повторить поиск в обратном направлении (найти предыдущее совпадение) через shift-n.
Можно открыть сразу несколько файлов:
less /dir/file1 file2incurrentdir /dir3/file3
и переключаться между ними при помощи:
:n (cледующий файл)
:p (предыдущий файл)
:d — закроет только текущий файл, оставив остальные в открытом фрейме.
Можно включить режим, аналогичный tail -f. То есть less будет показывать нам новые строки в файле в реальном времени.
Включается сочетанием клавиш shift+f. Отключается — ctrl+c .
Из less можно открыть редактор напрямую. Делается это клавишей v. Откроется либо редактор из переменной editor (или visual), либо vi, если редактор не задан.
Можно запустить tail с параметром -N, тогда он будет показывать номера строк.
Можно перемещаться к началу и концу файла клавишами g и shift+g, соответственно.
Как выйти из режима чтения файлов (в `less`) в терминале Linux?
Я только что установил Cygwin и отобразил содержимое файла с помощью less команды. Теперь я не могу выйти, чтобы ввести другие команды:
Я хочу выйти из этого режима, чтобы набрать некоторые другие команды. Как я могу это сделать?
Чтобы выйти less , введите q .
Кроме того, проверьте man less или введите h изнутри less еще несколько полезных фрагментов информации.
В общем, при условии, что man он был правильно установлен, man xyz расскажет вам, как использовать xyz инструмент. В системах GNU, таких как Cygwin или, по крайней мере, то, что вы называете Linux , man обычно также отображается через less , так что для выхода man снова вы должны набрать q (что также работает more или most какие другие пейджеры используются man или другие команды, которые требуют подкачки в других системах). ).
Я думаю, что вы можете выйти, нажав Ctrl + C .
Просто нажмите Q (строчные буквы). Не нужно ничего нажимать. Иногда вам нужна заглавная буква.
Linux less как выйти
Команда less позволяет задействовать одноименную утилиту, предназначенную для постраничного вывода содержимого текстовых файлов значительного объема. Она похожа на команду more, но имеет больше функций, которые, тем не менее, могут потребоваться далеко не всем пользователям. Утилита особенно удобна для быстрого открытия текстовых файлов, так как не загружает их содержимое полностью.
Базовый синтаксис команды выглядит следующим образом:
$ less [параметры] имя-текстового-файла
Утилита поддерживает большое количество параметров, причем практически все из этих параметров являются узкоспециализированным и едва ли пригодятся большинству пользователей, а самыми востребованными из них являются параметр -N, позволяющий выводить номера строк, что очень удобно при чтении программного кода, параметр -X, позволяющий не очищать содержимое терминала после завершения работы утилиты, а также параметр -I, позволяющий осуществлять поиск в тексте без учета регистра символов. Утилита работает в интерактивном режиме и позволяет использовать команды для навигации по содержимому файла, поиска строк и управления работой утилиты:
Команда | Назначение |
Клавиша со стрелкой вниз, Enter, e, j | Перемещение на одну строку к концу файла |
Клавиша со стрелкой вверх, y, k | Перемещение на одну строку к началу файла |
Пробел, f | Перемещение на одну страницу к концу файла |
b | Перемещение на одну страницу к началу файла |
/текст | Поиск текста по направлению к концу файла |
?текст | Поиск текста по направлению к началу файла |
n | Повторение предыдущего поиска |
N | Повторение предыдущего поиска в обратном направлении |
Home, g | Переход к первой строке файла |
Ng | Переход к строке файла номер N |
End, G | Переход к последней строке файла |
Home, p | Переход к началу файла |
Np | Переход к позиции файла в N процентов |
q | Завершение работы утилиты |
h | Вывод информации о доступных командах |
Команды, не представленные одной клавишей, вводятся после имени файла или двоеточия в последней строке в нижней части экрана.
Примеры использования
Отображение содержимого текстового файла
Для отображения содержимого тестового файла достаточно передать утилите имя этого файла без каких-либо параметров:
$ less oui.txt
OUI/MA-L Organization
company_id Organization
Address
00-22-72 (hex) American Micro-Fuel Device Corp.
002272 (base 16) American Micro-Fuel Device Corp.
2181 Buchanan Loop
Ferndale WA 98248
US
00-D0-EF (hex) IGT
00D0EF (base 16) IGT
9295 PROTOTYPE DRIVE
RENO NV 89511
US
08-61-95 (hex) Rockwell Automation
086195 (base 16) Rockwell Automation
1 Allen-Bradley Dr.
Mayfield Heights OH 44124-6118
oui.txt
Для прокрутки содержимого удобнее всего пользоваться клавишами со стрелками, пробелом, а также клавишами Home и End. Для закрытия файла может использоваться клавиша q.
Поиск в текстовом файле
Для поиска в текстовом файле нужно открыть этот файл и воспользоваться командами /текст или ?текст. Например:
San Francisco CA 94107
US
50-EC-50 (hex) Beijing Xiaomi Mobile Software Co., Ltd
50EC50 (base 16) Beijing Xiaomi Mobile Software Co., Ltd
The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
Beijing Beijing 100085
CN
60-61-DF (hex) Z-meta Research LLC
6061DF (base 16) Z-meta Research LLC
8365 Quay Drive
Arvada CO 80003
US
70-57-BF (hex) New H3C Technologies Co., Ltd
7057BF (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
Hangzhou Zhejiang 310052
CN
8C-E7-48 (hex) Private
/cisco
Если вы хотите осуществлять поиск без учета регистра, следует открыть файл с использованием параметра -I:
$ less -I oui.txt
F4-BD-9E (hex) Cisco Systems, Inc
F4BD9E (base 16) Cisco Systems, Inc
80 West Tasman Drive
San Jose CA 94568
US
58-85-E9 (hex) Realme Chongqing MobileTelecommunications Corp Ltd
5885E9 (base 16) Realme Chongqing MobileTelecommunications Corp Ltd
No.24 Nichang Boulevard, Huixing Block, Yubei District, Chongqing.
Chongqing China 401120
CN
BC-23-92 (hex) BYD Precision Manufacture Company Ltd.
BC2392 (base 16) BYD Precision Manufacture Company Ltd.
No.3001, Bao He Road, Baolong Industrial, Longgang Street,Longgang Zone, Shenzhen
shenzhen 518116
CN
94-E6-F7 (hex) Intel Corporate
/cisco
Как видите, результаты поиска отличаются.
Чтение программного кода
Для чтения программного кода удобнее использовать режим вывода номеров строк. Для этого следует использовать параметр -N.
$ less -N usals.c
1 #include
2 #include
3
4 float deg_to_rad(float degrees)
5 <
6 return degrees * M_PI / 180.0;
7 >
8
9 float rad_to_deg(float radians)
10 <
11 return radians * 180.0 / M_PI;
12 >
13
14 /*float usals(float sitelong, float sitelat, float satlong)
15 <
16 float cangle, elevation, intangle, satazimuth, satelevation, azimuth;
17
18 sitelong = deg_to_rad(sitelong);
19 sitelat = deg_to_rad(sitelat);
20 satlong = deg_to_rad(sitelong);
21
22 cangle = cos(sitelong)*cos(satlong-sitelong);
usals.c
Навигация по файлу будет осуществляться аналогичным образом. Для перехода к строке с заданными номером следует использовать команду Ng, то есть, к примеру, для перехода к десятой строке следует использовать команду 10g.