Редактирование файлов в командной строке

Mac OS X, Tips & Tricks

Редактирование файлов в командной строке Ранее в цикле статей о работе в командной строке Mac OS X мы рассмотрели:

Теперь осталось разобраться с тем, как просматривать и редактировать файлы при помощи командной строки.

Конечно, редактировать файлы можно и в текстовых редакторах с графическим интерфейсом, например, в TextEdit, но если вы работаете на удалённом сервере, куда вы имеете доступ только по ssh, умение просматривать и редактировать файлы в консоли окажется совсем не лишним.

Просмотр содержимого файла

Иногда бывает нужно только посмотреть на содержимое файла, а не редактировать его. Для этого можно использовать утилиту less.

less

Консольная программа less является расширенной версией программы more, которая позволяла просматривать файл только в одном направлении — от начала файла к его концу. То что less позволяет просматривать файлы и в обратном направлении, послужило основой для её названия less (англ. меньше).

Чтобы открыть файл в less, используется следующий синтаксис:

less [параметры] имя_файла

параметры указывать необязательно, а имя_файла — это файл, который необходимо просмотреть.

Использование утилиты less

Открыв файл в less, вы увидите (да, вы правильно предположили) содержимое файла, а также путь до открытого файла внизу на небольшой информационной панели. Если вы достигли конца файла, то там будет также надпись (END).

Просмотр файла с помощью утилиты less

Чтобы перемещаться по файлу, можно использовать следующие клавиши:

Перемещение по содержимому файла в less
Клавиша Действие
F или Пробел Следующая страница
B Предыдущая страница
Enter или J или стрелка вниз Следующая строка
K или стрелка вверх Предыдущая строка
G Начало файла (первая строка)
Shift + G Конец файла (последняя строка)
nG Переход к n-й строке файла

Также в less можно искать по содержимому файла, в том числе, используя RegExp.

Поиск по содержимому файла в less
Клавиша Действие
/ Открывает панель для ввода строки (текста) или регулярного выражения для поиска его в содержимом файла. Поиск происходит в направлении к концу файла.
? То же, что и по нажатию /, но в направлении к началу файла.
N Перейти к следующему найденному паттерну (совпадению текста).
Shift + N Перейти к предыдущему найденному паттерну (совпадению текста).
Другие команды less
Клавиша Действие
Q Выход.
Shift + F Постоянно переходить к концу файла (например, если это лог и в него происходит запись). Работает также как tail ‑f.
= Отобразить информацию об открытом файле.
H Отобразить файл справки less. Для выхода из помощи, нажмите Q.

Также у less есть очень полезные опции, которые можно указать при запуске.

Полезные опции less
Опция Что делает
‑g При поиске будет подсвечиваться только текущее найденное вхождение текста.
‑I Поиск без учёта регистра.
‑M На информационной плашке будет отображаться кроме имени файла ещё и текущая позиция курсора.
‑N Будут отображаться номера строк.
‑S Не переносить длинные строки. Для их просмотра необходимо будет использовать скроллинг.
‑? Показать файл справки less.

cat

cat — это ещё одна полезная утилита для просмотра файлов. Её название является сокращением от catenate, что в переводе с английского значит «соединять». Это потому что она при выводе также может соединять несколько файлов.

Синтаксис команды cat:

cat [параметры] имена_файлов

где параметры — это необязательные параметры команды, а имена_файлов — это файлы, которые указываются через пробел или же только один файл.

Пример вывода программы cat

Например, чтобы вывести содержимое файла hello.txt, который находится на рабочем столе, в стандартный вывод или, говоря проще, в консоль, необходимо выполнить: cat Desktope/hello.txt. Если же указать несколько файлов, то они будут выведены в том же порядке, как они были указаны.

cat удобно использовать для вывода файла на вход какой-либо другой утилиты или для соединения нескольких файлов друг с другом и потоком стандартного ввода. Ну и конечно же, для быстрого просмотра содержимого файла.

Самый простой пример объединения: cat file_1 file_2 > file_12 создаст новый файл, который будет объединять в себе данные из файлов file_1 и file_2.

tail

Также в хозяйстве может пригодиться утилита tail. Она существует не совсем для просмотра файлов, а для вывода последних строк (по умолчанию 10-и последних строк) файла или нескольких файлов, поэтому у неё такое название tail (англ. хвост, заключительная часть). Это может быть очень удобно для слежения за файлом лога, если указать утилите tail параметр ‑f, то она будет выводить все новые строки записанные другим процессом в конец файла.

Например, tail ‑f /var/log/any_log_file будет отслеживать файл /var/log/any_log_file. Чтобы прекратить процесс отслеживания, надо нажать Ctrl+C

Полезные опции tail
Опция Что делает
‑f Продолжать выводить данные файла по мере их появления.
‑F Тоже что и -f, но также пытаться открыть файл, если он стал недоступен (удалён, переименован и т.п.).
‑n число_строк Выводить не последние 10, а столько строк, сколько указано после параметра.

Редактирование файлов в командной строке

Для несложного редактирования файлов, например, файла конфигурации на сервере, на мой взгляд, проще всего использовать nano — простой консольный текстовый редактор. Конечно, существуют более продвинутые и мощные консольные текстовые редакторы, например Vim, но я очень сомневаюсь, что затраченное время на его изучение окупится. Конечно, если ваше занятие не заключается в постоянном редактировании файлов :)

nano был создан в 1999 году, как бесплатная замена редактору Pico. Также nano имеет открытый исходный код. В системе приставок СИ (метрической системы) нано в 1000 раз больше, чем пико, что стало источником имени редактора.

Чтобы открыть файл в nano, достаточно в командной строке выполнить:

nano имя_файла

где имя файла — это файл, который необходимо отредактировать.

Также как и less, nano является полноэкранным приложением. После запуска вы увидите имя файла в заголовке, содержимое файла и под панелью с числом строк в файле будет таблица с сочетаниями клавиш, которые используются для управления редактором. Знак вставки ^ (англ. caret) обозначает клавишу Control.

Пример редактирования текстового файла в редакторе nano

Перемещение курсора можно осуществить при помощи стрелок на клавиатуре.

Полезные команды nano
Клавиша Действие
Control + X Выход из nano. Если в файл были внесены изменения, то надо будет выбрать: сохранить изменения Y или нет N, а можно вернуться к редактированию Control + C.
Control + G Отобразить файл справки nano с полным списком команд. Если вы там увидите сочетание клавиш, которое начинается с M- — это значит, что надо использовать мета-клавишу, но поскольку на клавиатуре Mac’а такой кнопки нет, то вместо неё используется Esc. Например, чтобы добавить отступ слева для строки текста, существует комбинация M-}, чтобы это выполнить, надо использовать такое сочетание: Shift + Esc + ].
Control + O Сохранить изменения, внесённые в файл.
Control + A Перейти в начало текущей строки.
Control + E Перейти в конец текущей строки.
Control + W Искать в файле строку или регулярное выражение.
Control + K Вырезать из текста текущую строку или выделенный текст и поместить его в буфер обмена.
Shift + Esc + 6 Копировать текущую строку или выделенный текст в буфер обмена.
Control + U Вставить текст или строку из буфер обмена.
Esc + A Включить режим выделения текста.
Shift + Control + _ Позволяет ввести номер строки и столбца, куда переводит курсор по нажатию на Enter.
Control + C Отобразить текущее положение (номер строки и столбца) курсора.

Полезные ссылки

Ссылки на руководства на русском языке для рассмотренных в статье команд:

Надеюсь, что помог вам познакомиться с основами просмотра и редактирования файлов в командной строке. Если у вас есть какие-либо вопросы, я готов ответить на них в комментариях.

3 комментария к записи “Редактирование файлов в командной строке”

  1. У tail есть ещё полезная опция: tail -n +1000 /some/big/file выведет всё за исключением первых 1000 строк. Аналогичная (но с «-» вместо «+») опция есть и у head. Вместе их удобно использовать, когда хочется от файла отрезать заголовок и хвост: cat file.txt | tail -n +1000 | head -n -1000 > newfile.txt

  2. Кроме nano, есть ещё vim ! Не все конечно имеют им пользоваться.
    Я боялся, что после Linux mac os мне покажется неудобной, но когда увидел что тут установлен vim по-умолчанию сразу успокоился =)

Добавить комментарий