Я новый пользователь систем Linux и Unix. Как мне использовать команду cat в Linux или Unix-подобных операционных системах? Можете ли вы предоставить основные примеры и использование синтаксиса для команды cat?
Команда cat(сокращение от concatenate) — одна из наиболее часто используемых гибких команд в операционных системах Linux, Apple Mac OS X, Unix, * BSD (FreeBSD / OpenBSD / NetBSD).
Цель
Базовые файловые операции с текстовым файлом, такие как отображение или создание новых файлов.
Cинтаксис команды cat
Базовый синтаксис следующий:
cat filename
ИЛИ
cat > filename
ИЛИ
cat [options] filename
ИЛИ
cat file1
cat > file2
cat file3 | command
cat file4 | grep something
Команда cat в Linux с примерами
Это стандартная программа Unix, используемая для объединения и отображения файлов. Команда cat отображает содержимое файла на экране. Также вы можете использовать команду cat для быстрого создания файла. Команда cat может читать и записывать данные со стандартных устройств ввода и вывода. Обратите внимание, что некоторые из следующих параметров будут работать только с версией GNU команды cat.
Отображение файла с помощью команды cat
Чтобы просмотреть файл, введите:
cat filename cat /path/to/file cat /etc/passwd |
Примеры результатов:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh .... ... ..hplip:x:109:7:HPLIP system user,,,:/var/run/hplip:/bin/false vivek:x:1000:1000:Vivek Gite,,,:/home/vivek:/bin/bash bind:x:110:118::/var/cache/bind:/bin/false haldaemon:x:111:119:Hardware abstraction layer,,,:/var/run/hald:/bin/false sshd:x:112:65534::/var/run/sshd:/usr/sbin/nologin mysql:x:113:121:MySQL Server,,,:/var/lib/mysql:/bin/false
Создать файл с помощью команды cat
Чтобы создать файл с именем «foo.txt», введите:
cat >foo.txt
Введите следующий текст:
This is a test. Unix is the best. <control-D>
Вам нужно нажать [CTRL] + [D] т.е. удерживайте нажатой кнопку управления, затем нажмите d. Символ> сообщает системе Unix / Linux, что набранные данные должны быть сохранены в файле с именем foo.txt ( дополнительную информацию см. В stdout ). Для просмотра файла используйте команду cat следующим образом:
cat foo.txt
Просмотр большого файла с помощью cat Command и Shell Pipes
Если файл слишком велик, чтобы поместиться на экране компьютера, текст будет прокручиваться вниз с высокой скоростью. Вы не сможете читать. Чтобы решить эту проблему, передайте вывод команды cat команде more или less следующим образом:
cat bigfile | more cat bigfile | less |
Команда more и less действует как фильтры оболочки . Однако вы можете пропустить команду cat и напрямую использовать команду more & less для Linux / Unix следующим образом:
more bigfile less bigfile |
Как объединить два или более файлов с помощью команды cat
Вы можете объединить два файла и создать новый файл с именем report.txt, введите:
cat score.txt names.txt > report.txt cat report.txt |
Как добавить данные в текстовый файл
Чтобы добавить (добавить данные к существующим) данные в файл с именем foo.txt, введите:
cat >>foo.txt |
Введите текст:
A champion is someone who gets up, even when he can't <control-D>
Задача: пронумеровать все выходные строки
Введите следующую команду:
cat -n filename cat --number filename |
Как просмотреть непечатаемые символы
Чтобы отобразить символы TAB как ^ I, введите::
cat -T filename
Чтобы отобразить $ в конце каждой строки, введите:
cat -E filename cat --show-ends filename |
Используйте нотацию ^ и M-, кроме LFD и TAB, и показывайте все непечатаемые:
cat -v filename cat --show-nonprinting filename |
Чтобы показать все, введите:
cat -A fileName
ИЛИ
cat -vET fileName
Примеры выходных данных:
Просмотр всех файлов
Вы можете просто использовать подстановочный знак оболочки следующим образом:
cat *
Чтобы просмотреть только файлы (c) * .c, введите:
cat *.c
Другой вариант — bash for loop или ksh for loop :
#!/bin/bash for f in /source/project10/*.pl do echo "***** [Start $f ] ****" cat -n "$f" echo "***** [End $f ] ****" done |
ИЛИ то же самое с использованием оболочки ksh :
#!/bin/ksh for f in $(ls /source/project10/*.pl) do print "*** [Start $f ] ****" cat "$f" print "*** [End $f ] ****" done |
Распечатать файлы
Вы можете напрямую отправить файл на печатающее устройство, такое как /dev/lp
cat resume.txt > /dev/lp
В современных системах /dev/lp может не существовать, и вам необходимо распечатать файл с помощью такого инструмента, как lpr:
cat resume.txt | lpr
ИЛИ
lpr resume.txt
Присоединение к двоичным файлам
Вы можете объединять двоичные файлы. В старые добрые времена большинство загрузок по FTP / HTTP ограничивалось 2 ГБ. Иногда для экономии трафика размер файлов ограничивался 100 МБ. Давайте воспользуемся командой wget для получения некоторых файлов (скажем, large.tar.gz был разделен на 3 файла на удаленном URL-адресе):
Теперь легко объедините такие файлы (загруженные * .bin) с помощью команды cat:
wget url/file1.bin
wget url/file2.bin
wget url/file3.bin
cat file1.bin file2.bin file3.bin > large.tar.gz ### extract it tar -zxvf large.tar.gz |
Другой пример с командой rar под Unix и Linux:
### First combine the files, and use the > shell redirection output to put the DVD image in a file ### cat file.rar.001 file.rar.002 file.rar.003 file.rar.004 file.rar.005 > dvd.rar ## next unrar it ## unrar e dvd.rar ## enjoy dvd ## mplayer myfile.avi |
Программы обмана
Вы можете использовать команду cat, чтобы обмануть многие программы. В этом примере bc считает, что он не запущен на терминалах, и не отображает сообщение об авторских правах. Вывод по умолчанию:
bc -l
Примеры сеанса:
bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 4+5 9 quit
Теперь попробуйте с помощью команды cat:
bc -l | cat
Примеры сеанса:
4+5 9 quit
Тестирование аудиоустройства
Вы можете отправлять файлы на звуковые устройства, такие как /dev/dsp или /dev/audio чтобы убедиться, что вывод и ввод звука работают:
cat filename >/dev/dsp cat recording.au >/dev/audio |
Вы можете просто использовать следующую команду для записи голосового фрагмента и воспроизвести его с помощью команды cat:
dd bs=8k count=4 </dev/audio >testing123.au cat testing123.au >/dev/audio |
Сбор системной информации Linux
### To see CPU information ### cat /proc/cpuinfo ### To see memory information ### cat /proc/meminfo ### To see Linux kernel version ### cat /proc/version |
Отображение больших блоков текстовых данных в скрипте
Вы можете использовать здесь документ для отображения больших блоков текстовых данных в скрипте, например help:
cat <<HELPEOF Usage: opt1 : Do this opt2 : Do that HELPEOF |
Другой рабочий пример:
#!/bin/bash # Author: Vivek Gite <http://www.cyberciti.biz/ # ----------------------------------------------- #Set default to my-dev-box BASEDIR="/home/vivek/projects/bash/nginx-keepalived/chroot" # Now switch to prod [[ $HOSTNAME == "lb2.nixcraft.net.in" ]] && BASEDIR="/etc/nixcraft/nginx/lb2" [[ $HOSTNAME == "lb2.nixcraft.net.in" ]] && BASEDIR="/etc/nixcraft/nginx/lb1" _profile="$BASEDIR/redhat.conf" _etc_files="$BASEDIR/redhat.etc.files.conf" _etc_dirs="$BASEDIR/redhat.etc.dirs.conf" _hooks="$BASEDIR/hooks.sh" usage(){ cat<<EOF Usage $0 -e | --enable: Enable the nginx-chroot environment -E | --upgrade: Upgrade bind and libs in the nginx-chroot environment -p | --php: Enable the php-cgi in the nginx-chroot environment -P | --phpupgrade: Upgrade the php-cgi in the nginx-chroot environment -i | --info: Display the php-cgi and nginx environment information such as version, users, connections etc EOF } rootuser(){ local uid=$(id -u) [[ $uid -ne 0 ]] && { echo "Only root may enable the nginx-chroot environment to the system."; exit 2; } } ## function code removed to keep script short and sweet ## enable_nginix_chroot(){ : } upgrade_nginx_chroot(){ : } enable_php_cgi_nginx_chroot(){ : } upgrade_php_cgi_nginx_chroot(){ : } get_nginx_chroot_info(){ : } # Make sure only root run this script rootuser # Load local hooks [ -f "${_hooks}" ] && . ${_hooks} # Load os specifc paths source ${_profile} # Main logic case $1 in -e|--enable) enable_nginix_chroot ;; -E|--upgrade) upgrade_nginx_chroot;; -p|--php) enable_php_cgi_nginx_chroot;; -P|--phpupgrade) upgrade_php_cgi_nginx_chroot;; -i|--info) get_nginx_chroot_info;; *) usage; exit 9999; esac |
Печать файлов в обратном порядке
Ни одна кошка не может печатать в обратном порядке, но команда cat может объединять и печатать файлы в обратном порядке:
tac fileName cat fileName | tac tac <<<"$myFileName" |
См. « Как использовать здесь документы для записи данных в файл в сценарии bash » для получения дополнительной информации.
Параметры команды cat
На странице руководства по команде cat (1):
Option | Meaning |
-A | Эквивалентно -vET. |
-b | Пронумеруйте непустые выходные строки |
-e | Эквивалентно -vE. |
-E | Отображать $ в конце каждой строки. |
-n | Пронумеруйте все выходные строки. |
-s | Подавить повторяющиеся пустые выходные строки. |
-t | Эквивалентно -vT. |
-T | Отображать символы TAB как ^I. |
-v | Показывать непечатаемые символы, т. Е. Использовать символы ^ и M-, кроме LFD и TAB. |
--help | Отобразите эту справку и выйдите. |
--version | Вывести информацию о версии и выйти. |