shell中的特殊符号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中的特殊符号相关的知识,希望对你有一定的参考价值。
;
分号,用来分割多个命令,各条命令按顺序执行,但多个命令之间没有任何逻辑上的关系,仅按顺序执行(也就是说即使前面的命令执行失败也不影响后面命令的执行)
[[email protected] ~]# 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
&&
用来分割多个命令,各条命令按顺序执行,但只有当前一个命令执行成功后才会执行&&后面的命令
[[email protected] ~]# ls test.txt && cat test.txt //当ls执行成功才执行cat
test.txt
HelloWorld
||
与&&相反,只有当前一个命令执行失败后才会执行||后面的命令,如果前一个命令执行成功则后面的命令不会执行
[[email protected] ~]# ls 888 || ls test.txt //当ls 888执行失败时才执行ls test
ls: 无法访问888: 没有那个文件或目录
test.txt
[[email protected] ~]# ls 1.txt || ls 2.txt //前一个命令执行成功则后面命令不执行
1.txt
#
注释符
[[email protected] ~]# #ls 1.txt //井号起注释作用,回车后不会执行后面的命令
[[email protected] ~]#
\\
将特殊字符变成一般字符
[[email protected] ~]# touch #.txt //不能直接创建#.txt文件,因为井号意味着注释
touch: 缺少了文件操作数
请尝试执行"touch --help"来获取更多信息。
[[email protected] ~]# touch \\#.txt //加上反斜杠则可以把井号的作用去掉,创建文件
[[email protected] ~]# ls \\#.txt //查看的时候也要加反斜杠
#.txt
*
通配符,匹配所有字符
[[email protected] ~]# ls *.txt //匹配所有后缀为.txt的文件
123.txt 12.txt 1.txt
?
匹配任意一个字符
[[email protected] ~]# ls ?.txt //匹配任意一个字符
1.txt
;
连续指令,一般用于两条命令之间,同时执行两条命令
~
表示用户的家目录
[[email protected] /]# cd ~/tmp/ //进入家目录下的/tmp目录
[[email protected] tmp]# ls ~/1.txt //查看用户家目录下的1.txt文件
1.txt
&
放在执行命令的最后端,即表示将该执行命令放在后台中执行,跟快捷键Ctrl + Z的用法是一样的。(jobs查看暂停的进程,fg num恢复进程在前台执行,bg num恢复进程在后台执行,kill %num杀死进程)
[[email protected] ~]# firefox & //在后台运行火狐浏览器,不影响当前shell的使用
[1] 2719
``
反引号,表示把反引号中命令的输出结果赋值给某个变量
[[email protected] ~]# a=`ls` //将ls的结果赋值给变量a
[[email protected] ~]# echo $a //查看变量a的值
1.txt 2.txt 3.txt 4.txt
‘‘
单引号,当一个变量加了单引号就不再是变量,仅当一般字符处理
""
双引号,用来赋值一个长变量(如果不加只能赋值一个短变量)
{ }
花括号,用来匹配一组用逗号分隔的字符串中的任一个
[[email protected] ~]# touch {1,2,3,4,5}.txt //匹配一组用逗号分隔的字符串中的任一个
[[email protected] ~]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
[[email protected] ~]# mkdir /tmp/{dir1,dir2,dir3,dir4} [[email protected] ~]# ls /tmp/ dir1 dir2 dir3 dir4
如果是一个连续的序列,可以用“..”来分隔:
[[email protected] ~]# touch {1..9}.txt [[email protected] ~]# ls 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
[[email protected] ~]# echo {0..10..2} //隔两个来显示 0 2 4 6 8 10
$
$符号作为变量的前缀,当我们要获得变量的值或使用这个变量的时候,就需加上$符号
[[email protected] ~]# echo $HOSTNAME //获得HOSTNAME的值 root
[ ]
字符范围,用作正则表达式的一部分,描述一个匹配的字符范围。
[[email protected] ~]# ls [123].txt //匹配一个字符
1.txt 2.txt 3.txt
[[email protected] ~]# ls [0-9].txt //也可以匹配范围内的字符
1.txt 2.txt 3.txt 4.txt
[[email protected] ~]# ls [1-9a-zA-Z].txt
1.txt 2.txt 3.txt 4.txt a.txt
以上是关于shell中的特殊符号的主要内容,如果未能解决你的问题,请参考以下文章