В Linux все настройки, все логи, и почти вся информация хранится в обычных текстовых файлах. Важно уметь правильно и эффективно посмотреть содержимое файла linux с помощью терминала. Это еще одна из статей, ориентированных на новичков. Вот вы скажете, а что их там открывать, открыл и посмотрел, и все. Да, но не совсем, терминал Linux настолько гибкий инструмент, что даже обычный просмотр файлов можно очень сильно оптимизировать. Просмотр содержимого файлов Linux — это тоже искусство. В этой инструкции мы рассмотрим все команды, с помощью которых можно открыть текстовый файл linux, поговорим о том как ими пользоваться, а также приведем несколько примеров.
ПРОСМОТР ФАЙЛА В LINUX ПОЛНОСТЬЮ
Самая простая и в то же время наиболее часто используемая утилита для просмотра содержимого файла linux — cat. Выводит все содержимое файла в стандартный вывод. В параметре нужно передать только адрес файла, или нескольких файлов. Идеально подходит для просмотра небольших файлов. Общий синтаксис команды cat такой:
cat опции адрес_файла .
Например просмотр содержимого файла linux /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
Также можно посмотреть сразу несколько файлов:
Hello everybody
Hi world,
Опция -n включает нумерацию строк:
cat -n /var/log/Xorg.0.log
1 [ 85.675]
2 X.Org X Server 1.17.4
3 Release Date: 2015-10-28
4 [ 85.675] X Protocol Version 11, Revision 0
5 [ 85.675] Build Operating System: Linux 4.0.5-gentoo x86_64 Gentoo
6 [ 85.675] Current Operating System: Linux seriyyy95-pc 4.1.12-gentoo #2 SMP Tue Dec 29 14:50:59 EET 2015 x86_64
Для удобства, можно включить отображение в конце каждой строки символа $
hello everyone, how do you do?$
$
Hey, am fine.$
А также отображение табуляций, все табуляции будут заменены на символ ^I:
hello ^Ieveryone, how do you do?
Больше о ней говорить не будем, потому что большинство ее опций направлены на форматирование вывода, и вы сможете их легко изучить выполнив:
Есть еще одна очень похожая на cat утилита — tac. Принимает те же параметры и делает то же самое, только наоборот — выполняет вывод содержимого файла linux в обратном порядке — с конца:
ПРОСМОТР ФАЙЛА В LINUX С ПРОКРУТКОЙ
Если файл очень длинный и его содержимое не помещается на одном экране, cat использовать не очень удобно. для таких случаев есть less. Синтаксис тот же:
$ less опции файл
Также ее можно комбинировать с cat:
$ cat адрес_файла | less
Например, посмотрим лог Х сервера:
Теперь мы можем листать содержимое файла в Linux с помощью стрелок вверх-вниз. Для того чтобы выйти нажмите q. Также эта утилита поддерживает поиск. Для поиска по файлу нажмите слеш «/». О более правильном способе поиска мы поговорим дальше.
ПРОСМОТР ТОЛЬКО НАЧАЛА ИЛИ КОНЦА ФАЙЛА
Очень часто нам не нужен файл целиком. Например, достаточно посмотреть несколько последних строчек лога, чтобы понять суть ошибки, или нужно увидеть только начало конфигурационного файла. Для таких случаев тоже есть команды. Это head и tail (голова и хвост).
По умолчанию head открывает текстовый файл в Linux и показывает только десять первых строчек переданного в параметре файла:
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
Так можно открыть текстовый файл linux или несколько и вывести по десять первых строчек каждого из них.
Если вам не нужны все 10 строчек, опцией -n и цифрой можно указать количество строк которые нужно вывести. Например, 5:
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
Также можно задать количество байт, которые нужно вывести с помощью опции -с и числа. Например: 45:
head -c45 /var/log/emerge.log
1394924012: Started emerge on: Mar 15, 2014 2
Тоже хотите подсчитать действительно ли там 45 символов? Используйте команду wc:
head -c45 /var/log/emerge.log | wc -c
Команда tail наоборот, выводит 10 последних строк из файла:
[ 141.977] (—) NVIDIA(GPU-0):
[ 141.977] (—) NVIDIA(GPU-0): DFP-1: disconnected
[ 141.977] (—) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 141.977] (—) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 141.977] (—) NVIDIA(GPU-0):
Утилита 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
(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 можно вывести несколько строк после вхождения:
$ ifconfig | grep -A2 enp2s0
enp2s0: 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
С помощью -B — до вхождения:
ifconfig | grep -B2 loop
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
А -С позволяет вывести нужное количество строк до и после вхождения шаблона:
ifconfig | grep -C2 loop
inet 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 0
Также с помощью grep можно подсчитать количество найденных строк:
ifconfig | grep –c inet6
Шаблоном может быть строка и простые спецсимволы замены. Если вы хотите использовать регулярное выражение укажите опцию -e или используйте egrep. Многие спрашивают, а какая разница между этими утилитами — уже никакой, в большинстве дистрибутивов egrep это ссылка на grep -e. А теперь пример:
ifconfig | egrep ‘UP|DOWN’
enp2s0: flags=4163 mtu 1500
ham0: flags=4163 mtu 1404
lo: flags=73 mtu 65536
sit0: flags=193 mtu 1480
ПРОСМОТР ФАЙЛОВ LINUX В СЖАТОМ ВИДЕ
Иногда можно встретить в системе текстовые файлы в сжатом виде, формате gz. Это, например, конфигурационный файл ядра, или логи некоторых программ. Для того чтобы открыть файл в linux через терминал не распаковывая его есть целый ряд аналогов вышеописанных утилит с приставкой z. Это zcat, zless, zgerp, zegrep.
Например, открываем сжатый файл для просмотра:
Или более практичный пример, распаковываем и копируем конфигурационный ядра в текущую директорию:
zcat /porc/cofig.gz .config
Так же можно использовать less, для просмотра сжатых файлов с прокруткой:
А для фильтрации сжатых файлов по шаблону есть zgrep и zegrep. Например, ищем в сжатом логе ошибки:
Вывести на стандартный вывод содержимое файлов в порядке их следования, или на стандартный ввод, если файлы не указаны. Ввод завершается символом End of File ( [Ctrl] — [D] ), который в выходной поток не помещается.
| -n | Выводить порядковый номер строки |
Заполнить файл test :
Вывести содержимое файла test :
7.3.2. Команда more
more [ + номер_строки ] [ +/ образец_поиска ] [ файл. ]
Постраничный просмотр файлов или стандартного ввода.
Некоторые управляющие последовательности:
| SPACE | Переместиться на одну страницу вниз |
| ENTER | Переместиться на одну строку вниз |
| d | Переместиться на полстраницы вниз |
| b | Переместиться на одну страницу вверх |
| /образец/ | Поиск по заданному образцу вперед |
| ?образец? | Поиск по заданному образцу назад |
| h | Помощь |
| q | Выход |
| +номер_строки | Спозиционироваться на указанную строку |
| +/образец_поиска | Спозиционироваться на строку, соответствующую образцу |
7.3.3. Команда less
GNU: less [ + номер_строки ] [ +/ образец_поиска ] [ файл. ]
Постраничный просмотр файлов или стандартного ввода.
| стрелка_вверх | Переместиться на одну строку вверх |
| стрелка_вниз | Переместиться на одну строку вниз |
| PageUp | Переместиться на одну страницу вверх |
| PageDown | Переместиться на одну страницу вниз |
| SPACE | Переместиться на одну страницу вниз |
| ENTER | Переместиться на одну строку вниз |
| d | Переместиться на полстраницы вниз |
| b | Переместиться на одну страницу вверх |
| /образец/ | Поиск по заданному образцу вперед |
| ?образец? | Поиск по заданному образцу назад |
| h | Помощь |
| q | Выход |
| +номер_строки | Спозиционироваться на указанную строку |
| +/образец_поиска | Спозиционироваться на строку, соответствующую образцу |
7.3.4. Команда pg
pg [ + номер_строки ] [ +/ образец_поиска ] [ файл. ]
Постраничный просмотр файлов или стандартного ввода.
| l | Переместиться на одну строку вниз |
| ENTER | Переместиться на одну страницу вниз |
| f | Переместиться на одну страницу вверх |
| /образец/ | Поиск по заданному образцу вперед |
| ?образец? | Поиск по заданному образцу назад |
| h | Помощь |
| q | Выход |
| +номер_строки | Спозиционироваться на указанную строку |
| +/образец_поиска | Спозиционироваться на строку, соответствующую образцу |
7.3.5. Команда head
head [ — строк ] [ файл. ]
Вывести начало файла или входного потока.
| -строк | Количество строк |
Вывести первые 5 строк файла test :
7.3.6. Команда tail
tail [ — строк ] [ файл. ]
Вывести конец файла или входного потока.
| -строк | Количество строк |
Вывести последние 5 строк файла test :
7.3.7. Команда tee
Разделить входной поток. В результате выполнения команды он копируется в стандартный выходной поток и в указанные файлы.
7.3.8. Команда split
split [ -l строк ] [ -b байтов [ km ] ] [ файл [ выходной_префикс ] ]
Разбить файл или поток на файлы указанного размера в строках ии байтах. В результате операции создается набор файлов. Файлы получают имена, начинающиеся с указанного выходного_префикса (по умолчанию — ‘x’) и заканчивающиеся набором букв в соответствующем лексикографическом порядке.
В Linux все настройки, все логи, и почти вся информация хранится в обычных текстовых файлах. Важно уметь правильно и эффективно посмотреть содержимое файла linux с помощью терминала. Это еще одна из статей, ориентированных на новичков. Вот вы скажете, а что их там открывать, открыл и посмотрел, и все. Да, но не совсем, терминал Linux настолько гибкий инструмент, что даже обычный просмотр файлов можно очень сильно оптимизировать. Просмотр содержимого файлов Linux — это тоже искусство. В этой инструкции мы рассмотрим все команды, с помощью которых можно открыть текстовый файл linux, поговорим о том как ими пользоваться, а также приведем несколько примеров.
Просмотр файла в Linux полностью
Самая простая и в то же время наиболее часто используемая утилита для просмотра содержимого файла linux — cat. Выводит все содержимое файла в стандартный вывод. В параметре нужно передать только адрес файла, или нескольких файлов. Идеально подходит для просмотра небольших файлов. Общий синтаксис команды cat такой:
cat опции адрес_файла .
Например просмотр содержимого файла linux /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
Также можно посмотреть сразу несколько файлов:
Hello everybody
Hi world,
Опция -n включает нумерацию строк:
cat -n /var/log/Xorg.0.log
1 [ 85.675]
2 X.Org X Server 1.17.4
3 Release Date: 2015-10-28
4 [ 85.675] X Protocol Version 11, Revision 0
5 [ 85.675] Build Operating System: Linux 4.0.5-gentoo x86_64 Gentoo
6 [ 85.675] Current Operating System: Linux seriyyy95-pc 4.1.12-gentoo #2 SMP Tue Dec 29 14:50:59 EET 2015 x86_64
Для удобства, можно включить отображение в конце каждой строки символа $
hello everyone, how do you do?$
$
Hey, am fine.$
А также отображение табуляций, все табуляции будут заменены на символ ^I:
hello ^Ieveryone, how do you do?
Больше о ней говорить не будем, потому что большинство ее опций направлены на форматирование вывода, и вы сможете их легко изучить выполнив:
Есть еще одна очень похожая на cat утилита — tac. Принимает те же параметры и делает то же самое, только наоборот — выполняет вывод содержимого файла linux в обратном порядке — с конца:
Просмотр файла в Linux с прокруткой
Если файл очень длинный и его содержимое не помещается на одном экране, cat использовать не очень удобно. для таких случаев есть less. Синтаксис тот же:
$ less опции файл
Также ее можно комбинировать с cat:
$ cat адрес_файла | less
Например, посмотрим лог Х сервера:
Теперь мы можем листать содержимое файла в Linux с помощью стрелок вверх-вниз. Для того чтобы выйти нажмите q. Также эта утилита поддерживает поиск. Для поиска по файлу нажмите слеш "/". О более правильном способе поиска мы поговорим дальше.
Просмотр только начала или конца файла
Очень часто нам не нужен файл целиком. Например, достаточно посмотреть несколько последних строчек лога, чтобы понять суть ошибки, или нужно увидеть только начало конфигурационного файла. Для таких случаев тоже есть команды. Это head и tail (голова и хвост).
По умолчанию head открывает текстовый файл в Linux и показывает только десять первых строчек переданного в параметре файла:
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
Так можно открыть текстовый файл linux или несколько и вывести по десять первых строчек каждого из них.
Если вам не нужны все 10 строчек, опцией -n и цифрой можно указать количество строк которые нужно вывести. Например, 5:
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
Также можно задать количество байт, которые нужно вывести с помощью опции -с и числа. Например: 45:
head -c45 /var/log/emerge.log
1394924012: Started emerge on: Mar 15, 2014 2
Тоже хотите подсчитать действительно ли там 45 символов? Используйте команду wc:
head -c45 /var/log/emerge.log | wc -c
Команда tail наоборот, выводит 10 последних строк из файла:
[ 141.977] (—) NVIDIA(GPU-0):
[ 141.977] (—) NVIDIA(GPU-0): DFP-1: disconnected
[ 141.977] (—) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 141.977] (—) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 141.977] (—) NVIDIA(GPU-0):
Утилита 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
(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 можно вывести несколько строк после вхождения:
$ ifconfig | grep -A2 enp2s0
enp2s0: 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
С помощью -B — до вхождения:
ifconfig | grep -B2 loop
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
А -С позволяет вывести нужное количество строк до и после вхождения шаблона:
ifconfig | grep -C2 loop
inet 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 0
Также с помощью grep можно подсчитать количество найденных строк:
ifconfig | grep –c inet6
Шаблоном может быть строка и простые спецсимволы замены. Если вы хотите использовать регулярное выражение укажите опцию -e или используйте egrep. Многие спрашивают, а какая разница между этими утилитами — уже никакой, в большинстве дистрибутивов egrep это ссылка на grep -e. А теперь пример:
ifconfig | egrep ‘UP|DOWN’
enp2s0: flags=4163 mtu 1500
ham0: flags=4163 mtu 1404
lo: flags=73 mtu 65536
sit0: flags=193 mtu 1480
Просмотр файлов Linux в сжатом виде
Иногда можно встретить в системе текстовые файлы в сжатом виде, формате gz. Это, например, конфигурационный файл ядра, или логи некоторых программ. Для того чтобы открыть файл в linux через терминал не распаковывая его есть целый ряд аналогов вышеописанных утилит с приставкой z. Это zcat, zless, zgerp, zegrep.
Например, открываем сжатый файл для просмотра:
Или более практичный пример, распаковываем и копируем конфигурационный ядра в текущую директорию:
zcat /porc/cofig.gz .config
Так же можно использовать less, для просмотра сжатых файлов с прокруткой:
А для фильтрации сжатых файлов по шаблону есть zgrep и zegrep. Например, ищем в сжатом логе ошибки:
zgrep ‘EE’ /var/log/Xorg.log.gz
Выводы
Вот и все. Разобрал все достаточно подробно. Теперь вы точно знаете как правильно открыть файл в терминале Linux. Если остались еще вопросы, оставляйте комментарии.






