对应刚接触linux命令的小伙伴们来说,这些符号一定是很困扰的下面我们一起来看这些符号区别和用法

& 表示任务在后台执行,如要在后台运行
如:

[root@localhost local]# java -jar test.jar > log.txt &
运行 test.jar程序 ,并且置于后台执行,执行的日志重定向 到当前默认的log.txt文件中

&& 表示前一条命令执行成功时,才执行后一条命令
如:

[root@localhost tmp]# ls -l && cd ..
总用量 4
-rw-r–r–. 1 root root 2252 1月 4 22:25 log.txt
-rw——-. 1 root root 0 1月 3 23:23 yum.log
[root@localhost /]#

| 表示管道,上一条命令的输出,作为下一条命令参数(输入)

如 :
[root@localhost ~]# ps -aux | grep aux
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root 53 0.0 0.0 0 0 ? S 16:33 0:00 [ata_aux]
root 2379 4.0 0.1 110224 1172 pts/2 R+ 22:55 0:00 ps -aux
root 2380 0.0 0.0 103316 868 pts/2 D+ 22:55 0:00 grep aux
查询全部进程后输出结果在进行过滤跟 进行中包含aux的进程。

|| 表示上一条命令执行失败后,才执行下一条命令,

如:

[root@localhost tmp]# als -l || cd ..
-bash: als: command not found
[root@localhost /]#

来看>符号是指:将正常信息重定向

如: find / -name “*.txt” > /tmp/log.txt
在跟目录下根据名字来查找*.tx输入的日志放置/tmp/log.txt文件中

&>可以将错误信息或者普通信息都重定向输出
---------------------

&& 和 || 属于逻辑运算符号

& 和 | 属于位操作符

--------------------------------------------------------------------------------------------------------------------

一、&&和&的区别

1.1 相同点:

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

1.2不同点:

1.2.1. &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。

例如,对于if(str != null && !str.equals(“”))表达式。

当str为null时,后面的表达式不会执行,所以不会出现NullPointerException

如果将&&改为&,则会抛出NullPointerException异常。

再比如,If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长

1.2.2.&作为为运算时,&是按位与操作,参加运算的两个数据按照二进制位进行“与”运算。

如果两个相应的二进制位都为1,那该位的结果值就是1,否则为0,即0&0=0,0&1=0,1&1=1,1&0=0。

比如:3&5并不等于8,应该按位与,00000011&00000001=00000001。

备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。

--------------------------------------------------------------------------------------------------------------------
二、|| 和 | 的区别

2.1 相同点 :当二者表示或的时候,二者都true则true,否则为false。

2.2 不同点:

2.2.1 ||  也存在短路的问题,当前者为true时,则不会判断后面的表达(与上面的&&类似)

2.2.2 |是按位或操作,参加运算的两个数据按照二进制位进行“或”运算,如果两个相应的二进制位中只要有一个为1,则该位结果就是1,即为0|1=1、1|1=1、1|0=1、0|0=0。

||是逻辑或运算符,直接看意思,a||b,若a、b中有一个为真,则a||b结果为真。

--------------------------------------------------------------------------------------------------------------------

补充下:~与!

~是一个单目运算符,用来对一个二进制位按位取反,即0变成1,1变成0,比如~00001111=11110000。

!是逻辑非运算符,我们还是直接来看他的意思,!a的意思是:若a为真,则!为假,若a为假则!a为真。
---------------------

最新文章

  1. Feature hashing相关 - 1
  2. Oracle备份数据库
  3. 使用IP欺骗Loadrunner并发测试小结
  4. 如何利用python使用libsvm
  5. HTML之学习笔记(九)表单
  6. 让自己的apk可以被别人用二维码下载
  7. 网页html结构搭建方法总结
  8. 设计模式 --> (15)职责链模式
  9. 200行代码,7个对象——让你了解ASP.NET Core框架的本质
  10. 通过DbVisualizer 工具运行DB2存储过程实现INSERT语句主键自增造数
  11. sql 随机取数
  12. TokuMX唯一索引不支持dropDups选项
  13. Andrew and Taxi CodeForces - 1100E (思维,拓扑)
  14. pickle 模块学习 常用方法
  15. redis linux安装过程回顾
  16. Visual Format Language(VFL)视图约束
  17. [Vuejs+php] MySQL数据转JSON传值到前端
  18. Python+selenium之获取文本值和下拉框选择数据
  19. 【Leetcode】【Medium】Combination Sum II
  20. 【hibernate】错误:org.hibernate.HibernateException: identifier of an instance of com.agen.entity.Monthdetail was altered from xx to xx

热门文章

  1. C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码
  2. IT该忍者神龟Oracle 树操作(select…start with…connect by…prior)
  3. java堆 (转)
  4. 用 cmake 构建Qt工程(对比qmake进行学习)
  5. IIS Express 启用目录浏览
  6. JS 小鸟飞
  7. windows下捕获dump之Google breakpad_client
  8. ARTS 12.24 - 12.28
  9. 零元学Expression Blend 4 Chapter 22 以实作案例学习Frame及HyperlinkButton
  10. enum 枚举一般用法 dotnet