本文主要讲解“linux中有哪些特殊字符及其含义”。这篇文章的内容简单明了,易学易懂。请按照主机频道的思路,越走越深。让我们一起研究学习“linux中有哪些特殊字符及其含义”!
linux的特殊字符:1。" # "注释字符;2.“~”代表用户的主目录;3、";",这是“连续指令”功能的符号;4.“/”,路径目录分隔符;5." \ ",转义字符;6.“|”,管道符号;7, ".",表示当前目录;8, "..",表示父目录,即当前目录的上一个目录;9、"?",指单字符通配符,代表文件名中任意字符的匹配;10.“*”代表任意字符序列,匹配任意字符等。
linux特殊符号#的使用和含义:
以#开头表示这句话是注释。
#!/bin/bash经常出现在命令之前,或者命令之后,后面跟注释文本,不会执行。
#当输入的命令不想执行时,只需输入(#)。
#这一行是注释。(这是一行注释)
虽然上述段落被忽略,但它将被添加到您的命令历史中。
更强大的方法如下:
定义一个变量,将字符串“amazing alvin”赋给它。
this _ string = & quot神奇的阿尔文& quot
${this_string#amazing}返回已被注释掉的this_string字符串变量,因此您可以回显输出以查看结果:
echo awsome $ { this _ string # amazing }
惊艳只是被评论出去了,没有被删除,等你把评论去掉了还会回来:
echo $this_string
~
~代表用户的主目录,指的是主目录,也就是我们用户的个人目录。无论你在哪里,输入cd ~它都会带你回家!
cd ~
更高端的玩法是在后面加上特定的路径,直接定位到主目录的指定位置。方便吗?
CD ~/工作/存档
;分号
在shell中,作为“连续指令”的功能符号是“分号”。
这是一样的”;"差不多,我就不赘述了,主要是用来单独下单的。
ls & gtcount.txtWC-l count . txt;rm count.txt
这里注意,使用;分离命令时,即使第一个命令失败,第二个命令也会运行,即使第二个命令失败,第三个命令也会运行,依此类推。
如果您想在命令失败时停止,请使用“& amp& amp",如下所示:
光盘。/不存在& amp& ampCP ~/文档/报告/*。
;;连续分号(终止符)
选项专用于案件,扮演终结者的角色。
案例& quot$ fop & quotinhelp)回声& quot用法:命令帮助版本文件名& quot;;版)echo & quot版本0.1 & quot;;environmental systems applications center 环境系统应用程序中心
。点
在果壳里,用户应该知道一个。表示当前目录和两个。代表上层目录。
让我们看看当前目录中的所有文件:
ls -al
的。红圈里指的是当前目录,但是没有意义。我们在命令中更多地使用它,如下所示:
。/script.sh
这告诉bash只需在当前目录中查找并执行script.sh文件,而不是在路径中查找。
假设我们想回到上一个目录:
激光唱片..
和以前一样,您可以在它后面添加一个特定的目录,这意味着在与当前目录相同的级别上定位其他目录:
激光唱片../项目/
“字符串”单引号(字符串单引号)
单引号中的内容将被视为单个字符串。引号中代表变量的$符号没有任何作用,也就是说,它被视为通用符号,以防止任何变量被替换。
hello world = hello world echo & # 39$ hello world & # 39#我们得到了$hello world
“字符串”双引号(字符串双引号)
双引号中的内容将被视为单个字符串。它防止通配符扩展,但允许变量扩展。这不同于单一的论点。
heyyou = homeecho & quot$ heyyou & quot#我们回家了
命令反引号(反引号)
前面的单引号和双引号括起了一个字符串,但是如果这个字符串是命令行呢?答案是不会实施。为了处理这种情况,我们必须使用反单引号。
fdv = ` date+% f ` echo & quot;今天$ fdv & quot
倒引号中的Date +%F将被视为一条指令,执行的结果将被带入fdv变量。
逗号(逗号,标点符号中的逗号)
该符号通常在操作中作为“单独”使用。触摸f{1,2,3}示例
/正斜杠:
当表示路径时,它表示目录。通常single/代表根目录。
斜杠"/& quot;指的是路径目录分隔符,这里没什么好说的。
ls ~/工作/测试/
不过,有趣的是,如果/path目录分隔符前没有任何东西,是否意味着这就是顶级目录?由于Linux系统的目录树都是以/开头的,所以只有一个/代表我们常说的系统根目录。
cd /
\反斜杠(转义字符)
交互模式下的转义字符有几个作用;在指令之前,它具有取消别名的效果;当它放在特殊符号前面时,特殊符号的功能就消失了;在一条指令的末尾,表示该指令连接到下一行。
#类型rmrm别名为“RM-I & # 39;# \rm。/*.原木
在上面的例子中,我在rm命令前添加了转义字符,以临时取消别名功能并恢复rm命令。
# bkdir =/home # echo & quot;备份目录,\ $ bkdir = $ bkdir & quot备份目录,$bkdir = /home
在前面的例子中,\$bkdir,echo中的escape取消了$变量的功能,所以会输出$bkdir,第二个$bkdir会输出变量/home的内容。
管道
管道是UNIX系统中一个基本而重要的概念。将前一条指令的标准输出链接为下一条指令的标准输入。
谁| wc -l
善用这个概念对简化脚本相当有帮助。
!感叹号(否定或反转)
它通常代表反逻辑的功能,比如在条件检测中!=表示“不等于”
ls f[!9]代表显示除f0、f1之外的其他文件....f9。
:冒号
在bash中,这是一条内置指令:“什么都不做”,但返回状态值0。
echo $?#响应为0
:& gtf .美元
上述行相当于cat /dev/null > f.$$ .不仅文字简短,执行效率也好很多。
有时候,还会出现以下几种用法。
:$ {主机名?} $ {用户?} ${MAIL?}
这一行的目的是检查这些环境变量是否已经设置。如果没有设置,错误消息将显示为标准错误。如果您使用test或if之类的实践,这种检查基本上可以处理,但不如前面的例子简洁高效。
除了以上,还有一个地方必须用冒号。
PATH = $ PATH:$ HOME/fbin:$ HOME/fperl:/usr/local/Mozilla
在。bash_profile或者用户自己主目录下的任何具有类似功能的文件,设置关于“路径”的信息我们都用冒号来区分彼此。
?问号(通配符)
文件名扩展的作用是匹配任意字符,但它不包含空字符。
#是a?第一等的
星号(通配符)
很常见的符号。在文件名扩展上,她用来表示任何字符,包括空字符。
# ls a*a a1访问日志
在操作中,它代表“乘法”。
让& quotfmult = 2 * 3 & quot
除了内置的指令let之外,还有一个关于运算的指令expr,而星号在这里也起到了“乘法& quot的作用。但是使用的时候要小心。他的前面必须有转义字符。
* *电源操作
两个星号代表“权力”的含义。
让& quotsus = 2 * * 3 & quot回声& quotsus = $ sus & quot# sus = 8
美元
变量替换的代表符号。
vrs = 123echo & quotvrs = $ vrs & quot# vrs = 123
此外,它被定义为“行”行尾。这通常用于grep、sed、awk和vim(vi)中。
$ {}变量的标准表达式
Bash定义了$ {}的许多用法。以下表格列摘自在线帮助。
$ { parameter:-word } $ { parameter:= word } $ { parameter:?word } $ { parameter:+word } $ { parameter:offset } $ { parameter:offset:length } $ {!前缀* } $ { # parameter } $ { parameter # word } $ { parameter # # word } $ { parameter % word } $ { parameter % % word } $ { parameter/pattern/string } $ { parameter//pattern/string }
$*
$ *指的是脚本的执行引用变量,引用参数的算法与通用指令相同。指令本身是0,后面是1,依此类推。参考变量表示如下:
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11} .....
可以直接使用一位数,但两位以上必须用{}符号括起来。
$ *是代表所有引用变量的符号。使用时,要酌情加双引号。
回声& quot$ * & quot
还有一个符号与$ *功能相同,但效果和处理方式略有不同。
¥@
$ @和$ *符号相同,但有一点不同。
符号$ *将所有引用的变量视为一个整体。
但是,符号$ @仍然保留了每个引用变量的节概念。
$#
这也是一个与参考变量相关的符号。它的作用是告诉你参考变量的总数是多少。
回声& quot$ # & quot
$?状态变量
一般来说,UNIX(linux)系统的进程是通过执行系统调用exit()来结束的。这个返回值就是状态值。返回父进程以检查子进程的执行状态。
如果通用指令程序执行成功,其返回值为0;失败是1。
tar cvfz dfbackup.tar.gz/home/user & gt;/dev/null echo & quot;$?"$$
因为进程的ID是唯一的,所以不可能同时有一个重复的PID。有时,脚本需要生成临时文件来存储必要的数据。而且这个脚本也可能同时被用户使用。在这种情况下,固定文件名在书写上是不可靠的。只有生成动态文件名才能满足需要。$ $这个符号可能满足这个需求。它表示当前shell的PID。
回声& quot$HOSTNAME,$USER,$ MAIL & quot& gtftmp。$$
将其作为文件名的一部分,可以避免同一文件名同时出现重叠现象。
Ps:基本上系统执行后会回收PID,然后根据需要重新分配。所以,即使临时文件是用动态文件名写的,如果脚本执行后没有清除,也会出现其他问题。
()命令组
用括号将一系列连续的指令括起来,这对于shell来说称为指令组。举个例子:(CD ~;vcgh = `pwdEcho $vcgh),指令组有一个特性,shell会通过生成一个subshell来执行这组指令。因此,其中定义的变量只作用于命令组本身。让我们看一个例子。
#卡特彼勒ftmp-01#!/bin/basha = FSH(a = incg;回声e & quot\ n $ a \ n & quot)echo $a#。/ftmp-01incgfsh
除了上面的指令组,括号也用于数组变量的定义;此外,它还用于其他可能需要转义字符的情况,比如表达式。
(( ))
这组符号类似于let指令。它用于算术运算,是bash的内置函数。所以在执行效率上会比使用let指令好很多。
#!/bin/bash((a = 10))echo-e & quot;初始值a = $ a \ n & quot((a++))echo & quot;在a++之后,a = $ a & quot
{}花括号(代码块)
有时候会出现在脚本中,一段或几段会夹在大括号里用“分号”做最后的命令或变量设置。
#卡特彼勒ftmp-02#!/bin/basha = FSH { a = inbc;回声e & quot\ n $ a \ n & quot}echo $a#。/ftmp-02inbcinbc
这种用法与上面描述的指令组非常相似,但有一点不同。它在当前shell中执行,不会产生子shell。
大括号在功能上也用在“函数”中。概括地说,当只使用大括号时,它的行为就像一个没有指定名称的函数。所以,这样写剧本也是一件相当不错的事情。特别是对于输出和输入的重定向,这种方法可以简化脚本的复杂度。
此外,大括号还有另一种用途,如下所示
{xx,yy,zz,...}
这种大括号的组合常用于字符串的组合。我们举个例子。
mkdir {userA,userB,userC}-{home,bin,data}
我们得到usera-home,usera-bin,usera-data,userb-home,userb-bin,userb-data,userc-home,userc-bin,userc-data,这些目录。这组符号的适用性相当广泛。如果我们能利用好它,回报就是简化和效率。比如下面这个例子
chown root /usr/{ucb/{ex,edit},lib/{ex?。?*,how_ex}}
要不是支持这种用法,我们还得写几行,重复几遍。
[]括号
它经常出现在过程控制中,起到封闭判断的作用。如果[& quot;$?"!= 0]thene CHO & quot;执行错误& quotexit1fi
此符号在正则表达式中用作类似于“作用域”或“设置”的角色的符号
rm -r 200[1234]
上面的例子表示删除目录,例如2001、2002、2003和2004。
[[ ]]
这组符号基本上与前面的[]符号具有&功能,但她允许直接使用||和& amp& amp逻辑和其他符号。
#!/bin/bashread akif[[$ AK & gt;5 | | $ ak & lt9 ]]thenecho $akfi
|||逻辑符号
这个会经常看到代表或逻辑的符号。
& amp& amp逻辑符号
你会经常看到这个符号代表and逻辑。
& amp后台工作
单&;符号,并放在完整命令行的末尾,这意味着命令行被放到后台工作。
tar cvfz data.tar.gz数据& gt/dev/null & amp;
& lt…& gt;单字边界
这组符号被定义为“边界”的含义。例如,当我们想要查找单词the时,如果我们使用
grep文件
你会发现像有这样的词也被视为匹配词。因为它恰好是那里的一部分。如果我们想避免这种情况,我们必须加上“边界”的符号
grep & # 39\'FileA
加号(加号)
在表达方式上,她习惯表达“加法”。表达式1 + 2 + 3
此外,在正则表达式中,它用来表达“许多”前面字符的含义。
# grep & # 3910\+9'file 109100910009100091000931010009 #当使用这个符号时,它必须以转义字符开头。
减号
在表情上,她习惯表达“减法”。
表达式10 - 2
此外,它还是系统指令的选项符号。
ls -expr 10 - 2
在GNU指令中,如果-符号单独使用而没有添加任何文件名,它意味着"标准输入"。这是GNU指令的一个常见选项。例如下面的例子
tar xpvf -
这里的-符号不仅表示从标准输入中读取数据。
但是,它在cd指令中是特殊的。
cd -
这意味着将工作目录更改为“上次”工作目录。
%除法(模数)
在一个表达式中,用来表示“除法”。
expr 10 % 2
此外,它还用于以下关于变量的正则表达式中。
$ { parameter % word } $ { parameter % % word }
1%表示最短的单词匹配,2%表示最长的单词匹配。
=等于(等于)
设置变量时经常看到的符号。
vara = 123echo & quotvara = $ vara & quot
或路径的设定,甚至应用于计算或判断等目的。
= =等于
常见于条件判断中,表示“等于”的意思。
If [$vara == $varb]...
!=不等于
常见于条件判断中,表示“不等于”的意思。
如果[ $vara!= $varb]...
^
此符号表示正则表达式中一行的“”。以“地点,在[],也是一样的”开头!"(感叹号)表示“不”
输出/输入重定向
& gt& gt& gt& lt& lt& lt:& gt& amp& gt2 & amp& gt2 & lt& gt& gt& amp& gt& amp2
文件描述符,用一个数字(通常是0-9)来表示一个文件。
常用的文件描述符如下:
文件描述符名称常用缩写的默认值
0标准输入标准输入键盘
1个标准输出stdout屏幕
2标准错误输出stderr屏幕
我们简单地使用相当于使用0
* cmd & gt文件
将cmd命令的输出重定向到文件file。如果文件已经存在,清空原始文件并使用bash的noclobber选项来防止覆盖原始文件。
* cmd & gt& gt文件
将cmd命令的输出重定向到文件file,如果该文件已经存在,则将信息附加到原始文件。
* cmd <。文件
使cmd命令从文件中读取。
* cmd <。& lt文本
从命令行读取输入,直到与文本相同的一行结束。除非输入用引号括起来,否则这种模式会用shell变量替换输入。如果你使用
* cmd <。& lt& lt单词
提供word(不是文件word)和下面的换行符作为cmd的输入。
* cmd <。& gt文件
在读写模式下将文件file重定向到输入,文件file不会被销毁。只有当应用程序利用了这个特性时才有意义。
* cmd & gt|文件
该函数与>相同,但即使设置了noclobber,也会覆盖文件file。小心用|而不是某些书上说的!目前还是只在csh >中使用!实现这个功能。
:& gtFilename将文件“filename & quot截断到长度0。#如果文件不存在,创建一个长度为0的文件(与& # 39;触摸& # 39;效果是一样的)。
cmd & gt& amp将输出发送到文件描述符
cmd m & gt& amp将输出到文件字符m的信息重定向到文件描述符n。
cmd & gt& amp-关闭标准输出。
cmd & lt& amp来自文件描述符的输入
cmd m<。& ampN m来自文件描述的每个n
cmd & lt& amp-关闭标准输入。
cmd & lt& amp移动输入文件描述符,而不是复制它。(需要解释)
cmd & gt& amp移动输出文件描述符n,而不是复制它。(需要解释)
注意:> & amp文件描述符实际上是被复制的,这使得cmd >:file 2 & gt;& amp1和cmd 2 & gt& amp1 & gt文件的效果是不同的。
评论前必须登录!
注册