一、简介
1.concatenate /kən'kætɪneɪt/ 拼接
2.cat不会改变原文件的任何数据,只是根据用户提供的选项,在stdout中生成一个修改过的输出。
二、技巧
1.stdin ——> 文件(拼接数据)
[root@localhost 1]# echo "I Love U,too" | cat - test.txt I Love U,too I Love U! [root@localhost 1]# cat test.txt I Love U!
说明:
(1)cat不会改变原文件的任何数据
(2)本例中,-被作为stdin文本的文件名
2.文件 ——> stdout(读取文件)
[root@localhost 1]# cat file1 file2 file3 1` 2` 3`
说明:
(1)可打印多个文件内容
3.连续的空白行 ——> 一行空白行(压缩)
[root@localhost 1]# cat file1 1` 2` [root@localhost 1]# cat -s file1 1` 2`
说明:
(1)cat -s将连续的空白行压缩成一行空白输出(consecutive)
4.显示制表符和行号
[root@localhost 1]# cat -T file1 1`^I hello world! [root@localhost 1]# cat -n file1 1 1` 2 hello world!
说明:
(1)cat -T将制表符tab记为^I
(2)cat -n在输出的每一行内容之前加上行号
5.创建文件
[root@localhost 1]# ll total 0 [root@localhost 1]# cat “i am handsome” > newfile.txt [root@localhost 1]# ll total 4 -rw-r--r-- 1 root root 14 Apr 6 18:23 newfile.txt
说明
(1)cat在打开输入文件之前,会先创建新的输出文件,且可以重定向至该文件。
6.清空文件
[root@localhost 1]# echo 'i love u' > newfile.txt [root@localhost 1]# cat newfile.txt > newfile.txt cat: newfile.txt: input file is output file [root@localhost 1]# ll total 0 -rw-r--r-- 1 root root 0 Apr 6 18:28 newfile.txt
说明:
(1)cat不允许使用输入文件作为重定向输出文件(有报错),此时会清空文件所有内容!!!
[root@localhost 1]# echo 'i love u' > newfile.txt [root@localhost 1]# cat newfile.txt | cat -n > newfile.txt [root@localhost 1]# ll total 0 -rw-r--r-- 1 root root 0 Apr 6 18:30 newfile.txt
说明:
(1)cat利用管道符可以执行输入文件作为重定向输出文件(无报错),此时会清空文件所有内容!!!
7.查看文件信息
7.1查看系统的发行版本
[root@localhost linux]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.5 (Maipo)
7.2查看登陆的欢迎信息
[root@localhost linux]# cat /etc/issue S Kernel on an m
7.3查看当前支持的shell
[root@localhost linux]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
7.4查看某个进程的环境变量
[root@localhost linux]# ps -aux #查看所有程序的PID [root@localhost linux]# pgrep httpd #查看某个程序的PID 9416 9420 9421 9422 9423 9424 [root@localhost linux]# cat /proc/9416/environ #格式就是cat /proc/$UID/environ,查看某个进程的环境变量 LANG=CPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binNOTIFY_SOCKET=/run/systemd/notify[root@localhost linux]# [root@localhost linux]# cat /proc/9416/environ | tr '