Linux命令中特殊符号1.docx
- 文档编号:815394
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:12
- 大小:25.66KB
Linux命令中特殊符号1.docx
《Linux命令中特殊符号1.docx》由会员分享,可在线阅读,更多相关《Linux命令中特殊符号1.docx(12页珍藏版)》请在冰豆网上搜索。
Linux命令中特殊符号1
Linux命令中特殊符号
在shell中常用的特殊符号罗列如下:
#;;;.,/\'string'|!
$${}$?
$$$*"string"***?
:
^$#$@`command`{}[][[]]()(())||&&{xx,yy,zz,...}~~+~-&\<...\> +-%===!
=
#井号(comments)
这几乎是个满场都有的符号,除了先前已经提过的"第一行"
#!
/bin/bash
井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。
#Thislineiscomments.
由于这个特性,当临时不想执行某行指令时,只需在该行开头加上#就行了。
这常用在撰写过程中。
如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。
[root@RHEL6scripts]# echo "a=$a" #a= 0
a=
[root@RHEL6scripts]# #echo "a=$a" #a= 0
[root@RHEL6scripts]#
~帐户的home目录
算是个常见的符号,代表使用者的home目录:
cd~;也可以直接在符号后加上某帐户的名称:
cd~user或者当成是路径的一部份:
~/bin
~+当前的工作目录,这个符号代表当前的工作目录,她和内建指令pwd的作用是相同的。
#echo~+/var/log
~-上次的工作目录,这个符号代表上次的工作目录。
#echo~-/etc/httpd/logs
;分号(Commandseparator)
1、在shell中,担任"连续指令"功能的符号就是"分号"。
例子:
cd~/backup;mkdirstartup;cp~/.*startup/.
在命令与命令中间利用分号(;)来隔开,分号前的命令执行完成(无论成功与否)后就会立刻接着执行后面的命令
;;连续分号(Terminator)
专用在case的选项,担任Terminator的角色。
case "$fop"
inhelp)
echo "Usage:
Command-help-versionfilename"
;;
version)
echo "version0.1"
;;
esac
.点号(dot,就是“点”)
1、在shell中,使用者应该都清楚,一个dot代表当前目录,两个dot代表上层目录。
CDPATH=.:
~:
/home:
/home/web:
/var:
/usr/local
在上行CDPATH的设定中,等号后的dot代表的就是当前目录的意思。
2、如果档案名称以dot开头,该档案就属特殊档案,用ls指令必须加上-a选项才会显示。
3、在regularexpression中,一个dot代表一定有一个任意字符,空格字符也是一个字符。
'string'单引号(singlequote)
被单引号用括住的内容,将被视为单一字串。
在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。
heyyou=homeecho'$heyyou'#Weget$heyyou
"string"双引号(doublequote)
被双引号用括住的内容,将被视为单一字串。
它防止通配符扩展,但允许变量扩展。
这点与单引数的处理方式不同。
heyyou=homeecho"$heyyou"#Wegethome
`command`倒引号/反单引号(backticks)命令替换
在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?
答案是不会执行。
要处理这种情况,我们得用倒单引号来做。
1.[root@awakescripts]#fdv=`date+%F`
2.[root@awakescripts]#echo"Today$fdv"
3.Today2015-06-19
4.[root@awakescripts]#
在倒引号内的date+%F会被视为指令,执行的结果会带入fdv变量中。
fdv=`date+%F`还有另外一种写法就是fdv=$(date+%F),两个命令是等价的,只是反单引号(``)容易被看穿('')单引号而已。
逗点(comma,标点中的逗号)
这个符号常运用在运算当中当做"区隔"用途。
如下例
#!
/bin/bashlet"t1=((a=5+3,b=7-1,c=15/3))"echo"t1=$t1,a=$a,b=$b"
/斜线(forwardslash)
在路径表示时,代表目录。
cd/etc/rc.d
cd../..
cd/
通常单一的/代表root根目录的意思;在四则运算中,代表除法的符号。
let"num1=((a=10/2,b=25/5))"
\倒斜线/反斜线
在交互模式下的escape字元,有几个作用;放在指令前,有取消aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。
#typermrmisaliasedto`rm-i'#\rm./*.log
上例,我在rm指令前加上escape字元,作用是暂时取消别名的功能,将rm指令还原。
#bkdir=/home#echo"Backupdir,\$bkdir=$bkdir"Backupdir,$bkdir=/home
上例echo内的\$bkdir,escape将$变数的功能取消了,因此,会输出$bkdir,而第二个$bkdir则会输出变数的内容/home。
|管道(pipeline)
pipeline是UNIX系统,基础且重要的观念。
连结上个指令的标准输出,做为下个指令的标准输入。
who|wc-l
善用这个观念,对精简script有相当的帮助。
!
惊叹号(negateorreverse)逻辑运算意义上的非(not)的意思
1、通常它代表反逻辑的作用,譬如条件侦测中,用!
=来代表"不等于"
if [ "$?
" !
= 0 ]then
echo "Executeserror"
exit1
fi
2、在规则表达式中她担任"反逻辑"的角色
lsa[!
0-9]
上例,代表显示除了a0,a1....a9这几个文件的其他文件。
3、在history命令中“!
”号的用法
[root@RHEL6 ~]#history
......
1036echo$$
1037ll
1038ll | grep '^d'
1039ll | grep "^d"
1040history
1041ll | grep '^d'
1042history
[root@RHEL6 ~]# !
1038 //执行第1038条命令
ll | grep '^d'
drwxr-xr-x. 2rootroot4096Jun1215:
23bin
drwxr-xr-x. 2rootroot4096Jun1615:
33scripts
drwxr-xr-x. 7rootroot4096Nov212014vmware-tools-distrib
[root@RHEL6 ~]# !
!
//执行上一个命令也就是刚刚的!
1038
ll | grep '^d'
drwxr-xr-x. 2rootroot4096Jun1215:
23bin
drwxr-xr-x. 2rootroot4096Jun1615:
33scripts
drwxr-xr-x. 7rootroot4096Nov212014vmware-tools-distrib
[root@RHEL6 ~]# !
echo //执行最近一echo为开头的命令,也就是1036那条命令
echo$$
4316
[root@RHEL6 ~]#
!
$的用法
mkdir/var/www/html/upload
chown -Rapache !
$#这时的!
$表示上一条命令 mkdir/var/www/html/upload,也就是chown将/var/www/html/upload的所有者权限分配给apache这个用户
:
冒号
在bash中,这是一个内建指令:
"什么事都不干",但返回状态值0。
:
echo$?
#回应为0
:
>f.
上面这一行,相当于cat/dev/null>f.
。
不仅写法简短了,而且执行效率也好上许多。
有时,也会出现以下这类的用法
:
${HOSTNAME?
}${USER?
}${MAIL?
}
这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。
像这种检查如果使用类似test或if这类的做法,基本上也可以处理,但都比不上上例的简洁与效率。
除了上述之外,还有一个地方必须使用冒号
PATH=$PATH:
$HOME/fbin:
$HOME/fperl:
/usr/local/mozilla
在使用者自己的HOME目录下的.bash_profile或任何功能相似的档案中,设定关于"路径"的场合中,我们都使用冒号,来做区隔。
*星号(wildcard)
相当常用的符号。
1、在文件名扩展(Filenameexpansion)上,她用来代表0到无穷多个任意字符。
[root@RHEL6 ~]# lsa*
aaaanaconda-ks.cfg
[root@RHEL6 ~]#
2、在正则表达式(RegularExpressions)中,*代表重复零个到无穷多个的前一个字符,如:
grep-n'ess*file.txt,则可能会匹配es、ess、esss等等。
正则表达式中的0到无穷多个字符使用的是“.*”表示。
3、在运算时,它则代表"乘法"。
let"fmult=2*3"
除了内建指令let,还有一个关于运算的指令expr,星号在这里也担任"乘法"的角色。
不过在使用上得小心,他的前面必须加上escape字元。
**次方运算
两个星号在运算时代表"次方"的意思。
let"sus=2**3"echo"sus=$sus"#sus=8
$及$$钱号(dollarsign)
1、使用变量的前导符,即变量之前需要加的变量替代值
变量替换(VariableSubstitution)的代表符号。
1.[root@RHEL6 ~]# vrs=123
2.[root@RHEL6 ~]# echo "vrs=$vrs"
3.vrs = 123
4.[root@RHEL6 ~]#
2、在RegularExpressions里被定义为"行"的最末端(end-of-line)。
这个常用在grep、sed、awk以及vim(vi)当中。
1.[root@RHEL6 ~]# ll | grep "txt$" //列出行末是txt结尾的行
2.-rw-r--r--. 1rootroot1700May2110:
501.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 命令 特殊符号
![提示](https://static.bdocx.com/images/bang_tan.gif)