cat 명령은 파일 내용을 표시하거나 표시할 여러 파일을 연결하거나 표준 입력에서 내용을 읽는 데 자주 사용됩니다. 그리고 그것을 표시합니다. 리디렉션 기호와 함께 사용되는 경우가 많습니다. 고양이는 Concatenate의 약어입니다.
Linux에는 각각 세 개의 특수 파일이 있습니다.
-표준 입력은 /dev/stdin의 STDIN입니다.
일반적으로 키보드 입력을 의미하며 쉘의 코드 번호는 0입니다.
-/dev/stdout의 표준 출력 STDOUT
일반적으로 모니터인 터미널을 의미합니다. 쉘의 코드 이름은 1입니다.
-/dev/stderr의 표준 오류 STDERR
는 터미널을 의미하기도 합니다. 차이점은 오류 메시지가 여기로 전송된다는 것입니다.
셸의 코드 이름은 2
--show-tabs
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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 输出文件内容
显示文件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 사용 예
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 从标准输入创建文件
[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는 "파일 끝"이며 텍스트 문자의 끝을 나타냅니다.
< (content)
EOF
- EOF는 여기서 특별한 의미는 없으며 FOE, OOO 등을 사용할 수 있습니다. (물론 세 글자나 대문자로 제한되지는 않습니다)
- EOF를 다른 것으로 바꿀 수 있습니다. 즉, 콘텐츠를 프로세스에 표준 입력으로 전달하는 것입니다.
- 이 두 식별자를 결합하면 여러 줄의 echo 명령을 사용하지 않고 여러 줄의 출력 결과를 얻을 수 있습니다.
다음으로 몇 가지 일반적인 사용 방법과 해당 기능을 간략하게 설명합니다.
- cat <
- cat >filename, 파일을 만들고 표준을 넣습니다. 파일 이름 파일에 대한 입력 및 출력은 ctrl+d를 입력으로 사용합니다.
- cat >filename <
1 2 3 4 5 6 7 8 | # cat >test.sh <<eof> #!/bin/bash
> #you Shell script writes here.
> EOF
<span id= "OSC_h4_3" ></span><h4>다른 작성 방법</h4>
<p>1. 파일 추가<br> #<code> cat <<EOF >>test.sh</code><code> cat <<EOF >>test.sh</code></p>
<p>2、追加文件,换一种写法<br> # <code>cat >>test.sh <<EOF</code></p><p>3、EOF只是标识,不是固定的。这里的“HHH”就代替了“EOF”的功能。结果是相同的。<br> # <code>cat <<HHH >iii.txt</code><br> > sdlkfjksl<br> > sdkjflk<br> > asdlfj<br> > HHH</p>
<p>4、非脚本中。如果不是在脚本中,我们可以用Ctrl+D输出EOF的标识<br> # <code>cat >iii.txt</code><br>2. 파일 추가, 작성 방법 변경<br> # cat >>test.sh <<EOF<br><br>3. EOF는 고정된 것이 아니라 로고일 뿐입니다. 여기서 "HHH" 는 "EOF" 의 기능을 대체합니다. 결과는 동일합니다. <br> # <code>cat <<HHH >iii.txt</code></p><code> > sdlkfjksl
</code></eof>
|