Linux/Unix中的cat命令示例
如何在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 | 输出版本信息并退出。 |