&&

command1 && command2 [&& command3 ...]
    只有在&&左边的命令返回真时,&&右边的命令才会被执行下去
    只要有一个命令返回假,后面的命令就不会被执行
    想:所有&&连接的条件,只要发现有一个假的话,就不必要执行下去了,因为最终结果肯定是假。
    注:命令返回值 $? == 1表示假,命令返回值 $? == 0 表示真

||

command1 || command2 [|| command3 ...]
    只有左||左边返回假的时候,||右边的命令才会执行
    只要有一个命令返回真,后面的命令就不会被执行
    想:所有||连接的条件就是一个或功能,有一个真那就是真

&

&放在启动参数后面表示设置此进程为后台进程,与&&完全不一样的意义
    command1 &
    默认情况下,进程是前台进程,这时就把Shell给占据了,
    我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的

|

人称管道符
    上一条命令的输出,作为下一条命令参数
    command1 | command2
    # cat /etc/passwd | grep /bin/bash | wc -l
    第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,
    grep命令找出含有“/bin /bash”的所有行;
    第二个管道将grep的输出送给wc命令,
    wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash

;

command1 ; command2
    ;将命令分隔,每个命令都会从左到右顺序执行。彼此之间没有关系,所有命令都会执行到

> <

> 和 < 分别代表重定向的方向,是从左到右还是从右到左

>> <<

>> 和 << 代表追加,也就是不改变重定向目标文件原有的内容,追加在后面

&>
 
    /dev/null 表示空设备文件;
    0 表示stdin标准输入;
    1 表示stdout标准输出;
    2 表示stderr标准错误。
    &>  比 >多了一个字符 ,当我们想用>重定向到一个文件时,如果左边的是标准输出,那就能成功。
    但如果左边是一个报错,那我们就会在屏幕上看到报错信息,而文件中并没有东西输出。
    但如果前面加上&,就会将报错转化为标准输出重定向到文件中而不会在屏幕输出

cd -

cd - 
    返回切换前的目录

2>&1

/dev/null 表示空设备文件;
    可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
    0 表示stdin标准输入;
    1 表示stdout标准输出;
    2 表示stderr标准错误。    
    2>&1 的意思就是将标准错误重定向到标准输出
    eq:解读 ls ** >out.txt 2>&1
        上面相当于 ls ** 1>out.txt 2>&1
        执行 ls ** 如果产生标准输出(1),那么结果会到out.txt中去;如果产生错误输出(2),那么结果会到标准输出(1)中去,
        因为标准输出(1)是到out.txt中去的,所以错误输出(2)也会到out.txt 中去
    这么说来 ** &>/dev/null     应该等价于 ** >/dev/null 2>&1

$0

当前脚本的文件名

$n

传递给脚本或函数的参数。n 可以是1、2、3...任何一个参数,数字是几就表示第几个参数

$#

传递给脚本或函数的参数的个数

$*

传递给脚本或函数的所有参数

$@

传递给脚本或函数的所有参数。
    被双引号包含时会与$*有所不同:"$*" 会将所有的参数作为一个整体,
    以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数

$?

上个命令的退出状态或是函数的返回值

$$

当前Shell进程的ID。对于Shell脚本来说就是这些脚本所在的进程ID

[] [[]]

[] 是 test 命令的简写 。[command] 等价于 test command 
        必须在左括号的右侧和右括号的左侧各加一个空格,否则会报错
        大于符号或小于符号必须要转义,否则会被理解成重定向
    [[]]是[ ]的针对数学比较表达式和字符串表达式的加强版

最新文章

  1. MySQL 表分区 报错:Table has no partition for value XXX
  2. js php json
  3. [stm32] STM32 Interrupts and events 系统了解(EXTI)及槽型光电开关tp850电路研究
  4. WordPress建站指南
  5. Data.gov.uk电子政务云,牛津大学NIE金融大数据实验室王宁:数据治理的现状和实践
  6. Linux 中使用 KVM
  7. EF 5.0 帮助类 增删改查
  8. Spring Mobile是如何判断访问设备的类型的
  9. 必会SQL练习题
  10. net core体系-web应用程序-4net core2.0大白话带你入门-4asp.net core配置项目访问地址
  11. GDC2017 把“现实的天空”在游戏内再现【Forza Horizon 3】的天空表现
  12. js 去掉花括号
  13. java中4种修饰符访问权限的区别
  14. 深入理解JAVA虚拟机阅读笔记5——Java内存模型与线程
  15. leetcode weekly contest 43
  16. heartbeat 心跳技术
  17. ref 和 out 的用法和区别以及params用法
  18. Choose which tree,form view in many2one
  19. 高性能Web开发系列
  20. hbase-0.20.6/bin/hbase-daemon.sh: Permission denied

热门文章

  1. 基于C#简单实现多个word文件和Excel文件的全局字符串替换
  2. WinForm界面设计优化过程
  3. 【Angular 5】数据绑定、事件绑定和双向绑定
  4. Ubuntu 18.04 下 Redis 环境搭建
  5. 初识HT for web
  6. 1ci
  7. 【转载】Excel 三维地图入门
  8. git push后出错
  9. aspectj编程简介
  10. 关于FFmpeg工具的使用总结