侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Linux 中 用cat 输出文件内容

2023-12-18 星期一 / 0 评论 / 0 点赞 / 127 阅读 / 6684 字

功能:把一个或者多个文件(或者标准输入)连接在一起,并标准输出。(Concatenate FILE(s), or standard input, to standard output.) cat命令常

功能:把一个或者多个文件(或者标准输入)连接在一起,并标准输出。(Concatenate FILE(s), or standard input, to standard output.)
cat命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示。它常与重定向符号配合使用。cat是Concatenate的缩写。

. 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的内容 cat FILE 显示文件FILE的内容加上行号,需要加上参数-n。行号从1开始。使用-n参数时,所有空行也会显示行号 cat -n FILE 忽略掉空行,用-b cat -b FILE 当遇到有连续两行以上的空白行,就代换为一行的空白行,可以使用-s参数 cat -s FILE  保存内容 将标准输入保存到文件FILE中,如果文件已经存在,则覆盖掉原来的 cat >FILE 将标准输入追加到文件FILE末尾 cat >>FILE   合并文件   将两个文件FILE1FILE2的内容合并为一个文件FILE cat FILE1 FILE2 >FILE 

cat 使用实例

从标准输入创建文件 [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]# cat 1.txt   显示1.txt文本内容。标准输出 Hello Bash Linux [root@web setup]# cat <1.txt Hello Bash Linux [root@web setup]#    使用heredoc来生成文件 注意:粗体部分、here doc可以进行字符串替换 [root@web setup]# cat >2.txt <<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]# cat 2.txt Hello Bash Linux PWD=/root/setup  [root@web setup]#    输出行号 [root@web setup]# cat -n 1.txt      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=$(cat .bash_profile) [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 ~]#

 

heredoc文档

在linux shell脚本中我们经常见到类似于cat << EOF的语句,不熟悉的童鞋可能觉得很奇怪:EOF好像是文件的结束符,用在这里起到什么作用?EOF是“end of file”,表示文本结束符。

<<EOF
(内容)
EOF

  • EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符)。
  • 可以把EOF替换成其他东西,意思是把内容当作标准输入传给程
  • 结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。

接下来,简单描述一下几种常见的使用方式及其作用:

  • cat <<EOF,以EOF输入字符为标准输入开始
  • cat >filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入。
  • cat >filename <<EOF,以EOF作为输入结束,和ctrl+d的作用一样。
# cat >test.sh <<EOF> #!/bin/bash> #you Shell script writes here.> EOF

其他写法

1、追加文件
# cat <<EOF >>test.sh

2、追加文件,换一种写法
cat >>test.sh <<EOF

3、EOF只是标识,不是固定的。这里的“HHH”就代替了“EOF”的功能。结果是相同的。
cat <<HHH >iii.txt
> sdlkfjksl
> sdkjflk
> asdlfj
> HHH

4、非脚本中。如果不是在脚本中,我们可以用Ctrl+D输出EOF的标识
cat >iii.txt
skldjfklj
sdkfjkl
kljkljklj
kljlk
Ctrl+D

广告 广告

评论区