在linux中,&和&&, |和|| ,&> 与 >的区别
对应刚接触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为真。
---------------------
在linux中,&和&&, |和|| ,&> 与 >的区别的更多相关文章
- linux中 su 与 su - 的区别
linux中 su 与 su - 的区别 su只是切换了用户身份,shell环境仍然是切换前用户的shell环境 su -是用户和shell环境一起切换成. 备注:1.切换了shell环境会相应的用户 ...
- linux中ll和du的区别
首先,明确一个概念,linux中目录其实也是一个文件,它存储了一张表,该表就是该目录文件下,所有文件名和inode的映射关系. 其中inode和数据块block的关系http://c.bianchen ...
- Linux中exit与_exit的区别
在exit,_exit的区别 - exit()与_exit()函数的区别(Linux系统中)2012-03-20 15:19:53 分类: LINUX 注:exit()就是退出,传入的参数是程序退出时 ...
- Linux中Buffer和Cache的区别
1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚 ...
- linux中bashrc与profile的区别
bashrc与profile的区别 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell. ...
- linux中截取字段与#、$区别
1.Linux shell 截取字符变量的前8位 实现方法有如下几种: expr substr “$a” 1 8 echo $a|awk ‘{print substr(,1,8)}’ echo $a| ...
- Linux中文件与目录的区别
普通文件:存储普通数据,一般就是字符串. 目录文件:存储了一张表,该表就是该目录文件下,所有文件名和索引(inode)的映射关系. 通常父目录会存储有它目录下文件的索引映射,说白了就是一张对应关系的索 ...
- linux中ctime,mtime,atime的区别
st_atime Time when file data was last accessed. Changed by the following functions: ...
- linux中du与df的区别和联系
1,两者区别 du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df, ...
- Linux中chown和chmod的区别和用法(转)
chmod修改第一列内容,chown修改第3.4列内容: chown用法: 用来更改某个目录或文件的用户名和用户组. chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径) 例1:cho ...
随机推荐
- javascript自定义事件讲解
自定义事件 什么是自定义事件? 自定义事件:这要是跟函数有关系,就是让函数能够具备事件的某些特性 为什么要使用自定义事件? 有利于多人协作开发代码,一同开发不冲突 如何去挂载自定义事件与事件函数? 1 ...
- .net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能
原文:.net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能 接上篇,上篇已经学习了界面的各种功能以及各种配置,这篇准备学习下代码控制许可证. ...
- 关于ajax入门案例
$.ajax方法 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他ht ...
- Node.js 中开源库探秘 object-assign | 全栈之路
这篇内容呢,讲的是另一个技术栈 Node.js 系列,虽然和咱们这里的主题不是特别吻合,不过嘛,汲取多样性的养分是快速成长的好方法,也是现在流行的全栈工程师的必经之路. 由于这篇内容涉及的是 Node ...
- sql server 定时备份数据库
CREATE PROCEDURE [dbo].[SP_DBBackup_EveryNight_Local] @cycle INT, ---保存周期 @IsLocal INT, ---是否为本地 0表示 ...
- 如何将svg转换为xaml
原文:如何将svg转换为xaml 1 下载Inkscape 2 用Inkscape打开svg,另存为xaml 注意:复杂的svg图转换完会出现类似下面的xaml,wpf/silverlight是无法解 ...
- Win8 Metro(C#)数字图像处理--2.39二值图像投影
原文:Win8 Metro(C#)数字图像处理--2.39二值图像投影 [函数名称] 二值图像投影 ImageProjection(WriteableBitmap src) ...
- 海康sdk
package com.hikvision.artemis.sdk.util; import java.util.Collections; import java.util.Iterator; imp ...
- Easy Compression Library(代替TFileStream, TMemoryStream and TStream)
Easy Compression Library is a very easy-to-use replacement of TFileStream, TMemoryStream and other T ...
- Unity 入門 - 延遲解析
本文大纲: 小引 共享的范例代码 使用 Lazy<T> 使用自动工厂 注入自定义工厂 小引 当我们说「解析某个型别/组件」时,意思通常是呼叫某类别的建构函式,以建立其实例(instance ...