Команда cat в Linux / Unix с примерами

Я новый пользователь систем 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 Вывести информацию о версии и выйти.

Прокрутить вверх