Как открыть текстовый файл в терминале linux
Перейти к содержимому

Как открыть текстовый файл в терминале linux

  • автор:

Как в терминале посмотреть содержимое файла?

Вместо myfile нужно указать имя файла или путь до файла.

Если файл очень большой, то можно вывести только несколько последних строк файла. Для этого используется команда tail:

tail mybigfile

Также можно воспользоваться командой less:

less mygoodfile

Данная команда открывает файл в режиме просмотра — вы можете просматривать содержимое, нажимая клавиши Вверх/Вниз или Enter. Чтобы выйти из режима просмотра нажмите клавишу q.

Как открыть текстовый файл в Linux

В Linux все настройки, все логи, и почти вся информация хранится в обычных текстовых файлах. Важно уметь правильно и эффективно посмотреть содержимое файла linux с помощью терминала. Это еще одна из статей, ориентированных на новичков.

Вот вы скажете, а что их там открывать, открыл и посмотрел или изменил, и все. Да, но не совсем, терминал Linux настолько гибкий инструмент, что даже обычный просмотр файлов можно очень сильно оптимизировать. Просмотр содержимого файлов Linux — это тоже искусство. В этой инструкции мы рассмотрим все команды, с помощью которых можно открыть текстовый файл linux, поговорим о том как ими пользоваться, а также приведем несколько примеров.

Просмотр файла в Linux полностью

Самая простая и в то же время наиболее часто используемая утилита для просмотра содержимого файла в Linux это cat. Выводит все содержимое файла в стандартный вывод. В параметре нужно передать только адрес файла, или нескольких файлов. Идеально подходит для просмотра небольших файлов. Общий синтаксис команды cat такой:

$ cat опции адрес_файла .

Например просмотр содержимого файла linux /etc/passwd:

Также можно посмотреть сразу несколько файлов:

cat /etc/passwod /etc/group

Если файл доступен только для пользователя root, то нужно перед командой написать sudo:

sudo cat /etc/shadow

Опция -n включает нумерацию строк:

cat -n /var/log/Xorg.0.log

Для удобства, можно включить отображение в конце каждой строки символа $

cat -e /var/log/Xorg.0.log

А также отображение табуляций, все табуляции будут заменены на символ ^I:

cat -T /var/log/Xorg.0.log

Больше о ней говорить не будем, потому что большинство её опций направлены на форматирование вывода, более подробную информацию вы можете посмотреть в статье: Команда cat в Linux.

Просмотр файла в Linux с прокруткой

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

$ less опции файл

Также ее можно комбинировать с cat:

$ cat адрес_файла | less

Например, посмотрим лог Х сервера:

Теперь мы можем листать содержимое файла в Linux с помощью стрелок вверх-вниз. Для того чтобы выйти нажмите q. Также эта утилита поддерживает поиск. Для поиска по файлу нажмите слеш «/». О более правильном способе поиска мы поговорим дальше.

Просмотр только начала или конца файла

Очень часто нам не нужен файл целиком. Например, достаточно посмотреть несколько последних строчек лога, чтобы понять суть ошибки, или нужно увидеть только начало конфигурационного файла. Для таких случаев тоже есть команды. Это head и tail (голова и хвост).

По умолчанию head открывает текстовый файл в Linux и показывает только десять первых строчек переданного в параметре файла:

Можно открыть сразу два текстовых файла в Linux одновременно аналогично cat:

head /etc/passwd /etc/group

Так можно открыть текстовый файл linux или несколько и вывести по десять первых строчек каждого из них.

Если вам не нужны все 10 строчек, опцией -n и цифрой можно указать количество строк которые нужно вывести. Например, 5:

head -n5 /var/log/apt/history.log

Тот же результат можно получить опустив букву n и просто передав цифру в качестве ключа:

head -5 /var/log/apt/history.log

Также можно задать количество байт, которые нужно вывести с помощью опции -с и числа. Например: 45:

head -c45 /var/log/apt/history.log

Тоже хотите подсчитать действительно ли там 45 символов? Используйте команду wc:

head -c45 /var/log/emerge.log | wc -c

Команда tail наоборот, выводит 10 последних строк из файла:

Утилита tail тоже поддерживает изменение количества строк, с помощью опции -n. Но она обладает еще одной интересной и очень полезной опцией -f. Она позволяет постоянно обновлять содержимое файла и, таким образом, видеть все изменения сразу, а не постоянно закрывать и открывать файл. Очень удобно для просмотра логов linux в реальном времени:

tail -f /var/log/Xorg.0.log

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

В большинстве случаев нам нужен не полностью весь файл, а только несколько строк, с интересующей нас информацией. Можно выполнить просмотр файла linux предварительно отсеяв все лишнее с помощью grep. Сначала синтаксис:

$ grep опции шаблон файл

Или в комбинации с cat:

$ cat файл | grep опции шаблон

Например выведем из лога только предупреждения:

cat /var/log/Xorg.0.log | grep WW

Но это еще не все, многие не знают, но у этой утилиты еще несколько полезных опций.

С помощью опции -A можно вывести несколько строк после вхождения:

cat /var/log/Xorg.0.log | grep -A2 WW

С помощью -B — до вхождения:

cat /var/log/Xorg.0.log | grep -B2 WW

А опция -С позволяет вывести нужное количество строк до и после вхождения шаблона:

cat /var/log/Xorg.0.log | grep -C2 WW

Также с помощью grep можно подсчитать количество найденных строк:

cat /var/log/Xorg.0.log | grep -c WW

Шаблоном может быть строка и простые спецсимволы замены. Если вы хотите использовать регулярное выражение укажите опцию -e или используйте egrep. Многие спрашивают, а какая разница между этими утилитами — уже никакой, в большинстве дистрибутивов egrep это ссылка на grep -e. А теперь пример:

cat /var/log/Xorg.0.log | egrep ‘WW|EE’

В примерах этого раздела использовались символы перенаправления ввода, подробнее о них можно почитать в этой статье.

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

Иногда можно встретить в системе текстовые файлы в сжатом виде, формате gz. Это, например, конфигурационный файл ядра, или логи некоторых программ. Для того чтобы открыть файл в linux через терминал не распаковывая его есть целый ряд аналогов вышеописанных утилит с приставкой z. Это zcat, zless, zgerp, zegrep.

Например, открываем сжатый файл для просмотра:

Или более практичный пример, распаковываем и копируем конфигурационный файл ядра в текущую директорию:

zcat /porc/cofig.gz .config

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

А для фильтрации сжатых файлов по шаблону есть zgrep и zegrep. Например, ищем в сжатом логе ошибки:

zgrep ‘EE’ /var/log/Xorg.log.gz

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

Довольно часто, обычного просмотра файла недостаточно и в нём надо что-то поправить. Для решения этой задачи cat уже не подойдёт, надо использовать текстовый редактор. В терминале можно пользоваться nano или vim, а в графическом интерфейсе — gedit. Чтобы открыть файл в терминале выполните:

$ nano /путь/к/файлу

sudo nano /etc/default/grub

Для большинства файлов в директории /etc/ запись доступна только пользователю root. Поэтому команду надо выполнять от имени суперпользователя с помощью sudo. После нажатия клавиши Enter утилита запросит пароль. Введите его, несмотря на то, что символы пароля не отображаются, это нормально. После внесения изменений сохраните их с помощью сочетания клавиш Ctrl + O.

Аналогично, можно открыть этот же файл в текстовом редакторе:

sudo gedit /etc/default/grub

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

Выводы

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

09. Чтение текстовых файлов

Как вы, возможно, поняли, в текстовом интерфейсе всё есть текст – команды, файлы, устройства — всё что угодно. В том числе это касается настроек и логов большинства программ, которые хранятся в виде текстовых файлов. Поэтому инструментов для работы с текстом на UNIX-подобных системах просто дофига. Какие-то из них очень простые, а о каких-то пишут книги на сотни страниц. Ну и чтобы научиться работать с текстом, нам нужен какой-то подопытный файл – и для этого идеально подойдёт файл /etc/passwd – файл, в котором хранится информация о пользователях в системе.

Для начала посмотрим содержимое этого файла. С помощью команды cat мы можем вывести содержимое этого файла в терминал:

cat /etc/passwd 

Как вы видите, в терминале появилось много текста. Мы можем прокрутить его с помощью колёсика мыши, либо с помощью клавиш shift+PgUp, либо shift+PgDn. Запомните эти клавиши, потому что в виртуальном терминале мышка не работает.

Команда cat подойдёт, когда у вас есть относительно небольшой текстовой файл и вам просто нужно посмотреть его содержимое. Но в целом cat – от слова конкатенация – может объединять вывод содержимого нескольких файлов. Для примера возьмём ещё один файл — /etc/group – и выведем оба файла разом:

cat /etc/passwd /etc/group 

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

Ещё cat может пронумеровать строки с помощью ключа -n:

cat -n /etc/passwd 

Ну и обратите внимание, как эта опция работает при выводе двух файлов.

У команды cat есть противоположная команда – tac, которая выводит текст реверсивно, то есть с конца:

tac /etc/passwd 

Как вы заметили, команда cat просто вывела содержимое файла на экран и всё. Если там сотни строк – придётся крутить вверх, вниз. Если у вас задача прочесть какой-то большой файл, то вам больше подойдёт программа-читалка, например, less:

less /etc/passwd 

Такие программы часто называют пейджерами. Стрелки, Enter, pgup-pgdn, пробел – с помощью всего этого можно листать.

Если написать слэш (/) и текст, то less поищет этот текст в файле, а с помощью n или N можно перейти на следующее или предыдущее совпадение соответственно. Ну и q чтобы выйти. Похоже на man? А это потому что man использует less в качестве читалки. Если в man или в less нажать h, то откроется небольшой гайд по командам управления читалкой.

Но жизнь слишком коротка, чтобы читать большие файлы, поэтому часто пользуются двумя командами – head и tail – они показывают определённое количество строк с начала и с конца файла соответственно:

head /etc/passwd tail /etc/passwd 

По умолчанию они показывают 10 строк, но можно указать что-то своё:

head -4 /etc/passwd tail -3 /etc/passwd 

Ещё tail может читать с определённой строки, допустим всё что ниже 35 строки:

tail -n +35 /etc/passwd 

Одна из самых используемых опций tail – ключ f — может показывать, что добавляется в файл в реальном времени:

tail -f logfile 

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

tail -f ~/.bash_history 

Сюда записываются выполненные команды. Так вот, я открываю ещё один эмулятор терминала и ввожу какие-то команды. Потом закрываю новое окно и вижу, что у меня в этот файл добавились строчки. Когда текста много, не всегда понятно, что где куда добавилось, поэтому я могу зажать Enter и у меня появляется пустое пространство. Не беспокойтесь, это никак не влияет на сам файл, это просто для удобства чтения. Чтобы выйти, нажмите Ctrl+c. Возможно вам пока это не понятно, но просто запомните – если вам нужно открыть конец файла и ждать появления новых строчек, например в случае чтения логов, то используется tail с ключом f.

Вообще, одна из лучших фишек команд less, head и tail – то что они не пытаются прочесть весь файл целиком. Вы когда-нибудь пытались открыть текстовой файл на 100 мегабайт? А админы иногда сталкиваются с файлами с размером в пару гигабайт. Бывает — утром пришел на работу, а там сервер не работает. Смотришь – нет места на диске. Почему? А там лог файл на десяток или сотню гигабайт забил весь диск за одну ночь. Да, конечно, по хорошему такие ситуации легко предотвратить, но всё же речь о другом. И вот тебе нужно понять, что это там в логах такого на пару гигов. Сервера просто зависают при попытке открыть такие файлы. Но на линуксах есть эти утилиты, с помощью которых можно запросто прочитать файл любого размера. И так как, обычно, такие большие лог файлы забиваются одними и теми же строчками, то достаточно вывести, допустим, последние строк 50 файла, чтобы понять, что там произошло.

Ну и давайте напоследок затронем ещё одну команду – grep, хотя о ней мы ещё поговорим более подробно в другой раз. grep позволяет нам искать строки текста по шаблону. Допустим, в нашем файле /etc/passwd есть пользователи, которые пользуются интерпретатором bash. Я могу написать:

grep bash /etc/passwd 

и команда выдаст мне только строки, в которых есть слово bash.

Я могу добавить опцию n:

grep -n bash /etc/passwd 

тогда я ещё увижу номера строк.

grep может искать рекурсивно. То есть, я могу указать grep-у, чтобы он нашёл мне все упоминания bash в директории /etc:

grep -rn bash /etc/ 

Как вы видите, вывода много, много где ошибки, потому что не хватает прав.

Я могу использовать ключ l – чтобы просто выводить имена файлов, в которых встречается слово bash:

grep -rl bash /etc/ 

Ну и я могу найти все строки, в которых не содержится это слово, то есть реверсировать поиск с помощью ключа v:

grep -v bash /etc/passwd 

И вот мы затронули 4 команды для чтения текста – cat, less, head и tail, и даже научились искать текст с помощью команды grep. Осталось научиться писать.

© Авторские права 2021, GNU Linux Pro, CC-BY-SA-4.0. Ревизия b16e73a6 .

Как открыть текстовый файл в терминале linux

Сделать это можно с помощью любимого текстового редактора. Чаще всего используются: vi/vim, nano, gedit. Например:

Чтобы перейти в режим вставки (редактирования) нужно нажать Insert или i. Чтобы выйти – Esc. Чтобы выйти из файла без сохранения написать :q! и надать Enter. Чтобы сохранить и выйти написать �� и нажать Enter. Сохранить и не выходить :w + Enter. У этого редатора vim огромное множество функций и горячих клавиш. Подробнее можно почитать в этой или этой статье. Для начинающих рекомендуется nano, в нем проще всего разобраться.

Но я бы рекомендовал пользоваться именно vim. В будущем скажете спасибо ��

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *