Поиск…


Синтаксис

  • cat [OPTIONS] ... [FILE] ...

параметры

вариант подробности
-n Номера строк печати
-v Показывать непечатаемые символы с использованием ^ и M-нотации, кроме LFD и TAB
-T Показывать символы TAB как ^ I
-E Показывать символы перевода строки (LF) в виде $
-e То же, что и -vE
-b Число непустых выходных строк, переопределяет -n
эквивалентно -vET
-s подавлять повторяющиеся пустые выходные строки, s означает сжатие

замечания

cat может читать как файлы, так и стандартные входы и объединяет их со стандартным выходом

Печать содержимого файла

cat file.txt

будет печатать содержимое файла.

Если файл содержит символы, отличные от ASCII, вы можете символически отображать эти символы с cat -v . Это может быть весьма полезно для ситуаций, когда контрольные символы в противном случае были бы невидимыми.

cat -v unicode.txt

Очень часто для интерактивного использования вам лучше использовать интерактивный пейджер, например, less или more . ( less чем more и рекомендуется использовать less часто, чем more ).

less file.txt

Чтобы передать содержимое файла в качестве ввода команды. Подход, обычно рассматриваемый как лучший ( UUOC ), заключается в использовании перенаправления.

tr A-Z a-z <file.txt   # as an alternative to cat file.txt | tr A-Z a-z

В случае, если содержимое нужно перечислить назад с его конца, можно использовать команду tac :

tac file.txt

Если вы хотите распечатать содержимое с номерами строк, используйте -n с cat :

cat -n file.txt

Чтобы отобразить содержимое файла в абсолютно однозначной побайтовой форме, шестнадцатеричный дамп является стандартным решением. Это полезно для очень коротких фрагментов файла, например, когда вы не знаете точное кодирование. Стандартная утилита hex dump - od -cH , хотя представление немного громоздко; общие замены включают xxd и hexdump .

$ printf 'Hëllö wörld' | xxd
0000000: 48c3 ab6c 6cc3 b620 77c3 b672 6c64       H..ll.. w..rld

Отображать номера строк с выводом

Используйте флаг --number для печати номеров строк перед каждой строкой. Альтернативно, -n делает то же самое.

$ cat --number file

 1  line 1
 2  line 2
 3
 4  line 4
 5  line 5

Чтобы пропустить пустые строки при подсчете строк, используйте --number-nonblank или просто -b .

$ cat -b file

 1  line 1
 2  line 2

 3  line 4
 4  line 5

Чтение со стандартного ввода

cat < file.txt

Результат такой же, как cat file.txt , но он считывает содержимое файла со стандартного ввода, а не непосредственно из файла.

printf "first line\nSecond line\n" | cat -n 

Команда эха перед | выводит две строки. Команда cat действует на выходе для добавления номеров строк.

Объединить файлы

Это основная цель cat .

cat file1 file2 file3 > file_all

cat также можно использовать аналогично файлам конкатенации в составе конвейера, например

cat file1 file2 file3 | grep foo

Запись в файл

cat >file

Это позволит вам написать текст на терминале, который будет сохранен в файле с именем file .

cat >>file

будет делать то же самое, за исключением того, что он добавит текст в конец файла.

NB: Ctrl + D для завершения написания текста на терминале (Linux)


Этот документ можно использовать для встраивания содержимого файла в командную строку или скрипт:

cat <<END >file
Hello, World.
END

Токен после символа << перенаправления - это произвольная строка, которая должна встречаться одна в строке (без начального или конечного пробела), чтобы указать конец документа здесь. Вы можете добавить цитирование, чтобы предотвратить выполнение командной строки и интерполяцию переменных:

cat <<'fnord'
Nothing in `here` will be $changed
fnord

(Без кавычек here будет выполняться как команда, а $changed будет заменено значением changed переменной - или ничего, если оно не определено).

Показывать непечатаемые символы

Это полезно, чтобы увидеть, есть ли какие-либо непечатаемые символы или символы, отличные от ASCII.

например, если вы скопировали код из Интернета, у вас могут быть такие цитаты, как вместо стандартного " .

$ cat -v file.txt
$ cat -vE file.txt # Useful in detecting trailing spaces.

например

$ echo '”     ' | cat -vE # echo | will be replaced by actual file.
M-bM-^@M-^]     $

Вы также можете использовать cat -A (A для всех), который эквивалентен cat -vET . Он отобразит символы TAB (отображается как ^I ), непечатаемые символы и конец каждой строки:

$ echo '” `' | cat -A
M-bM-^@M-^]^I`$

Конкатенация файлов gzipped

Файлы, сжатые gzip могут быть напрямую объединены в файлы большего размера.

cat file1.gz file2.gz file3.gz > combined.gz

Это свойство gzip , которое менее эффективно, чем конкатенация входных файлов и gzipping результат:

cat file1 file2 file3 | gzip > combined.gz

Полная демонстрация:

echo 'Hello world!' > hello.txt
echo 'Howdy world!' > howdy.txt
gzip hello.txt 
gzip howdy.txt

cat hello.txt.gz howdy.txt.gz > greetings.txt.gz

gunzip greetings.txt.gz

cat greetings.txt

В результате

Hello world!
Howdy world!

Обратите внимание, что greetings.txt.gz является одним файлом и распаковывается как один файл greeting.txt . Сравните это с tar -czf hello.txt howdy.txt > greetings.tar.gz , который хранит файлы отдельно в tarball.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow