4、管道符与重定向

  • 管道符

windows: |:直接执行后面的语句。 ||:如果前面的执行的语句出错,则执行后面的语句。 &:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假 &&:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。

linux: ;:执行完前面的语句再执行后面的。 |:显示后面语句的执行结果。 ||:当前面的语句执行出错时,则直接执行后面的语句  &:如果前面的语句为假则直接执行后面的语句,前面的与可真可假


~: 家目录 # cd ~ 代表进入用户家目录
!:    执行历史命令 !! 执行上一条命令
$:   变量中取内容符
+ - * \ %:    对应数学运算 加 减 乘 除 取余数
&:    后台执行
*:    星号是shell中的通配符 匹配所有
?:  问号是shell中的通配符 匹配除回车以外的一个字符
;:    分号可以在shell中一行执行多个命令,命令之间用分号分割
|:    管道符 上一个命令的输出作为下一个命令的输入 cat filename | grep "abc"
\:   转义字符
``:  反引号 命令中执行命令 echo "today is `date +%F`"
' ':    单引号,脚本中字符串要用单引号引起来,但是不同于双引号的是,单引号不解释变量
" ":    双引号,脚本中出现的字符串可以用双引号引起来

重定向

 

 

 

[root@localhost ~]#ls >/dev/pts/1
#打开两个终端,ls命令显示到终端1上 标准重定向省略了1>

[root@localhost ~]#xxx >/dev/pts/1
##错误重定向
bash: xxx: 未找到命令...
[root@localhost ~]#xxx 2>/dev/pts/1
##会在另一边显示

[root@localhost ~]#rm xxx.txt >/dev/pts/1
#提示信息也是错误
rm: 无法删除"xxx.txt": 没有那个文件或目录
[root@localhost ~]#rm xxx.txt 2>/dev/pts/1

[root@localhost ~]#ls /data /error >all.log 2>&1
#既有错误也有正确 &符号表示分隔符
[root@localhost ~]#cat all.log
ls: 无法访问/error: 没有那个文件或目录
/data:
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.bz2

[root@localhost ~]#ls /data /error >all.log 2>1
#如果没有&会生成一个 1文件 将错误导入

[root@localhost ~]#cat bc.log
2*6
[root@localhost ~]#bc <bc.log


[root@test1 ~]# vim passwd.txt\\重定向输入
123321
[root@test1 ~]# setenforce 0 \\关闭selinux否则会有问题
[root@test1 ~]# passwd --stdin lisi <passwd.txt
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@test1 ~]# cat passwd.txt
123321
[root@test1 ~]# echo "123123" > passwd.txt //单个覆盖,多个不覆盖追加
[root@test1 ~]# cat passwd.txt
123123
[root@test1 ~]# ls > passwd.txt //将命令结果放进文本中
[root@test1 ~]# cat passwd.txt
bin
cpu
disk.sh
first.sh
f.sh
gs.sh
g.txt
passwd.txt
sdb.sh
source
test.sh

[root@test1 ~]# cat passwd.txt
123123
[root@test1 ~]# echo "123123" >> passwd.txt
[root@test1 ~]# cat passwd.txt
123123
123123
[root@test1 ~]# id wa 2>error.log //将错误信息写入error.log
[root@test1 ~]# cat error.log
id: wa: no such user
[root@test1 ~]# id wa >error.log //不加2 无法写入
id: wa: no such user
[root@test1 ~]# cat passwd.txt error.log &>new //混合输入无论对错
[root@test1 ~]# cat new
bin
cpu
disk.sh
first.sh
f.sh
gs.sh
g.txt
passwd.txt
sdb.sh
source
test.sh
cat: error.log: 没有那个文件或目录

#不能将正确和错误一起显示出来
[root@centos7 ~]#ls /data /xxx > /data/all.log 2>&1
[root@centos7 ~]#ls /data /xxx 2> /data/all.log 1>&2
[root@centos7 ~]#ls /data /xxx &> /data/all.log
[root@centos7 ~]#ls /data /xxx >& /data/all.log

#[root@centos7 ~]#ls /data /xxx 2>&1 > /data/all.log

 

posted @ 2022-06-05 15:47  yu-ye  阅读(119)  评论(0)    收藏  举报