Less: различия между версиями

Материал из SysWiki
дано простое описание работы с less
исправлен текст и добавлен раздел про поиск
 
Строка 17: Строка 17:


== Полезные опции и команды ==
== Полезные опции и команды ==
Полный список опций и команд программы less достаточно обширен и может быть просмотрен при помощи команды <code>man less</code>. Ниже будет представлен небольшой набор возможно наиболее полезных или важных опций. Как уже было сказано выше, многие опции командной строки могут быть  
Полный список опций и команд программы less достаточно обширен и может быть просмотрен при помощи команды <code>man less</code>. Ниже будет представлен небольшой набор полезных или важных опций и команд. При этом, как уже было сказано выше, многие опции командной строки могут быть использованы как команды, и наоборот.


=== Опции командной строки ===
=== Опции командной строки ===
Строка 64: Строка 64:
|G
|G
|Переход в конец файла. Если перед командой набрать номер строки, будет осуществлён переход к ней, как и в случае команды g.
|Переход в конец файла. Если перед командой набрать номер строки, будет осуществлён переход к ней, как и в случае команды g.
|-
|F
|Перейти в конец отображаемого файла и ожидать добавления в него новых данных, показывая их по мере появления. Это полезная опция для просмотра, например, файлов логов, она позволяет видеть изменения сразу, не перезапуская программу.
|-
|-
|=
|=
Строка 80: Строка 83:
|Запустить командную оболочку.
|Запустить командную оболочку.
|}
|}
== Поиск ==
Важной составляющей команды less является поиск по содержимому файлов. Шаблон для поиска может рассматриваться как обычный текст и как регулярное выражение, что даёт более широкие возможности для поиска. Для поиска служит команда / (для поиска от текущего положения к началу файла используется команда ?), после команды нужно ввести шаблон для поиска. Например, если нужно найти строку, содержащую слово «user», нужно будет набрать следующую последовательность:
/user
После нажатия на клавишу перевода строки, less покажет первую строку, в которой есть такая подстрока.
Для перехода к следующему результату поиска нужно нажать <code>n</code>, для перехода к предыдущему — нажать <code>N</code>.
По умолчанию предполагается поиск регулярных выражений, что может привести к неожиданному результату для тех, кто не работал с ними. Например, если шаблон для поиска содержит обычную точку, то она будет рассматриваться как любой символ, поэтому, например, по шаблону «abc.» будет найдено не только точное соответствие, под него попадёт, например, и строка, содержащая «abcd», «abc9», «abc!» и т.п. Если вам нужен поиск по простому текстовому соответствию, то, после команды / (или, соответственно, ?) нужно нажать комбинацию клавиш Ctrl-R, для индикации того, что режим поиска переключён, перед приглашением для ввода шаблона появится уведомление: «Regex-off».


== Вопросы безопасности ==
== Вопросы безопасности ==
Команда less позволяет выполнять команды оболочки. Если в процессе выполнения команды less нажать символ «!», то далее можно ввести команду оболочки, например, запустить интерпретатор bash. Чтобы запретить такое поведение, нужно установить переменную окружения LESSSECURE в значение 1. Это может быть актуально например для скриптов, выполняемых через sudo: если в таком скрипте пользователю, при помощи less, постранично показывается некий текст, то пользователь может получить повысить свои привилегии в системе, если переменная LESSSECURE не будет установлена в 1.
Команда less позволяет выполнять команды оболочки. Если в процессе выполнения команды less нажать символ «!», то далее можно ввести команду оболочки, например, запустить интерпретатор bash. Чтобы запретить такое поведение, нужно установить переменную окружения LESSSECURE в значение 1. Это может быть актуально например для скриптов, выполняемых через sudo: если в таком скрипте пользователю, при помощи less, постранично показывается некий текст, то пользователь может получить повысить свои привилегии в системе, если переменная LESSSECURE не будет установлена в 1.

Текущая версия от 18:17, 10 февраля 2024

less — утилита для постраничного вывода информации.

Общие сведения

Утилита less предназначена для постраничного показа на экране терминала содержимого текстовых файлов или потока вывода другой программы. Утилита является продвинутым аналогом программы more, которая обладает достаточно ограниченным функционалом (например, не позволяет осуществлять прокрутку текста назад).

Простейшие примеры вызова программы

less file.txt — постранично покажет содержимое файла file.txt

ls /home/user | less — постранично покажет вывод команды ls /home/user (то есть, список файлов в домашнем каталоге пользователя user)

Опции командной строки и команды

Как и многие другие программы, при вызове утилиты less можно указывать опции командной строки, также в процессе работы ею можно управлять через команды, но при этом команды можно передать как опции командной строки (с предшествующим символом «+»), и наоборот, многие опции командной строки можно ввести как команды в процессе работы программы (просто набирая их на клавиатуре). К примеру, опция «-i» делает поиск нечувствительным к регистру (если шаблон для поиска набран в нижнем регистре), но, если эта опция не была добавлена при вызове, то, в процессе работы с less можно просто набрать символы «-i» в качестве команды, и переключить режим поиска, и, обратный пример, если после вызова less нужно попасть в самый конец файла, что делается командой G, можно, вместо ручного ввода команды, запустить less таким образом: less +G.

Обычно программа less используется для просмотра одного файла (или передаваемой ей на стандартный ввод информации), но также она может показывать (по очереди) содержимое нескольких файлов. В последнем случае, при указании команды в командной строке, префикс «+» означает, что команда будет выполнена только для первого файла, если же она должна быть выполнена для каждого из файлов, нужно использовать префикс «++». Например, чтобы открыть два файла и перейти в конец каждого из них, команда less может быть вызвана таким образом:

less ++G file0.txt file1.txt

Полезные опции и команды

Полный список опций и команд программы less достаточно обширен и может быть просмотрен при помощи команды man less. Ниже будет представлен небольшой набор полезных или важных опций и команд. При этом, как уже было сказано выше, многие опции командной строки могут быть использованы как команды, и наоборот.

Опции командной строки

Опция Назначение
-i или --ignore-case При поиске игнорировать регистр символов, если шаблон набран в нижнем регистре (например, строки «test» и «Test» попадут под шаблон «test», но под шаблон «Test» попадёт только вторая из них).
-I или --IGNORE-CASE При поиске полностью игнорировать регистр символов.
-N или --LINE-NUMBERS Показывать номера строк.
+ Рассматривать последующие символы (до разделителя) как команду, которая должна быть выполнена после открытия файла (только для первого файла, если открывается несколько файлов).
++ Аналогично +, но команда будет выполнена для всех открытых в less файлов.

Команды

Команда Назначение
h или H Вывод справки по командам.
q Выход из less
/ Поиск вперёд. После символа / должен быть введён шаблон, который рассматривается как регулярное выражение, но, если после / (и до ввода шаблона) нажать комбинацию клавиш Ctrl-R, то будет осуществлён простой текстовой поиск.
? Аналогично /, но поиск идёт в обратном направлении.
g Переход в начало файла. Если перед командой набрать номер строки, будет осуществлён переход к ней (например, 10g означает переход к десятой строке.
G Переход в конец файла. Если перед командой набрать номер строки, будет осуществлён переход к ней, как и в случае команды g.
F Перейти в конец отображаемого файла и ожидать добавления в него новых данных, показывая их по мере появления. Это полезная опция для просмотра, например, файлов логов, она позволяет видеть изменения сразу, не перезапуская программу.
= Показать информацию о файле в последней строке.
:n Переход к следующему файлу (если при вызове less в числе параметров было передано больше одного имени файла).
:p Переход к предыдущему файлу (если при вызове less в числе параметров было передано больше одного имени файла).
v Вызвать текстовый редактор.
! Запустить командную оболочку.

Поиск

Важной составляющей команды less является поиск по содержимому файлов. Шаблон для поиска может рассматриваться как обычный текст и как регулярное выражение, что даёт более широкие возможности для поиска. Для поиска служит команда / (для поиска от текущего положения к началу файла используется команда ?), после команды нужно ввести шаблон для поиска. Например, если нужно найти строку, содержащую слово «user», нужно будет набрать следующую последовательность:

/user

После нажатия на клавишу перевода строки, less покажет первую строку, в которой есть такая подстрока.

Для перехода к следующему результату поиска нужно нажать n, для перехода к предыдущему — нажать N.

По умолчанию предполагается поиск регулярных выражений, что может привести к неожиданному результату для тех, кто не работал с ними. Например, если шаблон для поиска содержит обычную точку, то она будет рассматриваться как любой символ, поэтому, например, по шаблону «abc.» будет найдено не только точное соответствие, под него попадёт, например, и строка, содержащая «abcd», «abc9», «abc!» и т.п. Если вам нужен поиск по простому текстовому соответствию, то, после команды / (или, соответственно, ?) нужно нажать комбинацию клавиш Ctrl-R, для индикации того, что режим поиска переключён, перед приглашением для ввода шаблона появится уведомление: «Regex-off».

Вопросы безопасности

Команда less позволяет выполнять команды оболочки. Если в процессе выполнения команды less нажать символ «!», то далее можно ввести команду оболочки, например, запустить интерпретатор bash. Чтобы запретить такое поведение, нужно установить переменную окружения LESSSECURE в значение 1. Это может быть актуально например для скриптов, выполняемых через sudo: если в таком скрипте пользователю, при помощи less, постранично показывается некий текст, то пользователь может получить повысить свои привилегии в системе, если переменная LESSSECURE не будет установлена в 1.