Bash功能与使用技巧(3)

2.1.1 命令序列
在Linux中我们可以使用控制字符(;、&&、||、&)来控制命令的执行方式。其中[&]控制符使得命令开启一个子Shelll并在后台执行;使用[;]控制字符可以把多个命令组合,但多个命令之间没有任何逻辑上的关系,仅按循序执行;使用[&&]控制字符也可以将多个命令组合,但仅当前一个命令执行成功后才会执行[&&]控制符后面的命令;[||]控制字符的作用与[&&]刚好相反,仅当前一个命令执行失败才会执行[||]控制符后面的命令。下面通过实例演示。
1.火狐浏览器通过前端启动,使得当前Shell将暂时无法使用:
[root@CentOS6 ~]# firefox
2.后台运行浏览器,不影响当前Shell的使用:
[root@centos6 ~]# firefox &
3.所有命令按顺序执行(不管前面的命令是否成功,后面的命令一定正常执行):
[root@centos6 ~]# ls /tmp ; ls /root ; ls /home
4.如果某个文件存在则显示该文件内容,否则报错(仅当ls执行成功才会执行cat):
[root@centos6 ~]# ls test.txt && cat test.txt
5.如果有gedit编辑器则打开该程序,否则打开vim编辑器:
[root@centos6 ~]# gedit || vim
6.如果id tom执行成功则说明用户存在屏幕将显示Hi,tom,否则显示No such user:
[root@centos6 ~]# id tom &>/dev/null && echo “Hi,tom” || echo “No such user”
实例5首先通过&>重定向符将id命令的所有输出屏蔽,让后使用&&与||来判断id命令是否执行成功,成功就显示问候语否则显示没有该用户。
2.1.2 作业控制
Bash环境中通过命令开启进程的时候使用&符可以使得该进程进入后台执行,或者一个命令执行后使用Ctrl+z快捷键可以将该进程放入后台并暂停执行,以后随时使用jobs命令可以查看这些后台进程,并且会为每个这样的进程分配一个编号,通过fg <编号>的形式可以将这些后台进程再次调回前台执行。
[root@centos6 ~]# firefox &
[root@centos6 ~]# jobs
[1]+ Running firefox &
[root@centos6 ~]# fg 1
2.1.3 花括号{}的使用
通过括号扩展可以生产命令行或脚本需要的字串,括号中可以包含连续的序列或使用逗号分割的多个项目,连续的序列包括一个起点与一个终点并使用..分割。接下来看看具体的语法格式案例:

[root@centos6 ~]# echo {a,b,c}

a b c

[root@centos6 ~]# echo user{1,5,8}

user1 user5 user8

[root@centos6 ~]# echo {0..10}

0 1 2 3 4 5 6 7 8 9 10

[root@centos6 ~]# echo {0..10..2}

0 2 4 6 8 10

[root@centos6 ~]# echo a{2..-1}

a2 a1 a0 a-1

[root@centos6 ~]# mkdir /tmp/{dir1,dir2,dir3}

[root@centos6 ~]# ls -ld /tmp/dir{1,2,3}

[root@centos6 ~]# chmod 777 /tmp/dir{1,2}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/40d460adf3175851066d586af283c7e7.html