功能:把一个或者多个文件(或者标准输入)链接在一块儿,并标准输出。(Concatenate FILE(s), or standard input, to standard output.)
cat命令经常使用来显示文件内容,或者将几个文件链接起来显示,或者从标准输入读取内容并显示。它常与重定向符号配合使用。cat是Concatenate的缩写。linux
Linux 有三个特别文件,分别
1)标准输入 即 STDIN , 在 /dev/stdin
通常指键盘输入, shell里代号是 0
2) 标准输出 STDOUT, 在 /dev/stdout
通常指终端(terminal), 就是显示器, shell里代号是 1
3) 标准错误 STDERR, 在 /dev/stderr
也是指终端(terminal), 不一样的是, 错误信息送到这里
shell里代号是 2
语法:cat [选项] [文件]
短选项 | 长选项 | 涵义 |
---|---|---|
-A | --show-all | 等于-vET |
-b | --number-nonblank | 对非空输出行编号 |
-e | 等于-vE | |
-E | --show-ends | 在每行结束处显示"$" |
-n | --number | 对输出的全部行编号 |
-s | --squeeze-blank | 不输出多行空行 |
-t | 与-vT 等价 | |
-T | --show-tabs | 将跳格字符显示为^I |
-v | --show-nonprinting | 使用^ 和M- 引用,除了LFD和 TAB 以外 |
输出文件内容 显示文件FILE的内容 显示文件FILE的内容加上行号,须要加上参数-n。行号从1开始。使用-n参数时,全部空行也会显示行号 忽略掉空行,用-b 当遇到有连续两行以上的空白行,就代换为一行的空白行,可使用-s参数 保存内容 将标准输入保存到文件FILE中,若是文件已经存在,则覆盖掉原来的 将标准输入追加到文件FILE末尾 合并文件 将两个文件FILE1和FILE2的内容合并为一个文件FILE cat FILEcat -n FILEcat -b FILEcat -s FILEcat >FILEcat >>FILEcat FILE1 FILE2 >FILE
从标准输入建立文件 [root@web setup]# code>cat >1.txt Hello Bash Linux 键盘(快捷键)Ctrl+D 保存文件 [root@web setup]# ls -l 1.txt -rw-r--r-- 1 root root 17 11-02 21:32 1.txt [root@web setup]# 显示1.txt文本内容。标准输出 Hello Bash Linux [root@web setup]# Hello Bash Linux [root@web setup]# 使用heredoc来生成文件 注意:粗体部分、here doc能够进行字符串替换 [root@web setup]# <<EOF > Hello > Bash > Linux > PWD=$(pwd) > EOF [root@web setup]# ls -l 2.txt -rw-r--r-- 1 root root 33 11-02 21:35 2.txt [root@web setup]# Hello Bash Linux PWD=/root/setup [root@web setup]# 输出行号 [root@web setup]# 1 Hello 2 Bash 3 Linux [root@web setup]# nl 1.txt 1 Hello 2 Bash 3 Linux [root@web setup]# 在bash脚本中把文件内容加载到变量中 [root@web ~]# TEXT=$() [root@web ~]# [root@web ~]# echo "$TEXT" # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH unset USERNAME [root@web ~]#cat 1.txtcat <1.txtcat >2.txtcat 2.txtcat -n 1.txtcat .bash_profile
在linux shell脚本中咱们常常见到相似于cat << EOF的语句,不熟悉的童鞋可能以为很奇怪:EOF好像是文件的结束符,用在这里起到什么做用?EOF是“end of file”,表示文本结束符。web
<<EOF
(内容)
EOFshell
接下来,简单描述一下几种常见的使用方式及其做用:bash
# <<EOF > #!/bin/bash > #you Shell script writes here. > EOFcat >test.sh
一、追加文件
# cat <<EOF >>test.sh
spa
二、追加文件,换一种写法
# cat >>test.sh <<EOF
code
三、EOF只是标识,不是固定的。这里的“HHH”就代替了“EOF”的功能。结果是相同的。
# cat <<HHH >iii.txt
> sdlkfjksl
> sdkjflk
> asdlfj
> HHHip
四、非脚本中。若是不是在脚本中,咱们能够用Ctrl+D输出EOF的标识
# cat >iii.txt
skldjfklj
sdkfjkl
kljkljklj
kljlk
Ctrl+Dci