Для чего используется "кошка"?
Я видел команду cat в некоторых онлайн-материалах, и мне было любопытно, что cat
сделал и для чего это в контексте кого-то, кто просто делает некоторые простые вещи командной строки.
4 ответа
cat
Основной целью является объединение файлов. cat file1 file2 ...
покажет содержимое file
, file2
и другие один за другим, как если бы содержимое было в одном файле. Смотрите справочную страницу:
NAME
cat - concatenate and print files
Он предназначен для использования, где либо:
целевая команда не может читать из файлов, и вам нужно передать ей несколько файлов. Примером является
tr
полезность. Обычно, с одним файлом, вы должны сделать:tr < file
Но с несколькими файлами перенаправление не может быть использовано, поэтому вы должны сделать:
cat file1 file2 ... | tr
- целевая команда может читать из нескольких файлов, но ее поведение может измениться, если ей дано несколько файлов. Примером является
wc
, который печатает счетчики для каждого файла вместе с именами файлов, где вы, возможно, хотели получить только общее количество, без имени файла.
Помните, что большинство команд, с которыми вы сталкиваетесь (grep
, sed
, awk
, sort
...) может прекрасно читать файлы.
Если вы хотите просмотреть содержимое файла, используйте пейджер - less
а также more
оба в высшей степени способны представлять файлы для просмотра, и гораздо более удобны в использовании.
cat
является одной из наиболее часто используемых команд в Unix-подобных операционных системах. Он имеет три связанные функции в отношении текстовых файлов:
- показывая их
- объединяя их копии
- создавая новые.
- Копировать файлы
Общий синтаксис кошки:
cat [options] [filenames] [-] [filenames]
Чтение файлов
Самым распространенным использованием cat является чтение содержимого файлов, и cat часто является наиболее удобной программой для этой цели. Все, что необходимо, чтобы открыть текстовый файл для просмотра на мониторе дисплея, - это ввести слово cat, затем пробел и имя файла, а затем нажать клавишу ВВОД. Например, следующее будет отображать содержимое файла с именем file1:
cat file1
конкатенация
Вторая роль кота - конкатенация. (Это источник любопытного имени кошки.) Не влияет на исходные файлы.
Например, следующая команда объединит копии содержимого трех файлов file1, file2 и file3:
cat file1 file2 file3
Содержимое каждого файла будет отображаться на экране монитора. Этот вывод можно так же легко перенаправить с помощью оператора перенаправления вывода в другой файл, например file4, используя следующее:
cat file1 file2 file3 > file4
Создание файла
Благодаря комментарию muru: кошка может создавать новые файлы в зависимости от функции перенаправления оболочки, а не сама
Для небольших файлов это часто проще, чем использовать vi, gedit или другие текстовые редакторы. Для этого введите cat, затем оператор перенаправления вывода и имя создаваемого файла, затем нажмите клавишу ВВОД и, наконец, одновременно нажмите клавиши Ctrl & d.
Например, новый файл с именем file1 можно создать, набрав
cat > file1
затем нажмите ENTER и одновременно нажмите клавиши Ctrl & d.
PS1: если файл с именем file1 уже существует, он будет перезаписан
PS2: вы можете добавить к выходу файла с помощью оператора добавления >>
пример cat >> file1
Копировать файлы
Команду cat также можно использовать (в зависимости от функции перенаправления оболочки) для создания нового файла и передачи ему данных из существующего файла. Пример: сделать копию файла oldfile.txt
:
cat oldfile.txt > newfile.txt
Рекомендации:
Может использоваться для отображения содержимого файла. Например: cat "my file.txt"
, Вы также можете сделать man cat
чтобы показать вам подробности о том, что cat
может быть использован для.
Вот еще один способ создания файла с использованием перенаправления оболочки (или конвейера) и cat
:
cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF
cat << EOF
будет выводить следующие строки, пока строка EOF
встречается снова. затем >
(>>
) перенаправит вывод в файл foo.sh
, В качестве альтернативы, если вам нужно создать файл с правами root, вы можете направить вывод в команду tee
(tee -a
), выполненный по команде sudo
:
cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
- Вышеизложенное сделает файл исполняемым (
chmod +x
) если он успешно создан (&&
). - Особое значение некоторых символов (как
$
) следует избегать (с\
) на выходеcat
,