- Linux вывод части файла
- Утилита head
- Утилита tail
- Утилита cat
- Утилита tac
- Утилиты more и less
- Утилита strings
- Практическое задание: работа с содержимым файлов
- Корректная процедура выполнения практического задания: работа с содержимым файлов
- Просмотр содержимого файлов в командной строке Linux
- Команда cat
- Команда nl
- Команда less
- Команда more
- Команда head
- Команда tail
- Заключение
Linux вывод части файла
Библиотека сайта rus-linux.net
Также мы познакомимся с возможностями таких инструментов с интерфейсом командной строки, как cat .
Утилита head
paul@laika:~$ head /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh paul@laika:~$
paul@laika:~$ head -4 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh
paul@laika:~$ head -c4 /etc/passwd rootpaul@laika:~$
Утилита tail
По аналогии с утилитой head, утилита tail может использоваться для вывода последних десяти строк файла.
paul@laika:~$ tail /etc/services vboxd 20012/udp binkp 24554/tcp # binkp fidonet protocol asp 27374/tcp # Address Search Protocol asp 27374/udp csync2 30865/tcp # cluster synchronization tool dircproxy 57000/tcp # Detachable IRC Proxy tfido 60177/tcp # fidonet EMSI over telnet fido 60179/tcp # fidonet EMSI over TCP # Local services paul@laika:~$
Вы можете передать утилите tail число, соответствующее количеству строк, которое вы хотите увидеть в выводе.
$ tail -3 count.txt шесть семь восемь
Утилита tail поддерживает и другие полезные параметры, причем некоторые из них мы будем использовать в рамках данного курса.
Утилита cat
Утилита cat является одним из наиболее универсальных инструментов операционной системы. Все, что она делает — это копирует данные из стандартного потока ввода в стандартный поток вывода. Данная утилита в комбинации с командной оболочкой позволяет реализовать мощные и разнообразные механизмы обработки данных. Воспользуемся примерами для иллюстрации этих механизмов. Первый пример является достаточно простым и вы можете использовать рассмотренную в нем команду в повседневной работе для вывода содержимого файла на экран. В том случае, если данные из файла не умещаются на экране, будет осуществлена прокрутка до конца файла.
paul@laika:~$ cat /etc/resolv.conf nameserver 194.7.1.4 paul@laika:~$
Имя утилиты cat является сокращенной формой слова concatenate (объединить). Одним из наиболее простых сценариев использования данной утилиты является объединение файлов в рамках файла большего объема (или полного файла).
paul@laika:~$ echo один > part1 paul@laika:~$ echo два > part2 paul@laika:~$ echo три > part3 paul@laika:~$ cat part1 part2 part3 один два три paul@laika:~$
Также вы можете использовать утилиту cat для создания текстовых файлов. Введите команду cat > winter.txt , приведенную в примере ниже. После этого введите одну строку или несколько строк текста, завершая ввод каждой из строк нажатием клавиши Enter. После ввода последней строки текста нажмите и удерживайте клавишу Ctrl и одновременно с этим кратковременно нажмите клавишу d.
paul@laika:~/test$ cat > winter.txt Сегодня очень холодно! paul@laika:~/test$ cat winter.txt Сегодня очень холодно! paul@laika:~/test$
Комбинация клавиш Ctrl+d позволяет передать исполняющемуся процессу символ окончания файла (End of File — EOF), что приведет приведет к завершению исполнения процесса cat .
Специальный маркер окончания файла
Вы можете установить специальный маркер окончания файла для утилиты cat с помощью параметра
paul@laika:~/test$ cat > hot.txt Сегодня жарко! > Да, это лето. > stop paul@laika:~/test$ cat hot.txt Сегодня жарко! Да, это лето. paul@laika:~/test$
При рассмотрении третьего примера вы можете обнаружить, что утилита cat также может использоваться для копирования файлов. Подробные пояснения относительно происходящих в этом случае процессов будут даны в главе, посвященной командной оболочке bash.
paul@laika:~/test$ cat winter.txt Сегодня очень холодно! paul@laika:~/test$ cat winter.txt > cold.txt paul@laika:~/test$ cat cold.txt Сегодня очень холодно! paul@laika:~/test$
Утилита tac
Предназначение утилиты tac (в отличие от утилиты cat) может быть проиллюстрировано с помощью единственного примера.
paul@laika:~/test$ cat count один два три четыре paul@laika:~/test$ tac count четыре три два один paul@laika:~/test$
Утилиты more и less
Утилита more может оказаться полезной в случае возникновения необходимости вывода содержимого файлов, которое не умещается на экране. Утилита more позволяет ознакомится с содержимым файла, разделенным на страницы. После открытия файла с использованием данной утилиты следует использовать клавишу «пробел» для перехода к следующей странице или клавишу q для выхода из режима просмотра содержимого файла. Некоторые пользователи предпочитают использовать утилиту less вместо утилиты more .
Утилита strings
С помощью утилиты strings вы можете осуществить вывод читаемых человеком ascii-строк, которые обнаруживаются в бинарных файлах. В приведенном ниже примере выясняется путь к бинарному файлу ls , после чего осуществляется вывод читаемых пользователем строк из этого бинарного файла (вывод сокращен).
paul@laika:~$ which ls /bin/ls paul@laika:~$ strings /bin/ls /lib/ld-linux.so.2 librt.so.1 __gmon_start__ _Jv_RegisterClasses clock_gettime libacl.so.1 .
Практическое задание: работа с содержимым файлов
1. Осуществите вывод первых 12 строк файла /etc/services .
2. Осуществите вывод последней строки файла /etc/passwd .
3. Используйте утилиту cat для создания файла с именем count.txt , содержимое которого выглядит следующим образом:
4. Используйте утилиту cp для создания резервной копии этого файла с именем cnt.txt .
5. Используйте утилиту cat для создания резервной копии этого файла с именем catcnt.txt .
6. Осуществите вывод содержимого файла catcnt.txt таким образом, чтобы строки из файла были выведены в обратном порядке.
7. Используйте утилиту more для вывода содержимого файла /var/log/messages .
8. Осуществите вывод читаемых пользователем строк из бинарного файла /usr/bin/passwd .
9. Используйте утилиту ls для поиска файла наибольшего размера в директории /etc .
10. Откройте два окна терминала (или вкладки) и убедитесь в том, что в каждом из окон открыта одна и та же директория. Введите команду echo это первая строка > tailing.txt в первом окне терминала, после чего выполните команду tail -f tailing.txt во втором окне терминала. Теперь перейдите в первое окно терминала и введите команду echo это вторая строка >> tailing.txt (обратите внимание на два символа >>), после чего убедитесь в том, что средствами команды tail -f во втором окне терминала выводятся обе строки. Прекратите исполнение команды tail -f с помощью сочетания клавиш Ctrl+C .
11. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого файла tailing.txt , после которых в него должны быть добавлены данные из файла /etc/passwd .
12. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого этого файла tailing.txt , перед которыми в него должны быть добавлены данные из файла /etc/passwd .
Корректная процедура выполнения практического задания: работа с содержимым файлов
1. Осуществите вывод первых 12 строк файла /etc/services .
2. Осуществите вывод последней строки файла /etc/passwd .
3. Используйте утилиту cat для создания файла с именем count.txt , содержимое которого выглядит следующим образом:
cat > count.txt Один Два Три Четыре Пять (ввод должен завершаться с помощью комбинации клавиш Ctrl+d)
4. Используйте утилиту cp для создания резервной копии этого файла с именем cnt.txt .
5. Используйте утилиту cat для создания резервной копии этого файла с именем catcnt.txt .
6. Осуществите вывод содержимого файла catcnt.txt таким образом, чтобы строки из файла были выведены в обратном порядке.
7. Используйте утилиту more для вывода содержимого файла /var/log/messages .
8. Осуществите вывод читаемых пользователем строк из бинарного файла /usr/bin/passwd .
9. Используйте утилиту ls для поиска файла наибольшего размера в директории /etc .
10. Откройте два окна терминала (или вкладки) и убедитесь в том, что в каждом из окон открыта одна и та же директория. Введите команду echo это первая строка > tailing.txt в первом окне терминала, после чего выполните команду tail -f tailing.txt во втором окне терминала. Теперь перейдите в первое окно терминала и введите команду echo это вторая строка >> tailing.txt (обратите внимание на два символа >>), после чего убедитесь в том, что средствами команды tail -f во втором окне терминала выводятся обе строки. Прекратите исполнение команды tail -f с помощью сочетания клавиш Ctrl+C .
11. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого файла tailing.txt , после которых в него должны быть добавлены данные из файла /etc/passwd .
cat /etc/passwd >> tailing.txt
12. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого этого файла tailing.txt , перед которыми в него должны быть добавлены данные из файла /etc/passwd .
mv tailing.txt tmp.txt ; cat /etc/passwd tmp.txt > tailing.txt
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 7. Работа с файлами | Глава 9. Дерево директорий Linux |
Просмотр содержимого файлов в командной строке Linux
Рассмотрим несколько команд, которые используются для просмотра содержимого текстовых файлов в командной строке Linux.
Команда cat
Команда cat выводит содержимое файла, который передается ей в качестве аргумента.
Это самый простой и наиболее часто используемый способ для вывода содержимого текстовых файлов. Но выводить большие файлы через cat не всегда удобно.
Команда nl
Команда nl действует аналогично команде cat , но выводит еще и номера строк в столбце слева.
Команду nl удобно применять для просмотра программного кода или поиска строк в файлах конфигурации.
Команда less
Утилита less выводит содержимое файла, но отображает его только в рамках текущего окна в режиме просмотра.
Вы можете прокручивать текст файла клавишами стрелок или перелистывать страницы клавишами w и z .
Для поиска текста внутри файла нажмите / .
Для просмотра списка доступных горячих клавиш нажмите h
Чтобы выйти из режима просмотра используется клавиша q .
Очень удобно, что после выхода окно терминала остается чистым и не содержит текст файла.
Команда more
Команда more очень похожа на команду less . Она также выводит файл в терминале в режиме просмотра, но имеет некоторые отличия от команды less.
Например, less в конце файла выводит сообщение (END) (или EOF — End Of File) и ожидает нажатия клавиши q чтобы закрыть режим просмотра, а more по достижении конца файла сразу возвращает управление в терминал.
Также more после своей работы оставляет текст файла в терминале, а less работает «чисто» и не сохраняет текст в терминале.
Команда head
Команда head выводит на экран только первые 10 строк файла.
Используя опцию -n можно задать количество строк, которое нужно вывести. Например, чтобы вывести 15 строк используется команда:
Вместо -n можно просто использовать знак минус — , за которым сразу указывается количество строк.
Команда tail
Команда tail аналогична команде head , но выводит последние 10 строк файла.
Заключение
Команды, которые мы рассмотрели, имеют дополнительные возможности и области применения. Для получения справки по каждой команде можно воспользоваться Man-страницами.
man cat man nl man less man more man head man tail