cat 명령은 파일 내용을 표시하거나 표시할 여러 파일을 연결하거나 표준 입력에서 내용을 읽는 데 자주 사용됩니다. 그리고 그것을 표시합니다. 리디렉션 기호와 함께 사용되는 경우가 많습니다. 고양이는 Concatenate의 약어입니다.
Linux에는 각각 세 개의 특수 파일이 있습니다.
-표준 입력은 /dev/stdin의 STDIN입니다.
일반적으로 키보드 입력을 의미하며 쉘의 코드 번호는 0입니다.
-/dev/stdout의 표준 출력 STDOUT
일반적으로 모니터인 터미널을 의미합니다. 쉘의 코드 이름은 1입니다.
-/dev/stderr의 표준 오류 STDERR
는 터미널을 의미하기도 합니다. 차이점은 오류 메시지가 여기로 전송된다는 것입니다.
셸의 코드 이름은 2
语法:cat [选项] [文件]
short option | long option | meaning |
---|---|---|
-A | --show-all | 은 -vET |
-b와 같습니다. | --number -nonblank | 공백이 아닌 출력 라인 수 |
-e | 는 -vE | |
-E | --show-ends | 에서 "$" 표시 각 줄의 끝 |
-n | --number | 출력의 모든 줄에 번호를 매깁니다. |
-s | --squeeze-blank | 여러 개의 빈 줄을 출력하지 마세요 |
- -vT와 동등한 | -T | |
을 사용하는 t | 은 탭 문자를 ^I | |
-v | --show-nonprinting | 으로 표시합니다. ^ 및 M을 사용합니다. - LFD 및 Outside 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 合并文件 将两个文件FILE1和FILE2的内容合并为一个文件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 쉘 스크립트에서 익숙하지 않은 어린이는 cat << EOF가 파일의 끝인 것 같습니다. 탈리스만, 여기서는 어떤 역할을 하나요? EOF는 "파일 끝"이며 텍스트 문자의 끝을 나타냅니다.
<
EOF
- EOF는 여기서 특별한 의미는 없으며 FOE, OOO 등을 사용할 수 있습니다. (물론 세 글자나 대문자로 제한되지는 않습니다)
- EOF를 다른 것으로 바꿀 수 있습니다. 즉, 콘텐츠를 프로세스에 표준 입력으로 전달하는 것입니다.
- 이 두 식별자를 결합하면 여러 줄의 echo 명령을 사용하지 않고 여러 줄의 출력 결과를 얻을 수 있습니다.
다음으로 몇 가지 일반적인 사용 방법과 해당 기능을 간략하게 설명합니다.
- cat <
- cat >filename, 파일을 만들고 표준을 넣습니다. 파일 이름 파일에 대한 입력 및 출력은 ctrl+d를 입력으로 사용합니다.
- cat >filename <
# cat >test.sh <#!/bin/bash > #you Shell script writes here. > EOF 다른 작성 방법
1. 파일 추가
#cat <<EOF >>test.sh
cat <<EOF >>test.sh
2、追加文件,换一种写法
#cat >>test.sh <<EOF
3、EOF只是标识,不是固定的。这里的“HHH”就代替了“EOF”的功能。结果是相同的。
#cat <<HHH >iii.txt
> sdlkfjksl
> sdkjflk
> asdlfj
> HHH4、非脚本中。如果不是在脚本中,我们可以用Ctrl+D输出EOF的标识
> sdlkfjksl
#cat >iii.txt
2. 파일 추가, 작성 방법 변경
# cat >>test.sh <<EOF
3. EOF는 고정된 것이 아니라 로고일 뿐입니다. 여기서 "HHH"는 "EOF"의 기능을 대체합니다. 결과는 동일합니다.
#cat <<HHH >iii.txt