linux的特殊字符:1、“开头,代表这句话是注释。
#!/bin/bash常出现在命令之前,或者命令之后,后面是注释文字,不会被执行
bkdir=/home#echo"Backupdir,$bkdir=$bkdir"Backupdir,$bkdir=/home
上例echo内的\$bkdir,escape将$变数的功能取消了,因此,会输出$bkdir,而第二个$bkdir则会输出变数的内容/home。
|管道(pipeline)
pipeline是UNIX系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。
who|wc-l
善用这个观念,对精简script(脚本)有相当的帮助
!感叹号(negateorreverse)
通常代表反逻辑的作用,比如条件侦测中用,!=来代表"不等于"
lsf[!1-9]代表显示除了f0,f1....f9这几个文件的其他文件
在bash中,这是一个内建指令:"什么事都不干",但返回状态值0
:>f.$$
这句话可以重写为:上述语句的效果等同于将空数据输出重定向到文件f.$$。不仅写法简短了,而且执行效率也好上许多。
有时,也会出现以下这类的用法
:${HOSTNAME?}${USER?}${MAIL?}
该行的功能是检查这些环境变量是否已设置,没有设置的环境变量将显示错误消息到标准错误输出。使用类似test或if这样的方法进行此类检查基本上也可行,但是无法与上一个例子的简洁和效率相比。
除了上述之外,还有一个地方必须使用冒号
PATH=$PATH:$HOME/fbin:$HOME/fperl:/usr/local/mozilla
在使用者自己的HOME目录下的.bash_profile或任何功能相似的档案中,设定关于"路径"的场合中,我们都使用冒号,来做区隔。
?问号(wildcard)
在文件名扩展(Filenameexpansion)上扮演的角色是匹配一个任意的字元,但不包含null字元。
lsa*aa1access_log
在运算时,它则代表"乘法"。
let"fmult=2*3"
除了内建指令let,还有一个关于运算的指令expr,星号在这里也担任"乘法"的角色。不过在使用上得小心,他的前面必须加上escape字元。
**次方运算
两个星号在运算时代表"次方"的意思。
let"sus=2**3"echo"sus=$sus"vrs=123
在RegularExpressions里被定义为"行"的最末端(end-of-line)。这个常被用于grep、sed、awk以及vim(vi)之中。
${}变量的正规表达式
bash对${}定义了不少用法。以下是取自线上说明的表列
${parameter:-word}${parameter:=word}${parameter:?word}${parameter:+word}${parameter:offset}${parameter:offset:length}${!prefix*}${word}${parameterword}${parameter%word}${parameter%%word}${parameter/pattern/string}${parameter//pattern/string}
$*
$*引用script的执行引用变量,引用参数的算法与一般指令相同,指令本身为0,其后为1,然后依此类推。引用变量的代表方式如下:
$0,$1,$2,$3,$4,$5,$6,$7,$8,$9,,.....
个位数的,可直接使用数字,但两位数以上,则必须使用{}符号来括住
$*则是代表所有引用变量的符号。使用时,得视情况加上双引号。
echo"$*"
还有一个与$*具有相同作用的符号,但效用与处理方式略为不同的符号
$@与$*具有相同作用的符号,不过她们两者有一个不同点。
符号$*将所有的引用变量视为一个整体。
但符号$@则仍旧保留每个引用变量的区段观念。
这也是与引用变量相关的符号,她的作用是告诉你,引用变量的总数量是多少。
echo"$catftmp-01#!/bin/basha=fsh(a=incg;echo-e"
")echo$a!/bin/bash((a=10))echo-e"initalvalue,a=$a
"((a++))echo"aftera++,a=$a"
{}大括号(Blockofcode)
有时候script当中会出现,大括号中会夹着一段或几段以"分号"做结尾的指令或变数设定。
!/bin/basha=fsh{a=inbc;echo-e"
"}echo$a!/bin/bashreadakif[[$ak>5||$ak<9]]thenecho$akfi
||逻辑符号
这个会时常看到,代表or逻辑的符号
&&逻辑符号
&后台工作
单一个&符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。
tarcvfzdata.tar.gzdata>/dev/null&
<…>单字边界
在规则表达式中,这组符号被定义为表示"边界"的意义。譬如,当我们想找寻the这个单字时,如果我们用
greptheFileA
你会发现,像there这样的单个单词,也会被视为匹配的单词。因为the正巧是there的一部份。为了避免这种情况发生,我们必须使用边界符号
grep'\'FileA
加号(plus)
在运算式中,她用来表示"加法"。expr1+2+3
此外在规则表达式中,用来表示"很多个"的前面字元的意思。
这个符号在使用时,前面必须加上escape字元。
减号(dash)
在运算式中,她用来表示"减法"。
此外也是系统指令的选项符号。
在GNU指令中,如果单独使用-符号,不加任何该加的文件名称时,代表"标准输入"的意思。这是GNU指令的共通选项。譬如下例
这里的-符号,既代表从标准输入读取资料。
这代表变更工作目录到"上一次"工作目录。
%除法(Modulo)
在运算式中,用来表示"除法"。
expr10%2
此外,也被运用在关于变量的规则表达式当中的下列
${parameter%word}${parameter%%word}
一个%表示最短的word匹配,两个表示最长的word匹配。
=等号(Equals)
常在设定变数时看到的符号。
vara=123echo"vara=$vara"
或者像是PATH的设定,甚至应用在运算或判断式等此类用途上。
==等号(Equals)
常在条件判断式中看到,代表"等于"的意思。
if[$vara==$varb]...下略
!=不等于
常在条件判断式中看到,代表"不等于"的意思。
if[$vara!=$varb]...下略
^
这个符号在规则表达式中,代表行的"开头"位置,在[]中也与"!"(叹号)一样表示“非”
输出/输入重导向
>>><<<:>&>2&>2<>>&>&2
文件描述符(FileDescriptor),用一个数字(通常为0-9)来表示一个文件。
文件描述符名称常用缩写默认值
2标准错误输出stderr屏幕
我们在简单地用<或>时,相当于使用0<或1>(下面会详细介绍)。
把cmd命令的输出重定向到文件file中。使用bash的noclobber选项可以防止覆盖已有文件,如果文件已经存在,则会显示错误信息并保留原文件内容。
把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。
从命令行读取输入,直到一个与text相同的行结束。若要防止shell变量替换,必须使用引号将输入括起来。如果使用<<-,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。
把word(而不是文件word)和後面的换行作为输入提供给cmd。
通过将文件file重定向到stdin/stdout以读写模式打开,可以避免对文件file的破坏。仅当应用程序利用了这一特性时,它才是有意义的。
功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。
:>filename把文件"filename"截断为0长度.#如果文件不存在,那么就创建一个0长度的文件(与'touch'的效果相同).
cmd>&n把输出送到文件描述符n
cmdm>&n把输出到文件符m的信息重定向到文件描述符n
cmd<&n输入来自文件描述符n
cmdm<&nm来自文件描述各个n
cmd<&n-移动输入文件描述符n而非复制它。(需要解释)
cmd>&n-移动输出文件描述符n而非复制它。(需要解释)
注意:>&实际上复制了文件描述符,这使得cmd>file2>&1与cmd2>&1>file的效果不一样。
以上就是linux中的特殊字符及含义是什么的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--linux特殊命令(shell特殊字符转义)
本文地址:https://www.idcbaba.com/guowai/4504.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。
标签:




