Настройка и работа в Linux

         

Прелюдия Гуляем по ЛЕССу


Перед тем как что-то искать, давайте разберемся чего будем делать с той информацией которую найдем. Любая Юникс подобная система, оснащена полезнейшей утилитой под названием less.

На кажущуюся простоту less являет собой довольно мощную утилиту для просмотра текстовых файлов, можно сказать что она справляется со своей задачей на твердую пятерку с плюсом. Однако у новичков, особенно после гипертекстовых систем помощи распространенных в ВЫНе, сия утилита может вызвать некоторое разочарование, которое связано исключительно с неумением ею пользоваться. А так как по умолчанию именно less является дежурным просмоторщиком man-страниц, то считаю просто необходимым рассмотреть основные его возможности и способы их использования.

"Историческая справка"

В стародавние времена народ заколупался выводить большие листинги программ с помощью обычного cat, который не умел выводить файлы по частям, а выплевывал на экран все содержимое файла целиком, тогда какой то умный дядька придумал утилиту more, которая выводила информацию постранично, выведет страницу и ждет, когда юзер скажет еще мол, и выводит еще одну страницу, поэтому и называлась она more. Но у юзеров была дырявая память, и они забывали что было написано на предыдущей странице, но вернуться назад more, не умел, чем очень расстраивал забывчивых юзеров, которым приходилось заново перезапускать его, тогда другой добрый дядя написал утилиту, которая умела листать файлы как вперед, так и назад, юзеры остались довольны, осталось придумать название утилиты. И в свойственном юникс стиле, в противоположность more; назвали утилиту less.

О названиях тех или иных команд, можно говорить очень долго, на ум приходит история с cat, имя которой происходит от слова конкатенация, соединение. Как-то мне понадобилось получить строки файла в обратном порядке, я на 100% был уверен что такая утилита должна быть, ее просто на может не быть. Искал долго и нудно, даже предполагал что она должна както хитро называться, я бы не удивился если бы она называлась dog. Уже не помню как я нашел то что мне было нужно..... Оно называлось tac! Забавно не правда-ли? cat - задом наперед. Игра словами очень характерная черта для юникс, сюда же можно приплести и такие название как GNU, YACC, bash, hurd. Всего не упомнишь.

После того как вы наберете к примеру man less, на экране появится соответствующая страница руководства, давайте посмотрим как можно перемещаться по ней:


space f страница вниз; enter e j строка вниз; d ^D полэкрана вниз; b ^B страница вверх; y k строка вверх; u ^U пол экрана вверх; g переход на начало файла; G переход в конец файла; r перерисовать текущий экран; F перейти в конец файла, и ожидать новой порции данных, полезно при просмотре логов; { } поиск парной фигурной скобки, в первом случае к открывающей находящейся в верхней строке экрана, во втором случае к закрывающей находящейся в нижней строке экрана. Аналогичные по функциям клавиши - [ ] ( ), предназначены для соответствующих скобок; m <char> маркирует текущую позицию, присваивая ей имя введенного символа; ' <char> переход на ранее отмеченную позицию, имена ^, $, предопределены и являются метками начала и конца файла соответственно. Двойное нажатие на ' - возврат в позицию файла в которой вы были пред последним большим перемещением. Кроме позиции в файле запоминается имя самого файла, то бишь при просмотре нескольких файлов можно ставить метки в разных файлов и переходить между ними; /pattern поиск в документе заданной подстроки, можно использовать регулярные выражения, например моим любимым является выражение следующего вида /^ +text, с помощью него ищется текст, находящийся в начале строки, таким образом можно найти к примеру описание нужного ключа, так если нужно найти описание -S, то в качестве запроса задаем /^ +-S, и находим то что требуется. Если сразу после косой черты ввести один из следующих символов: ^N или !,^E или *, ^F или @, ^K, ^R, то это изменит характер поиска. Так ^N или ! - инвертируют результат поиска, т.е. будет искаться строка не соответствующая запросу, ^E или * - говорит о том что вести поиск в нескольких файлах, так если в текущем файле строка найдена не будет, то поиск будет продолжен в следующем файле заданном в командной строке, ^F или @ - произвести поиск начиная с первой строки, первого файла указанного в командной строке, ^K - произвести поиск с сохранением текущей позиции, так соответствующие шаблону подстроки будут просто подсвечены, а текущая позиция не изменится, и наконец ^R - выключает интерпретацию регулярных выражений в строке поиска; ?pattern тоже что и предыдущее, но в обратном направлении; n и N повторяет предыдущую команду поиска, в первом случае в прямом направлении, а во втором, в обратном; :n :p :x переход к следующему, предыдущему или первому файлу заданному в командной строке соответственно; ! <shell-command> выполнить заданную команду интерпретатора; | <mark> <shell-command> направить участок файла начиная с первой строки отображаемой на экране и до указанной метки по конвейеру заданной команде, если вместо метки указана . - то передается текущий экран; s filename записать информацию в файл, работает только для конвейеров. q выход из программы; Это далеко не все клавиши, а только наиболее полезные с моей точки зрения, за более подробной информацией обращайтесь к Мане.


Содержание раздела