Linux/Unix中的cat命令示例

时间:2020-01-09 10:42:03  来源:igfitidea点击:

如何在Linux或者类似Unix的操作系统上使用cat命令?
您可以提供cat命令的基本示例和语法用法吗?

" cat"(连接的缩写)命令是Linux,Apple Mac OS X,Unix和* BSD(FreeBSD/OpenBSD/NetBSD)操作系统上最常用的灵活命令之一。

cat命令用于:

  • 在屏幕上显示文本文件
  • 读取文字档
  • 创建一个新的文本文件
  • 文件串联
  • 修改文件
  • 合并文字档
  • 合并二进制文件

cat命令语法

基本语法如下:

cat filename

或者

cat > filename

或者

cat [options] filename

或者

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

Linux中的cat命令及示例

它是用于连接和显示文件的标准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
Hyman:x:1000:1000:,,,:/home/Hyman:/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命令和Shell管道查看大文件

如果文件太大而无法放在计算机屏幕上,则文本将高速滚动。
您将无法阅读。
要解决此问题,请按以下方式将cat命令输出传递给more或者less命令:

cat bigfile | more
cat bigfile | less

越来越多的命令充当shell过滤器。
但是,您可以跳过cat命令,直接使用Linux/Unix more&less命令,如下所示:

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

使用^和注释,LFD和TAB除外,并显示所有非打印内容:

cat -v filename
cat --show-nonprinting filename

要显示全部,请执行:

cat -A fileName

或者

cat -vET fileName

查看所有文件

您可以简单地使用shell通配符,如下所示:

cat *

要仅查看(c个文件).c文件,请执行:

cat *.c

另一个选择是bash用于循环,或者ksh用于循环:

#!/bin/bash
for f in /source/project10/*.pl
do
   echo "***** [Start $f ] ****"
   cat -n "$f"
   echo "***** [End $f ] ****"
done

或者使用ksh shell相同:

#!/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下载限制为2GB。
有时保存带宽的文件大小被限制为100MB。
让我们使用wget命令来抓取一些文件(例如,将large.tar.gz拆分为远程URL上的3个文件):

wget url/file1.bin
wget url/file2.bin
wget url/file3.bin

现在,将这些文件(下载的* .bin)与cat命令轻松组合:

cat file1.bin file2.bin file3.bin > large.tar.gz
### extract it 
tar -zxvf large.tar.gz

在Unix和Linux下使用rar命令的另一个示例:

### 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

在脚本中显示大块文本数据

您可以使用here文档在脚本(如帮助)中显示大块文本数据:

cat <<HELPEOF
  Usage:
   opt1 : Do this
   opt2 : Do that
  HELPEOF

反向打印文件

没有cat不能反向打印,但是cat命令可以串联和反向打印文件:

tac fileName
cat fileName | tac
tac <<<"$myFileName"

cat命令选项

在cat(1)命令手册页中:

选项含义
-A相当于-vET。
-b非空输出行数。
-e相当于-vE。
-E在每行末尾显示$。
-n对所有输出行编号。
-s抑制重复的空输出行。
-t等效于-vT。
-T将TAB字符显示为^ I。
-v显示非打印内容,即使用^和M-标记,LFD和TAB除外。
--help显示此帮助并退出。
--version输出版本信息并退出。