首页 > 代码库 > shell中的特殊符号

shell中的特殊符号

 

;     

分号,用来分割多个命令,各条命令按顺序执行,但多个命令之间没有任何逻辑上的关系,仅按顺序执行(也就是说即使前面的命令执行失败也不影响后面命令的执行)

[root@root ~]# ls /tmp ; ls /root ; ls /home     //所有命令按顺序执行

sambadir

yum.log

yum_save_tx-2016-04-06-17-05UciXqG.yumtx

yum_save_tx-2016-04-06-17-06Bgwk_b.yumtx

yum_save_tx-2016-04-06-17-19hA4jcb.yumtx

yum_save_tx-2016-04-27-03-28Kj11ji.yumtx

123.txt  12.txt  1.txt  test.txt

pzk  use1

  

&&

用来分割多个命令,各条命令按顺序执行,但只有当前一个命令执行成功后才会执行&&后面的命令

[root@root ~]# ls test.txt && cat test.txt    //当ls执行成功才执行cat

test.txt

HelloWorld

   

||

与&&相反,只有当前一个命令执行失败后才会执行||后面的命令,如果前一个命令执行成功则后面的命令不会执行

[root@root ~]# ls 888 || ls test.txt   //当ls 888执行失败时才执行ls test

ls: 无法访问888: 没有那个文件或目录

test.txt
[root@root ~]# ls 1.txt || ls 2.txt    //前一个命令执行成功则后面命令不执行

1.txt

  

#

注释符

[root@root ~]# #ls 1.txt    //井号起注释作用,回车后不会执行后面的命令

[root@root ~]#

  

\

将特殊字符变成一般字符

[root@root ~]# touch #.txt      //不能直接创建#.txt文件,因为井号意味着注释

touch: 缺少了文件操作数

请尝试执行"touch --help"来获取更多信息。

[root@root ~]# touch \#.txt     //加上反斜杠则可以把井号的作用去掉,创建文件

[root@root ~]# ls \#.txt        //查看的时候也要加反斜杠

#.txt

   

通配符,匹配所有字符

[root@root ~]# ls *.txt      //匹配所有后缀为.txt的文件

123.txt  12.txt  1.txt

   

匹配任意一个字符

[root@root ~]# ls ?.txt     //匹配任意一个字符

1.txt

 

 

;     

连续指令,一般用于两条命令之间,同时执行两条命令

技术分享

 

~    

表示用户的家目录

[root@root /]# cd ~/tmp/        //进入家目录下的/tmp目录

[root@root tmp]# ls ~/1.txt     //查看用户家目录下的1.txt文件     

1.txt 

   

&   

放在执行命令的最后端,即表示将该执行命令放在后台中执行,跟快捷键Ctrl + Z的用法是一样的。(jobs查看暂停的进程,fg num恢复进程在前台执行,bg num恢复进程在后台执行,kill %num杀死进程)

[root@root ~]# firefox &    //在后台运行火狐浏览器,不影响当前shell的使用

[1] 2719

   

``    

反引号,表示把反引号中命令的输出结果赋值给某个变量

[root@root ~]# a=`ls`       //将ls的结果赋值给变量a

[root@root ~]# echo $a      //查看变量a的值

1.txt 2.txt 3.txt 4.txt

   

‘‘    

单引号,当一个变量加了单引号就不再是变量,仅当一般字符处理

技术分享

 

""  

双引号,用来赋值一个长变量(如果不加只能赋值一个短变量)

技术分享

 

{ }

花括号,用来匹配一组用逗号分隔的字符串中的任一个

[root@root ~]# touch {1,2,3,4,5}.txt    //匹配一组用逗号分隔的字符串中的任一个

[root@root ~]# ls

1.txt  2.txt  3.txt  4.txt  5.txt
[root@root ~]# mkdir /tmp/{dir1,dir2,dir3,dir4}

[root@root ~]# ls /tmp/

dir1 dir2 dir3 dir4

 

如果是一个连续的序列,可以用“..”来分隔:

[root@root ~]# touch {1..9}.txt       

[root@root ~]# ls

1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
[root@root ~]# echo {0..10..2}     //隔两个来显示

0 2 4 6 8 10

  

$

$符号作为变量的前缀,当我们要获得变量的值或使用这个变量的时候,就需加上$符号

[root@root ~]# echo $HOSTNAME   //获得HOSTNAME的值

root

   

[ ]

字符范围,用作正则表达式的一部分,描述一个匹配的字符范围。

[root@root ~]# ls [123].txt     //匹配一个字符

1.txt  2.txt  3.txt

 

[root@root ~]# ls [0-9].txt     //也可以匹配范围内的字符

1.txt  2.txt  3.txt  4.txt

 

[root@root ~]# ls [1-9a-zA-Z].txt

1.txt  2.txt  3.txt  4.txt  a.txt

 

shell中的特殊符号