Как в терминале посмотреть содержимое файла?
Вместо myfile нужно указать имя файла или путь до файла.
Если файл очень большой, то можно вывести только несколько последних строк файла. Для этого используется команда tail:
tail mybigfile
Также можно воспользоваться командой less:
less mygoodfile
Данная команда открывает файл в режиме просмотра — вы можете просматривать содержимое, нажимая клавиши Вверх/Вниз или Enter. Чтобы выйти из режима просмотра нажмите клавишу q.
Как вывести содержимое файла Linux? Открываем текстовый файл в Linux
Если вы работаете с операционной системой Linux, вы должны уметь быстро и правильно просматривать содержимое Linux-файлов, используя терминал. В этой статье мы изучим команды, посредством которых можно открывать текстовые файлы Linux. И поговорим о том, как следует ими пользоваться.
Просмотр текстового файла в Linux полностью
Чтобы вывести содержимое всего текстового файла, в Linux используют команду cat. Она отлично походит для вывода небольших текстовых файлов, к примеру, конфигурационных файлов. Синтаксис прост:
cat [опции]Представьте, что надо посмотреть содержимое файла с названием myfile.txt:
cat myfile.txtТакже можно вместо имени прописать адрес (путь) к файлу:
cat /etc/passwdЕсли нужно посмотреть несколько файлов сразу, это тоже не вызовет проблем:
Кроме того, при просмотре текстового файла в Linux мы можем отобразить номера строк. Для этого потребуется всего лишь использовать опцию -n :
cat -n file.txt
Команда nl функционирует аналогично команде cat с опцией -n , выводя номера строк в столбце слева.
nl file.txtПри необходимости вы можете сделать так, чтобы при выводе текстового файла в конце каждой строки отображался символ $ :
cat -e testВывод будет следующим:
hello everyone, how do you do?$ $ Hey, am fine.$Кроме cat, для вывода содержимого текстового файла в Linux используется команда tac. Её разница заключается в том, что она выводит содержимое файла в обратном порядке.
Как просмотреть файл в Linux с прокруткой
Бывает, что текстовый файл большой, поэтому его содержимое не помещается в один экран. Использовать в таком случае cat неудобно, зато есть less. Синтаксис у неё такой же:
lessКоманда less обеспечит постраничный просмотр, что очень удобно. При этом: 1) less позволяет просматривать текст по определённому числу строк, для чего достаточно указать - (тире или минус) и количество строк:
less -5 myfile.txt2) можно начать просмотр с конкретной строки в файле, указав + (плюс) и номер строки, с которой хотим начать чтение:
less +5 myfile.txtОткрыв текст, мы можем управлять его просмотром:
Просматриваем начало или конец файла в Linux
Порой, нам не нужно выводить содержимое всего файла и мы хотим, к примеру, посмотреть лишь несколько строчек лога. Такое часто бывает, если мы подозреваем, что в начале или в конце конфигурационного файла есть ошибки. Для решения данного вопроса у нас существуют команды head и tail (как вы уже догадались, это голова и хвост).
Команда head по умолчанию показывает лишь 10 первых строчек в текстовом файле в Linux:
head /etc/passwdВот, что мы увидим:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/false daemon:x:2:2:daemon:/sbin:/bin/false adm:x:3:4:adm:/var/adm:/bin/false lp:x:4:7:lp:/var/spool/lpd:/bin/false sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt news:x:9:13:news:/var/spool/news:/bin/false uucp:x:10:14:uucp:/var/spool/uucp:/bin/falseКстати, тут мы тоже можем открыть сразу несколько текстовых файлов в Linux одновременно. Вот просмотр сразу двух файлов:
head /etc/passwd /etc/shadowЕсли же вас не интересуют все 10 строчек, то, как и в случае с cat, можно использовать опцию –n , цифрой указывая число строк к выводу:
head -n5 /var/log/emerge.logВ итоге мы вывели только пять строк:
1394924012: Started emerge on: Mar 15, 2014 22:53:31 1394924012: *** emerge --sync 1394924012: === sync 1394924012: >>> Synchronization of repository 'gentoo' located in '/usr/portage'. 1394924027: >>> Starting rsync with rsync://212.113.35.39/gentoo-portageПо правде говоря, букву n можно и не использовать, достаточно просто передать цифру:
head -5 /var/log/emerge.logКстати, выводить содержимое текстового файла в Linux можно не построчно, а посимвольно. Давайте зададим число символов, которое нужно вывести (используем опцию -с ):
head -c45 /var/log/emerge.logИтак, выводим 45 символов:
1394924012: Started emerge on: Mar 15, 2014 2Не верите, что их действительно 45? Проверить можно командой wc:
head -c45 /var/log/emerge.log | wc -c 45С «головой» разобрались, давайте поговорим про «хвост». Очевидно, что команда tail работает наоборот, выводя десять последних строк текстового Linux-файла:
tail /var/log/emerge.logКоличество строк при выводе тоже можно менять. Однако в tail есть такая полезная опция, как -f . С её помощью содержимое текстового файла будет постоянно обновляться, в результате чего вы станете видеть изменения сразу (постоянно открывать и закрывать файл не придётся). Это весьма удобно, если вы хотите просматривать логи Linux в реальном времени:
tail -f /var/log/emerge.logПросматриваем содержимое файла по шаблону в Linux
На практике зачастую нам необходим не весь текстовый файл, а лишь несколько строк из него. Используя grep, мы можем вывести Linux-файл, предварительно отсеяв лишнее:
grep опции шаблон файлКоманду можно применять и совместно с cat:
cat файл | grep опции шаблонДавайте выведем из лога лишь предупреждения:
cat /var/log/Xorg.0.log | grep WW(WW) warning, (EE) error, (NI) not implemented, (??) unknown. [ 85.839] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled. [ 85.839] (WW) Disabling Keyboard0 [ 85.839] (WW) Disabling Mouse0 [ 87.395] (WW) evdev: A4TECH USB Device: ignoring absolute axes.Есть и ряд полезных опций: -A , -B , -C . Допустим, нам надо выполнить вывод двух строк после вхождения enp2s0:
$ ifconfig | grep -A2 enp2s0enp2s0: flags=4163 mtu 1500 inet 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::beae:c5ff:febe:8bb7 prefixlen 64 scopeid 0x20
А теперь, то же самое, но до вхождения loop:
ifconfig | grep -B2 loopinet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback)Можно по две строки как до, так и после loop:
ifconfig | grep -C2 loopinet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback) RX packets 9810 bytes 579497 (565.9 KiB) RX errors 0 dropped 0 overruns 0 frameПросматриваем Linux-файл в сжатом виде
Порой, в системе встречаются текстовые файлы в сжатом виде и формате gz. Это могут быть конфигурационные файлы ядра либо логи программ. Открыть такие файлы можно тоже через терминал, не прибегая к распаковке. Для этого существует множество аналогов вышеназванных утилит с той лишь разницей, что они имеют приставку z: zgerp, zegrep, zcat, zless.
Давайте откроем сжатый файл в Linux для просмотра:
zcat test.gzИли выполним просмотр сжатого файла с прокруткой:
zless testВот, пожалуй, и всё. Теперь вы точно в курсе, как правильно открывать и просматривать текстовые файлы в терминале Linux.
Просмотр содержимого файлов в командной строке Linux
Рассмотрим несколько команд, которые используются для просмотра содержимого текстовых файлов в командной строке Linux.
Команда cat
Команда cat выводит содержимое файла, который передается ей в качестве аргумента.
cat myfile.txt
Это самый простой и наиболее часто используемый способ для вывода содержимого текстовых файлов. Но выводить большие файлы через cat не всегда удобно.
Команда nl
Команда nl действует аналогично команде cat , но выводит еще и номера строк в столбце слева.
nl mycode.cpp
Команду nl удобно применять для просмотра программного кода или поиска строк в файлах конфигурации.
Команда less
Утилита less выводит содержимое файла, но отображает его только в рамках текущего окна в режиме просмотра.
less myfile.txt
Вы можете прокручивать текст файла клавишами стрелок или перелистывать страницы клавишами w и z .
Для поиска текста внутри файла нажмите / .
Для просмотра списка доступных горячих клавиш нажмите h
Чтобы выйти из режима просмотра используется клавиша q .
Очень удобно, что после выхода окно терминала остается чистым и не содержит текст файла.
Команда more
Команда more очень похожа на команду less . Она также выводит файл в терминале в режиме просмотра, но имеет некоторые отличия от команды less.
Например, less в конце файла выводит сообщение (END) (или EOF — End Of File) и ожидает нажатия клавиши q чтобы закрыть режим просмотра, а more по достижении конца файла сразу возвращает управление в терминал.
Также more после своей работы оставляет текст файла в терминале, а less работает «чисто» и не сохраняет текст в терминале.
more myfile.txt
Команда head
Команда head выводит на экран только первые 10 строк файла.
head somefile.txt
Используя опцию -n можно задать количество строк, которое нужно вывести. Например, чтобы вывести 15 строк используется команда:
head -n15 somefile.txt
Вместо -n можно просто использовать знак минус - , за которым сразу указывается количество строк.
head -11 somefile.txt
Команда tail
Команда tail аналогична команде head , но выводит последние 10 строк файла.
tail somefile.txt
Заключение
Команды, которые мы рассмотрели, имеют дополнительные возможности и области применения. Для получения справки по каждой команде можно воспользоваться Man-страницами.
man cat man nl man less man more man head man tail
Как вывести содержимое файла в консоль linux
Простейший способ вывести текст - использование стандартного вывода. Это удобно для быстрого просмотра части текста, или для передачи ее другим инструментам командной строки.
Многие еще используют для вывода текстовых файлов утилиту cat, особенно, если файл небольшого размера. Чтобы вывести на экран все содержимое файла, используйте cat и укажите имя файла в качестве аргумента.
Используйте опцию `-v' для cat, чтобы вывести символы, не отображаемые на печати, например, управляющие символы. При указанной опции cat выводит эти символы в нотации ``с крышкой'' , т.е. они представляются сочетанием `^' и символа, соответствующего управляющему символу (например, символ звукового сигнала будет представлен как `^G' ).
Чтобы вывести управляющие символы файла `translation', введите:
$ cat -v translation | less [Enter]
Чтобы визуально отобразить конец строки в каждой строке, используйте опцию `-E'; она приведет к тому, что в конце каждой строки появится символ `$' .
Полезной является опция `-T', которая выводит все табуляции в виде `^I' .
Опция `-A' комбинирует все три вышеуказанные опции - как если бы Вы указали опции с помощью `-vET'.
Чтобы вывести только начало текстового файла, используйте команду head. По умолчанию она выводит на экран первые десять строк из своего ввода.
Чтобы вывести первые десять строк файла `placement-list', введите:
$ head placement-list [Enter]
Вы можете указать требуемое число строк для вывода. Если Вы укажете больше строк, чем содержится в файле, head просто выведет весь текст.
Чтобы вывести первую строку файла `placement-list', введите:
$ head -1 placement-list [Enter]
Чтобы вывести 66 строк от начала файла `placement-list', введите:
$ head -66 placement-list [Enter]
Чтобы вывести определенное число символов, а не строк, укажите число символов для вывода через аргумент опции `-c'.
Чтобы вывести первый символ файла `placement-list', введите:
$ head -c1 placement-list [Enter]
Утилита tail работает подобно head, но выводит последнюю часть своего ввода. Как и в head, по умолчанию выводятся десять строк.
Чтобы вывести последние десять строк файла `placement-list', введите:
$ tail placement-list [Enter]
Чтобы вывести последние четырнадцать строк файла `placement-list', введите:
$ tail -14 placement-list [Enter]
Иногда требуется просматривать конец файла непрерывно; это полезно для ``растущих'' файлов, записываемых другими процессами. Чтобы непрерывно просматривать конец файла, используйте tail с опцией `-f'. Нажмите Ctrl-c для прекращения просмотра.
Чтобы непрерывно просматривать конец файла `access_log', введите:
$ tail -f access_log [Enter]
Чтобы вывести на экран определенную строку из файла, используйте утилиту sed. Укажите в кавычках номер нужной строки и сочетание `!d'. Вторым аргументом должно быть имя файла.
Чтобы вывести строку 47 из файла `placement-list', введите:
$ sed '47!d' placement-list [Enter]
Чтобы вывести участок файла в несколько строк, укажите номера стартовой и конечной строки через запятую.
Чтобы вывести строки с 47 по 108 из файла `placement-list', введите:
$ sed '47,108!d' placement-list [Enter]
Вы можете также скомбинировать команды head и tail в конвейер, чтобы добиться нужного результата.
Чтобы вывести десятую строку файла `placement-list', введите:
$ head placement-list tail -1 [Enter]|
Чтобы вывести пятую и четвертую строки с конца файла `placement-list', введите:
$ tail -5 placement-list head -2 [Enter]|
Чтобы вывести 500-й символ файла `placement-list', введите:
$ head -c500 placement-list tail -c1 [Enter]|
Чтобы вывести первый символ пятой строки файла `placement-list', введите:
$ head -5 placement-list tail -1 | head -c1 [Enter]|
Вы можете использовать sed для выделения текста между строками определенного вида и вывода выделенного текста или всего текста, кроме выделенногог участка.Строки для поиска - это либо слова, либо регулярные выражения.
Для выделения определенного абзаца используйте опцию `-n' с указанием строки `'/first/,/last/p'', где first и last - границы выделения. Это полезно, например, для вывода отдельных глав или разделов текста, если Вы знаете способ его разделения.
Чтобы вывести текст из файла `book-draft' между строками `Chapter 3' и `Chapter 4', введите:
$ sed -n '/Chapter 3/,/Chapter 4/p' book-draft [Enter]
Чтобы вывести весь текст, кроме указанного участка, опустите опцию `-n'.
Чтобы вывести весь текст из файла `book-draft', кроме текста между строками `Chapter 3' и `Chapter 4', введите:
$ sed '/Chapter 3/,/Chapter 4/p' book-draft [Enter]
Alex Otwagin 2002-12-16