当前位置: 首页 > news >正文

Linux技巧(六):命令尾部的作用 | 、、|、||、;、()的区别和作用(很实用)

前言

在使用Linux命令时,&&、||、;、()这些偶尔会接触到,命令结尾单独的“&”符号,又有什么作用,这些命令之间有何区分,一起走进下文。

bin/zookeeper-server-start.sh config/zookeeper.properties &

一、命令尾部,单独“&”的作用

1.1、&的作用

作用:表示任务在后台执行,即使ssh窗口关闭,依然会持续运行。

语法格式:command1 &

注意:默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,此时可以在启动时,参数尾部加一个'&'实现这个目的。类似于docker run 命令的-d 的作用。

#docker run -d -p 8000:8080 tomcat 后台阻塞运行(如果没有-d,窗口被关闭,服务也会随之关闭)

【PS】:如果你对Docker学习:Docker命令的使用,感兴趣,点击进入。 

1.2、nohup的作用

nohup是no hang up 的缩写,即:不挂断的意思。以忽略挂起信号的方式执行命令,关闭终端后进程还能继续执行,但是直接在shell中使用ctrl + c 或ctrl + z时,进程会结束。

语法格式:nohup Command [ Arg ... ] [ &

注意事项:

要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。 如果不将 nohup 命令的输出重定向,输出将附加到当前目录的nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中。 


[root@centOS7 ~]# nohup ./startup.sh >output 2>&1 & 

二、“&&”拼接命令的作用

作用:表示前一条命令执行成功时,才执行后一条命令;反之,前面的命令执行失败,则&&后面的命令不会被执行。

语法格式:  command1 && command2  [&& command3 ...]

示例 

[root@centOS7 ~]# data && echo hello
bash: data: 未找到命令...
[root@centOS7 ~]# date && echo hello
2022年 10月 17日 星期一 00:07:01 CST
hello

注意:它的特性是“下一条命令,依赖前一条命令是否执行成功 ”,所以前后关系较为密切的一些组合命令中,经常发现他们的身影。

比如:expect的安装,需要先安装依赖,如果合并为一条命令,此时就用上&&了。 

三、“|”管道的作用

作用:| 表示管道,上一条命令的输出,作为下一条命令参数,通常用来过滤/汇总数据。

语法格式:  command1 |  command2  [ | command3 … ]

注:| 根据需求,可以在一条命令中连续被使用,它通常和find grepwc等命令组合在一起使用 。

示例一:配合grep,完成过滤

#过滤出占用端口9092的程序(kafka)
netstat -nalpt | grep 9092

示例二:配合wc完成统计

 echo 'yes' | wc -l
 echo 'yes' | wc -m

  

示例三:连续使用管道

[root@centOS7 ~]# cat /etc/passwd | grep /bin/bash | wc -l
2
[root@centOS7 ~]# 

  

四、“||”拼接符的作用

作用:表示上一条命令执行失败后,才执行下一条命令。一旦执行到一条成功的命令,后面用||连接的命令,就不会再被执行。

语法格式:  command1 | | command2  [ | |command3 … ] 

注意:只要上一条命令执行成功,则下一条命令不会被执行。 

注:||后面的命令,有点儿托底的意思,类似于java中的 try,catch。 

[root@centOS7 ~]# cat nofile || echo "hi,succ"
cat: nofile: 没有那个文件或目录
hi,succ
[root@centOS7 ~]# cat /etc/hostname || echo "hello succ"
centOS7
[root@centOS7 ~]# 

五、“;”拼接符的作用

作用:把多条命令,拼接在一起后执行,可减少(人机)交互次数。

语法格式:command1;command2  [ ;command3 … ] 

注意:;号隔开每个命令, 每个命令按照从左到右的顺序执行, 但是彼此之间不关心是否失败, 所有命令都会执行。 

[root@centOS7 ~]# data;echo 'hello';date;cat /etc/hostname
bash: data: 未找到命令...
hello
2022年 10月 17日 星期一 00:34:05 CST
centOS7
[root@centOS7 ~]# 

 

六、“()”拼接符的作用 

作用:把多个命令,当做一个整体执行,同时增强了可读性。

通常情况下,多个命令用“;”分隔后,最外层再用“()”包裹一下,通常用在稍微复杂点的shell中。

语法格式:(command1command2command3...)

七、“>”连接符的作用

作用:把正确无误的信息重定向到另一个文件内

 注意:如果每次都是重定向到同一个文件,它的效果是覆盖原文件信息,不是内容追加!

#切换到指定目录
cd mypackage && ls
#根据名称查找文件,并把符合条件的名称,重定向输入到tar.txt中
find -name "*.tar.*" > tar.txt
#查看
ls ; cat tar.txt

八、“&>”连接符的作用

作用:将错误信息或者普通信息都重定向输出到指定文件

注意:如果每次都是重定向到同一个文件,它的效果是覆盖原文件信息,不是内容追加! 

九、“2>&1”连接符的作用

Linux常用的三个流:0:标准输入流 stdin;1:标准输出流 stdout;2:标准错误流 stderr

< test.txt 等价于 0< test.txt ;

> test.txt等价于 1> test.txt ;

2>&1 将标准错误流重定向到标准输出流中。因为标准错误(stderr)没有缓冲区,而标准输出(stdout)有

总结

本文较为全面的介绍了Linux常用连接符 &、&&、;、| 、|| 、()、>、&>的区别和作用。

尾言

有效的掌握这些连接符的使用,可以大大提升自己的内力,让你的linux日常更上一层楼。

如果觉得还不错,赶快点赞收藏吧!

附注

相关文章:

  • 南宁高端网站建设公司/手机端竞价恶意点击
  • 网站打不开怎么做/app关键词排名优化
  • 做幼儿园网站的意义/广州各区风险区域最新动态
  • 做安防在哪个网站做广告呢/怎么推广产品
  • 学校网站建设哪家好/万网app下载
  • 做谷歌网站使用什么统计代码/seo品牌优化整站优化
  • asp.net设备实时管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
  • 『 云原生·Docker』Docker容器相关操作(二)
  • 04.好客租房_搭建自己的图床,接入swagger-ui,新增房源列表接口编写
  • Spring Security
  • MySql(35)索引的设计原则
  • 公众号网课搜题功能搭建
  • BUUCTF NewStarCTF 公开赛赛道Week4 Writeup
  • qt creator ui界面修改后运行不产生作用(本质分析)
  • 【Linux线程同步专题】四、信号量
  • Java List 扩容机制探究(ArrayList 、Vector、LinkedList)
  • asp.net在线医疗系统VS开发sqlserver数据库web结构c#编程计算机网页项目
  • 图像处理--形态学处理