
Я видел, как в сети появлялась команда cat, и мне стало любопытно, что она cat
делает и для чего она нужна в контексте того, кто просто выполняет какие-то простые действия в командной строке.
решение1
cat
Основная цель - этокотenate файлы. cat file1 file2 ...
покажет содержимое file
, file2
а остальные одно за другим, как будто содержимое находится в одном файле. Смотритестраница руководства:
NAME
cat - concatenate and print files
Он предназначен для использования в следующих случаях:
команда target не может читать из файлов, и вам нужно передать ей несколько файлов. Примером может служить
tr
утилита. Обычно, с одним файлом, вы делаете:tr < file
Но при наличии нескольких файлов перенаправление использовать нельзя, поэтому придется сделать следующее:
cat file1 file2 ... | tr
- целевая командаможетсчитывает из нескольких файлов, но его поведение может измениться, когда ему дано несколько файлов. Примером является
wc
, которая выводит количество для каждого файла вместе с именами файлов, хотя вы, возможно, хотели бы получить только общее количество, без имени файла.
Помните, что большинство команд, с которыми вы сталкиваетесь ( grep
, sed
, awk
, sort
, ...), могут прекрасно читать файлы.
Если вы хотитевидсодержимое файла,использоватьпейджер-less
иmore
оба прекрасно справляются с представлением файлов для просмотра и гораздо удобнее в использовании.
решение2
cat
является одной из наиболее часто используемых команд в Unix-подобных операционных системах. Она имеет три связанные функции в отношении текстовых файлов:
- показывая их
- объединение их копий
- создавая новые.
- Копировать файлы
Общий синтаксис cat:
cat [options] [filenames] [-] [filenames]
Чтение файлов
Наиболее распространенное использование cat — чтение содержимого файлов, и cat часто является наиболее удобной программой для этой цели. Все, что необходимо для открытия текстового файла для просмотра на мониторе, — это ввести слово cat, затем пробел и имя файла, а затем нажать клавишу ENTER. Например, следующее отобразит содержимое файла с именем file1:
cat file1
Конкатенация
Вторая роль cat — конкатенация. (Отсюда и странное имя cat.) На исходные файлы это не влияет.
Например, следующая команда объединит копии содержимого трех файлов file1, file2 и file3:
cat file1 file2 file3
Содержимое каждого файла будет отображено на экране монитора. Этот вывод можно было бы легко перенаправить с помощью оператора перенаправления вывода в другой файл, например file4, используя следующее:
cat file1 file2 file3 > file4
Создание файла
Благодаря@мурукомментарий:cat способен создавать новые файлы в зависимости от функции перенаправления оболочки, а не сам по себе
Для небольших файлов это часто проще, чем использовать vi, gedit или другие текстовые редакторы. Это достигается путем ввода cat, затем оператора перенаправления вывода и имени файла, который нужно создать, затем нажатия ENTERи, наконец, одновременного нажатия клавиш Ctrl& d.
Например, новый файл с именем file1 можно создать, введя команду
cat > file1
затем нажмите ENTERи одновременно нажмите клавиши Ctrl& d.
PS1: Если файл с именем file1 уже существует, он будет перезаписан.
PS2: вы можете добавить к завершенному файлу, используя оператор добавления, >>
пример cat >> file1
Копировать файлы
Также можно использовать команду cat (в зависимостина функции перенаправления оболочки) для создания нового файла и переноса в него данных из существующего файла. Пример: создание копии файла oldfile.txt
:
cat oldfile.txt > newfile.txt
Использованная литература:
решение3
Его можно использовать для отображения содержимого файла. Например: cat "my file.txt"
. Вы также можете сделать , man cat
чтобы показать вам подробности о том, cat
для чего он может быть использован.
решение4
Вотдругой путьдля создания файла с использованием перенаправления оболочки (или конвейеризации) и 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
.