- Sysadminium
- Создание файлов и просмотр их в каталоге
- Редактирование файлов
- Чтение файлов
- Команды cat и tac
- Команда grep
- Команда less
- Команды tail и head
- Что такое команда CAT в Linux и как ее использовать
- Основной формат для команды CAT
- CAT без выходной части
- Флаги команды CAT
- Использование флага -n
- Использование флага -b
- Использование флага -s
- Использование флага -e
- Использование флага -t
- Использование команд CAT в Linux
- Часто задаваемые вопросы
- Что произойдет, если я использую команду CAT в видеофайле?
- Могу ли я использовать команду Linux CAT с файлами из разных папок?
- Что произойдет, если я использую имя существующего файла в качестве выходного сигнала для команды CAT?
Sysadminium
На этом уроке по Linux мы рассмотрим создание (touch), редактирование (nano) и чтение (cat, tac, grep, less, tail) текстовых файлов.
Создание файлов и просмотр их в каталоге
Все примеры я буду показывать на Debian 11, так как на Ubuntu 22.04 все выполняется аналогично. Вообще в Linux работа в терминале на любых системах практически одинакова. Поэтому создание, редактирование и чтение файлов можно продемонстрировать на любой системе.
Для создания текстового файла служит команда touch:
С помощью команды ls можно посмотреть какие файлы есть в каталоге:
Для команды ls есть дополнительные опции:
- -l — показывает информацию по каждому файлу;
- -h — показывает размер файла в удобном для человека виде (байты, килобайты, мегабайты и т.д.). Эту опцию можно использовать только вместе в -l.
Опции можно писать слитно (ls -lh) или раздельно (ls -l -h). Вот пример:
alex@deb:~$ ls -lh итого 0 -rw-r--r-- 1 alex alex 0 ноя 26 16:15 file.txt
Команда touch не только создает файл, но если этот файл уже есть, то обновляет время доступа и модификации данного файла:
alex@deb:~$ touch file.txt alex@deb:~$ ls -lh итого 0 -rw-r--r-- 1 alex alex 0 ноя 26 16:17 file.txt
Как вы могли заметить вначале время последнего изменения файла было 16:15, а после выполнения команды touch оно изменилось на 16:17. На самом деле команда touch не изменила файл, она лишь прикоснулась к файлу и тем самым изменила его время доступа. Кстати, с английского touch переводится как прикасаться.
Давайте теперь разберём вывод команды ls -lh:
Тип файла | Права | | Кол-во ссылок | | | Владелец | | | | Группа | | | | | Размер | | | | | | Дата и время последнего касания или изменения | | | | | | | Имя файла | | | | | | | | - rw-r--r-- 1 alex alex 0 ноя 26 16:17 file.txt
Пока что вам нужно запомнить что таким образом можно посмотреть размер файла и дату его изменения, с остальным разберемся позже. И ещё запомните 2 типа файлов:
- знак тире «-« — это обычный файл;
- символ «d» — это каталог;
- есть и другие типы файлов, но пока их рассматривать не будем.
Редактирование файлов
Отредактировать текстовый файл можно с помощью текстового редактора «nano»:
После выполнения этой команды у Вас откроется текстовый редактор:
Для того чтобы сохранить этот файл нужно нажать комбинацию клавиш «Ctrl+o«.
А чтобы закончить редактирование и закрыть этот файл нужно нажать «Ctrl+x«. При этом у вас спросят, хотите ли вы сохранить этот файл и если да, то нужно ввести «y» и нажать клавишу «Enter«. Таким образом необязательно использовать комбинацию «Ctrl+o» перед закрытием файла.
Внизу я выделил подсказки текстового редактора Nano, в подсказках символ «^» — это клавиша Ctrl.
Если с помощью nano открыть несуществующий файл, то файл будет создан как только вы его сохраните. Поэтому выполнять touch перед nano не обязательно.
Чтение файлов
Команды cat и tac
Давайте теперь научимся читать текстовые файлы. Чаще всего для этого используется команда cat:
alex@deb:~$ cat file.txt И тут мы можем вводить текст, какой только пожелаем.
У команды cat есть опция -n, которая выводит номера строк:
alex@deb:~$ cat -n file.txt 1 И тут мы можем 2 вводить текст, 3 какой только пожелаем.
Для команды cat есть команда перевёртыш, это команда tac. Она выводит текст задом наперед:
alex@deb:~$ tac file.txt какой только пожелаем. вводить текст, И тут мы можем
Команда grep
Если Вам нужно что-то найти в тексте, то для этого используйте команду grep. Например, мы ищем строку в которой встречается слово «какой»:
alex@deb:~$ grep какой file.txt какой только пожелаем.
Команда less
Если текст длинный то вместо cat лучше использовать команду less:
alex@deb:~$ less /etc/ssh/sshd_config
Используя less мы можем кнопками вверх / вниз перемещаться по тексту:
Если нажать кнопу «/», то откроется строка, куда можно ввести фразу для поиска в этом файле. Давайте, например, найдём строку со словом «Port»:
При поиске удобно использовать кнопку «n» для дальнейшего поиска введенной фразы, и комбинацию «Shift+n» для поиска в обратном направлении (к началу файла). Для выхода из программы используйте клавишу»q«.
Команды tail и head
Если Вам нужно посмотреть последние строки файла используйте команду «tail«:
alex@deb:~$ tail /etc/ssh/sshd_config # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server
А если нужно посмотреть первые строки файла то команду «head«:
alex@deb:~$ head /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the
Эти две команды выводят 10 последних (tail) или 10 первых (head) строк файла. И у этих команд есть параметр -n, с помощью которого можно указать сколько строк выводить, например выведем по 3 строки:
alex@deb:~$ tail -n 3 /etc/ssh/sshd_config # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server alex@deb:~$ head -n 3 /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See
А ещё команда tail позволяет выводить изменяющиеся файлы, например логи. Для этого используется опция -f. Чтобы закончить наблюдение за файлом, нужно нажать комбинацию Ctrl+c.
Что такое команда CAT в Linux и как ее использовать
Команда cat – это самый простой способ объединения файлов в Linux. Это сокращение от conCATenation, но это нечто большее, чем просто копирование/вставка одного файла рядом с другим.
Основной формат для команды CAT
Так обычно используется команда cat :
cat file1 file2 file3 > output
Порядок добавления файлов рядом друг с другом основан на порядке записи файлов в команде. В этом примере, когда вы откроете файл output, за содержимым файла file1 последует file2, затем file3 и так далее.
Вы можете добавить столько файлов, сколько захотите, пока ваша файловая система может поддерживать конечный размер выходного файла.
Кроме того, как и во всех командах терминала Linux, вам нужно будет указать расширение файла, когда вы добавляете их. Например, если вы работали с файлами JSON и планировали объединить два таких файла вместе, вам нужно будет напечатать это следующим образом:
cat file1.json file2.json > combined_file.json
CAT без выходной части
Для cat выходная часть необязательна. Удаление этой части выводит содержимое каждого файла в терминал.
Вы также можете сделать это для отдельных файлов. Помните, что здесь вы не сможете редактировать содержимое, как при работе с файлами DOC или TXT в текстовом редакторе. Команда cat становится больше похожей на просмотрщик текстовых файлов, чем на редактор.
Флаги команды CAT
Существует шесть флагов, которые вы можете использовать при работе с CAT в Linux:
- -n перечислять все строки, начиная с 1.
- -b перечислять только те строки, которые содержат символы.
- -s сжимать несколько последовательных пустых строк в одну пустую строку.
- -e помечать конец каждой строки.
- -q не выводить сообщение, если CAT не может найти входной файл.
- -t отображать символы табуляции как ^I .
Мы рассмотрим, как работает каждый из них и как их можно использовать.
Использование флага -n
Флаг -n перечисляет содержимое файла по строкам и выводит его на терминал. Он не редактирует сам файл.
Но вы все равно можете сохранить вывод (с перечислением), сделав следующее:
Это перечисляет содержимое «file1.txt» и сохраняет его в «file2.txt».
Вы также можете перечислить несколько файлов вместе. Команда cat продолжит отсчет после конца первого файла. Если первый файл заканчивается на 33, то следующий будет начинаться с 34 и так далее.
Использование флага -b
Проблема с флагом -n в том, что он также перечисляет пустые строки. Если у вас есть файл с большим количеством пробелов для компоновки или удобства чтения, вам понадобится флаг -b .
Формат для флага -b работает так же, как и для флага -n . Кроме того, если вы используете их вместе, флаг -b будет преобладать над флагом -n , независимо от того, как вы их упорядочите.
Использование флага -s
Флаг -s – это еще один удобный флаг команды cat для тех случаев, когда в ваших файлах много белого пространства. Он сокращает все повторяющиеся пробелы до одного, что облегчает чтение.
Этот флаг ищет по крайней мере 2 последовательные пустые строки перед их объединением. Если ваш файл содержит одну пустую строку между двумя заполненными, он пропустит ее и будет искать следующую.
Использование флага -e
Флаг -e находит конец каждой строки и добавляет $ в конце каждой строки.
Этот флаг облегчает работу с текстовыми файлами при использовании регулярных выражений или regex. Вы можете попросить дополнительный скрипт или программу прочитать содержимое сохраненного файла и проверить концы с помощью regex.
Не забывайте, что флаг -e также добавляет $ в конце каждой пустой строки, поэтому вы можете использовать его вместе с -s , чтобы все выглядело чище.
Использование флага -t
Флаг -t похож на флаг -e , но вместо него ищет «символ табуляции» и заменяет его на ^I . Этот флаг хорош тем, что он умеет отличать символ табуляции от символа двойного пробела.
Это означает, что если вы используете флаги -n или -b вместе с флагом -t , он будет считать символы пробела такими, какие они есть, и оставит их как есть. То же самое произойдет, если вы добавите тонну пробелов, чтобы имитировать символ «табуляции».
Использование команд CAT в Linux
Команду cat следует использовать только тогда, когда вы пытаетесь объединить текстовые файлы построчно. Не ждите, что команда cat возьмет две строки текста и объединит их в одну.
С другой стороны, вы увидите много пользы от этой команды, когда попытаетесь очистить текстовые файлы для работы других скриптов. Флаги -e , -t , -b и -s достаточно полезны, чтобы сэкономить ваше время на создание собственного скрипта.
Это также поможет облегчить просмотр текстовых файлов по сравнению с необходимостью постоянно использовать редактор Nano.
Часто задаваемые вопросы
Что произойдет, если я использую команду CAT в видеофайле?
Видеофайлы содержат так называемый «заголовок». Это часть информации, которая показывает, как было закодировано видео. Если вы используете команду CAT для объединения видеофайлов, вы получите файл, в котором информация заголовка находится между кодированными видеоданными. Большинство зрителей, прочитав это, подумают, что ваш файл поврежден. Для работы с видеофайлами лучше использовать другой инструмент, например FFmpeg.
Могу ли я использовать команду Linux CAT с файлами из разных папок?
Вы можете рассматривать имена файлов как пути к папкам, когда вы объединяете файлы в папках с помощью команды cat . Таким образом, вы можете объединить файл из папки Desktop с другим файлом из папки Photos, сделав это следующим образом: cat Desktop/file1.txt Photos/Photos.txt >> output.txt .
Что произойдет, если я использую имя существующего файла в качестве выходного сигнала для команды CAT?
В зависимости от того, используете ли вы команду > или >> , она либо перезапишет, либо добавит содержимое к существующему файлу. Команда >> добавляет содержимое в файл или создает файл, если он не существует. Команда > перезаписывает файл, если он существует, или создает его, если он не существует.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.