Bash
Использование кота
Поиск…
Синтаксис
- 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.