cat 查看文件内容,默认输出到屏幕

cat命令用于查看文件内容,默认输出到标准输出屏幕,其语法格式如下:

cat [选项] 文件名.....

参数说明:

-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;

Here Document语法格式:

command << delimiter
...................
...................
delimiter

说明:Bash把操作符<<看出输入指令,后面的delimiter是标识输入开始和结束的标识符。Bash会一直提示输入,用来等待用户输入,直到用户输入另一个相同的delimiter,标识输入结束,两个delimiter之间的数据就会被作为command命令的标准输入。delimiter可以是任意的字符,但delimiter只能是一个字符,即中间不能有空格或tab键,经常使用的有EOF。

cat的这个重要功能,即通常和Here Document配合来打印菜单,如下:

cat<<EOF
 ...................
.....................
EOF

演示示例:

[root@Centos8 ~]# cat -n text.tx
     1  shfdkshd
     2
     3  dfdf
  
cat -n textfile1 > textfile2			# 把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里
cat -b textfile1 textfile2 >> textfile3		#把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里
cat /dev/null > /etc/test.txt			#清空 /etc/test.txt 文档内容
cat /dev/fd0 > OUTFILE			#cat 也可以用来制作镜像文件
cat IMG_FILE > /dev/fd0			#相反的,如果想把 image file 写到软盘
cat file1 file 2 >>file3				#把file1与file2内容合并,追加到file3

打印菜单:

vim  cat.sh
#! /bin/bash
cat<<EOF
1)安装Apache
2)安装MYSQL
3)安装PHP
4)启动Apache
5)启动MYSQL
6)按q键退出
EOF

cat还可以创建文件并添加内容或这直接追加文件,如下:

cat >hello.txt<<EOF
> I am studnet
> are you  studnet ?
>  I am a  studnet
>  she is a studnet
> EOF
当hello.txt不存在,就创建了hello.txt并写入内容;
若只是想对已存在文件进行追加内容,则如下:
cat >>show.txt<<EOF
> I am studnet
> are you  studnet ?
>  I am a  studnet
>  she is a studnet
> EOF

[root@Centos8 ~]# cat -E shell_scripy/cat.sh #-E参数显示脚本中的换行符

#! /bin/bash$
echo 脚本名称$0$
echo 第一个参数$1$
echo 第二个参数$2$
echo 所有参数$*$
echo 所有参数$@$
echo 参数个数$#$
echo 程序的PID:$$$
echo 上一条命令是否执行成功:$?$

说明:shell脚本中,每写完一条命令后按enter键,shell都会自动插入一个换行符(为了让程序执行时知道该条命令结束),然后光标在定义到下一行的位置,这个换行符通常是看不见的,想要看脚本文件中各个换行符的位置,可以用 cat命令的 -E选项或–show-ends选择查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 以root身份创建一个新文件: ``` sudo touch testfile ``` 观察其默认权限: ``` ls -l testfile ``` 输出类似于: ``` -rw-r--r-- 1 root root 0 Dec 10 14:55 testfile ``` 其中,`-rw-r--r--` 表示文件权限,第一个 `-` 表示类型,`rw-` 表示所有者(root)有读写权限,`r--` 表示所属组和其他用户只有读权限。 2. 使用vi编辑该文件,并将该文件权限改为只有用户可读,其他权限均无: ``` sudo chmod 400 testfile vi testfile ``` 在vi中输入一些内容并保存。 3. 以root身份创建一个脚本,该脚本使用cat命令在屏幕上显示前面创建文件内容: ``` sudo touch testscript sudo vi testscript ``` 在vi中输入以下内容: ```bash #!/bin/bash cat testfile ``` 并保存文件。 4. 将脚本文件设置为所有用户可执行: ``` sudo chmod a+x testscript ``` 5. 分别以root和普通用户身份登录,执行脚本,观察结果: - 以root身份执行脚本:`sudo ./testscript`,正常输出文件内容。 - 以普通用户身份执行脚本:`./testscript`,因为文件权限不足,无法打开文件输出类似于: ``` cat: testfile: Permission denied ``` 6. 为cat文件加SUID权限,再重复前一步操作,观察结果,说明原因。 ``` sudo chmod u+s /bin/cat ``` - 以root身份执行脚本:`sudo ./testscript`,正常输出文件内容。 - 以普通用户身份执行脚本:`./testscript`,因为cat命令具有SUID权限,可以继承文件所有者的权限,因此可以打开文件输出内容

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值