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

Как извлечь имена пользователей из файла /etc/passwd в Linux

Я новый пользователь систем Linux и Unix. Как мне использовать команду cat в Linux или Unix-подобных операционных системах? Можете ли вы предоставить основные примеры и использование синтаксиса для команды cat?

Команда cat(сокращение от concatenate) – одна из наиболее часто используемых гибких команд в операционных системах Linux, Apple Mac OS X, Unix, * BSD (FreeBSD / OpenBSD / NetBSD).

 

Команда cat используется для:

 

  1. Показать текстовый файл на экране
  2. Прочитать текстовый файл
  3. Создать новый текстовый файл
  4. Объединение файлов
  5. Изменение файла
  6. Объединение текстовых файлов
  7. Объединение двоичных файлов

Цель

Базовые файловые операции с текстовым файлом, такие как отображение или создание новых файлов.

Cинтаксис команды cat

Базовый синтаксис следующий:

cat filename

ИЛИ

cat > filename

ИЛИ

cat [options] filename

ИЛИ

cat file1
cat > file2
cat file3 | command
cat file4 | grep something

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

Команда cat в Linux / Unix с примерами
Это стандартная программа 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 в Linux / Unix с примерами

Просмотр всех файлов

Вы можете просто использовать подстановочный знак оболочки следующим образом:
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 Вывести информацию о версии и выйти.

Author: forgero

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

  1. Уведомление: 10 команд Linux для изучения системы - INFOIT.COM.UA

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

4 × четыре =