1、管道
管道就是将左边命令的执行结果,作为标注输入到右边的命令,管道两边的命令在当前 shell 的两个子进程中执行。
ps aux | grep bash
就是一个管道用法,通过|
分隔左右两边命令,ps aux
表示显示当前系统所有进程
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.5 1.6 178568 13460 ? Ss 22:53 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root 2 0.0 0.0 0 0 ? S 22:53 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 22:53 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 22:53 0:00 [rcu_par_gp]
root 5 0.1 0.0 0 0 ? I 22:53 0:00 [kworker/0:0-events_power_efficient]
root 6 0.0 0.0 0 0 ? I< 22:53 0:00 [kworker/0:0H-kblockd]
root 7 0.0 0.0 0 0 ? R 22:53 0:00 [kworker/u256:0-events_unbound]
root 8 0.0 0.0 0 0 ? I< 22:53 0:00 [mm_percpu_wq]
root 9 0.0 0.0 0 0 ? S 22:53 0:00 [ksoftirqd/0]
省略中间部分......
root 1792 0.0 1.1 93040 9456 ? Ss 22:55 0:00 /usr/lib/systemd/systemd --user
root 1796 0.0 0.5 238728 4736 ? S 22:55 0:00 (sd-pam)
root 1802 0.0 0.6 159416 5348 ? S 22:55 0:00 sshd: root@pts/0
root 1803 0.0 0.5 26360 4760 pts/0 Ss 22:55 0:00 -bash
root 1826 0.0 0.0 0 0 ? I 22:58 0:00 [kworker/0:1-mm_percpu_wq]
root 1838 0.0 0.4 57380 3772 pts/0 R+ 23:02 0:00 ps aux
grep bash
表示从左边获取到的所有进程结果中查看bash进程
[root@localhost ~]# ps aux | grep bash
root 1803 0.0 0.5 26360 4756 pts/0 Ss 22:55 0:00 -bash
root 1825 0.0 0.1 12320 1096 pts/0 R+ 22:57 0:00 grep --color=auto bash
2、引用
2.1、双引号
双引号是弱引用,里面的内容支持参数引用。定义一个变量c
,在双引号中引用,可以输出变量$c
中的值
[root@localhost ~]# c="zhangsan"
[root@localhost ~]# echo "我是$c"
我是zhangsan
2.2、单引号
单引号是强引用,里面所有内容都被当成字符串,输出的只是变量符号本身$c
[root@localhost ~]# echo '我是$c'
我是$c
2.3、花括号
花括号可以做扩展,使用命令mkdir ./{a,b,c}dir
,可以同时创建3个目录,abc后面拼接了相同的dir
字符
[root@localhost shell]# mkdir ./{a,b,c}dir
[root@localhost shell]# ll
总用量 12
drwxr-xr-x. 2 root root 6 6月 1 23:17 adir
drwxr-xr-x. 2 root root 6 6月 1 23:17 bdir
drwxr-xr-x. 2 root root 6 6月 1 23:17 cdir
2.4、删除引用
使用命令unset + 变量名
即可
[root@localhost shell]# echo $c
zhangsan
[root@localhost shell]# unset c
[root@localhost shell]# echo $c
[root@localhost shell]#
3、命令替换
命令替换允许我们将 shell 命令的输出赋值给变量,方便使用。
3.1、反引号方式
定义一个变量a
,值是反引号包裹的查看命令ls -a
,再次引用时会执行该命令
[root@localhost shell]# a=`ls -a`
[root@localhost shell]# echo $a
. .. 1.txt adir bdir cdir test01.sh test02.sh test03.sh tmp
3.2、$()方式
定义一个变量b
,值是$()
包裹的查看命令ls -a
,再次引用时会执行该命令
[root@localhost shell]# b=$(ls -a)
[root@localhost shell]# echo $b
. .. 1.txt adir bdir cdir test01.sh test02.sh test03.sh tmp
4、逻辑判断(&&、||)
4.1、逻辑与
格式:command1 && command2,当第一个条件为假,第二个条件不用判断,结果为假
当前目录中有tmp目录
,第一个条件为真,所以会执行第二个打印条件
[root@localhost shell]# test -d /tmp && echo "tmp目录存在"
tmp目录存在
4.2、逻辑或
格式:command1 || command2,第一个条件为真,第二个条件不用判断,结果为真
tmp目录
下没有11目录
,第一个条件为假,所以会执行第二个打印条件
[root@localhost shell]# test -d /tmp/11 || echo "11目录不存在"
11目录不存在