#主题标签(评论)
除了前面提到的“第一行”之外,这几乎是一个无处不在的符号
#!/ bin / bash
井号通常出现在行的开头或完整的说明之后。这种情况意味着符号后的文本是注释,不会被执行。
#这行是注释。
echo“ a = $ a”#a = 0
由于此功能,当您不想临时执行一行指令时,只需在该行的开头添加#。这通常在编写过程中使用。
#echo“ a = $ a”#a = 0
如果在指令中使用,用双引号引起来或在反斜杠后使用,则它将成为通用符号,并且不具有上述特殊功能。
〜帐户的主目录
这是一个常见符号og真人 ,代表用户的主目录:cd〜;;您还可以直接在符号cd〜user或路径的一部分后添加帐户名称:〜/ bin
〜+当前工作目录。该符号代表当前的工作目录。它具有与内置命令pwd相同的功能。
#echo〜+ / var / log
〜-上一个工作目录,此符号表示上一个工作目录。
#echo〜-/ etc / httpd / logs
;命令分隔符
在外壳中,充当“连续命令”功能的符号是“分号”。例如,下面的示例:cd〜/ backup; mkdir启动; cp〜/.*启动/.
;;连续分号(终结符)
该案例专用的选项充当终结者的角色。
case“ $ fop” inhelp)echo“用法:命令-help -version文件名” ;; version)echo“ version 0. 1” ;; esac
。逗号(点,是“点”)
在外壳中,用户应该知道一个点代表当前目录,而两个点代表上层目录。
CDPATH = .:〜:/ home:/ home / web:/ var:/ usr / local
在上游CDPATH设置中,等号后的点代表当前目录。
如果文件名以点开头,则该文件是一个特殊文件,并且ls命令必须与-a选项一起使用才能显示它。另外,在正则表达式中,点表示字符匹配。
“字符串”单引号(单引号)
用单引号引起来的内容将被视为单个字符串。用引号引起来的$变量无效,也就是说,它被视为防止任何变量替换的通用符号。
heyyou = homeecho'$ heyyou'#我们得到$ heyyou
“字符串”双引号(双引号)
用双引号引起来的内容将被视为单个字符串。它防止通配符扩展,但允许变量扩展。这与处理单个参数不同。
heyyou = homeecho“ $ heyyou”#我们回到家
`command`反引号(backticks)
前面的单引号和双引号将一个字符串括起来,但是如果该字符串是命令行怎么办?答案是它不会被实施。为了解决这种情况,我们必须使用单引号引起来。
fdv =`日期+%F`回显“今天$ fdv”
反引号中的日期+%F将被视为一条指令,执行结果将被携带到fdv变量中。
,逗号(逗号,标点中的逗号)
此符号通常在计算中用作“除法”目的。以下示例
#!/ bin / bashlet“ t1 =((a = 5 + 3,b = 7-1,c = 15 / 3)))” echo“ t1 = $ t1,a = $ a,b = $ b“
/正斜杠
表达路径时,它表示目录。
cd /etc/rc.dcd ../..cd /
通常,一个/代表根根目录;在四个算术运算中,它代表除法符号。
让“ num1 =((a = 10/2,b = 25 / 5))””
\反斜杠
交互模式下的转义符具有多种功能;放置在指令之前,具有取消别名的作用;放置在特殊符号之前,特殊符号的作用消失;放在指令末尾,表示指令连接到下一行。
#类型rmrm别名为`rm -i'#\ rm ./*。log
在上面的示例中,我在rm命令之前添加了转义字符。该功能是暂时取消别名功能并恢复rm命令。
#bkdir = / home#echo“备份目录,\ $ bkdir = $ bkdir”备份目录,$ bkdir = / home
在上面的示例中,回显中的\ $ bkdir,escape取消了$变量的功能。因此,将输出$ bkdir,第二个$ bkdir将输出变量/ home的内容。
|管道(管道)
管道是UNIX系统的基本概念。将上一个命令的标准输出连接为下一个命令的标准输入。
谁| wc -l </ p>
充分利用此概念,对简化脚本很有帮助。
!感叹号(取反或取反)
通常,它代表逆逻辑的作用。例如,在条件检测中,使用!=表示“不等于”
如果[“ $?” != 0] thenecho“执行错误”退出1fi
她在正则表达式中扮演“反逻辑”的角色
ls a [!0-9]
在上面的示例中yabo网页版 ,这意味着显示除a0,a1 .... a9以外的文件。
:冒号
在bash中,这是一个内置命令:“不执行任何操作”,但返回状态值0。
:
回声$? #响应为0
:> f。
上面的行等效于cat / dev / null> f。
。不仅写作短皇冠2登录 ,而且执行效率也高得多。
有时候,会有以下用法
:$ {HOSTNAME?} $ {USER?} $ {MAIL?}
此行的功能是检查是否已设置这些环境变量。如果未设置它们,则错误消息将显示为标准错误。如果您使用诸如test之类的方法或进行这种检查,则基本上可以处理它,但是它不像前面的示例那样简洁高效。
除上述内容外linux 特殊字符,还有一个地方必须使用冒号
PATH = $ PATH:$ HOME / fbin:$ HOME / fperl:/ usr / local / mozilla
在用户的.bash_profile的主目录或具有类似功能的任何文件中,设置“路径”时,我们始终使用冒号将其分隔。
?问号(通配符)
文件名扩展中扮演的角色是匹配任意字符,但不包含空字符。
#ls a?a1
充分利用她的特征,可以更准确地进行文件名匹配。
*星号(通配符)
非常常用的符号。在文件名扩展中,她用于表示任何字符,包括空字符。
#ls a * a a1 access_log
在计算中百人炸金花 ,它代表“乘法”。
让“ fmult = 2 * 3”
除了内置指令let外,还有一条关于算术的指令expr,其中星号还起着“乘法”的作用。但是要小心使用,必须在其前面加上转义符。
**电源操作
在计算时,两个星号表示“功率”的含义。
让“ sus = 2 ** 3” echo“ sus = $ sus”#sus = 8
美元符号
变量替换的代表符号。
vrs = 123echo“ vrs = $ vrs”#vrs = 123
此外,它在正则表达式中定义为行尾。通常在grep,sed,awk和vim(vi)中使用。
$ {}变量的正则表达式
bash为$ {}定义了许多用法。以下是在线说明中的列表
$ {parameter:-word} $ {parameter:= word} $ {parameter:?word} $ {parameter:+ word} $ {parameter:offset} $ {parameter:offset:length} $ {!prefix * } $ {#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} .....
对于一位数字,您可以直接使用数字,但是如果您有两位以上的数字,则必须使用{}符号将其括起来。
$ *是代表所有参考变量的符号。使用时,必须适当添加双引号。
回显“ $ *”
还有一个符号,其功能与$ *相同,但功能和处理方法略有不同。
$ @
$ @和$ *具有相同的符号,但是它们之间只有一个区别。
符号$ *将所有参考变量视为一个整体。但是符号$ @仍然保留每个参考变量的部分概念。
$#
这也是与参考变量有关的符号。她的角色是告诉您参考变量的总数。
回显“ $#”
$?状态变量(状态变量)
通常来说,UNIX(Linux)系统的进程通过执行系统调用exit()结束。此返回值是状态值。返回父进程以检查子进程的执行状态。
如果成功执行了通用命令程序,则返回值为0;否则,返回值为0。如果失败,则为1。
tar cvfz dfbackup.tar.gz / home / user> / dev / nullecho“ $?”
由于进程ID是唯一的,因此不可能同时具有重复的PID。有时,脚本将需要生成临时文件来存储必要的信息。用户也可以同时使用此脚本。在这种情况下,固定文件名的写入显然是不可靠的。只有生成动态文件名才能满足需要。符号
也许可以满足此需求。它表示当前shell的PID。
回显“ $ HOSTNAME,$ USER,$ MAIL“> ftmp。$$
将其用作文件名的一部分,以避免同时覆盖相同的文件名。
ps:基本上,系统将回收已执行的PID,然后根据需要再次分配它们。因此,即使使用动态文件名写入临时文件,如果在执行脚本后未清除脚本秒速飞艇 ,也会发生其他问题。
()命令组(命令组)
使用括号括起一系列连续的命令。对于外壳,这种用法称为命令组。如下例所示:(cd〜; vcgh =`pwd`; echo $ vcgh),命令组具有一个功能,shell将生成一个子shell来执行这组命令。因此,其中定义的变量仅影响命令组本身。让我们看一个例子
#cat ftmp-01#!/ bin / basha = fsh(a = incg; echo -e“ \ n $ a \ n”)echo $ a#。/ ftmp-01incgfsh
除上述指令组外,在数组变量的定义中还使用了括号;此外,它们还用于可能需要添加转义字符(例如表达式)的其他情况。
(())
这组符号的功能类似于let命令。它用于算术运算,是bash的内置函数。因此,执行效率比使用let指令要好得多。
#!/ bin / bash((a = 10))echo -e“初始值,a = $ a \ n”(((a ++))echo“在a ++之后,a = $ a”
{}花括号(代码块)
有时会出现脚本,并且在括号中会有一个或多个命令或变量设置的段落,以“分号”结尾。
#cat ftmp-02#!/ bin / basha = fsh {a = inbc; echo -e“ \ n $ a \ n”} echo $ a#。/ ftmp-02inbcinbc
此用法与上面介绍的命令组非常相似,但是有所不同。它在当前shell中执行,不会生成子shell。
花括号也用在“功能”的功能中。广义上讲,仅使用花括号时,它的作用类似于没有指定名称的函数。因此,编写这样的脚本也是一件好事。特别是对于输出和输入的重定向,这种方法可以简化脚本的复杂性。
此外,还有括号的另一种用法,
{xx,yy,zz,...}
这种大括号组合经常用在字符串组合中,让我们看一个例子
mkdir {userA,userB,userC}-{homelinux 特殊字符,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}}
如果不是为了支持这种用法,我们将不得不写几行并重复几次!
[]括号
它经常出现在过程控制中,起到封闭判断的作用。如果[“ $?” != 0] thenecho“执行错误” exit1fi
此符号在正则表达式中的作用类似于“作用域”或“集合”
rm -r 200 [1234]
上面的示例意味着删除2001、2002、2003、2004和其他目录。
[[]]
这组符号与先前的[]符号基本相同,但是她允许直接使用||。和&&逻辑符号。
#!/ bin / bashread akif [[$ ak> 5 || $ ak
||逻辑符号
这通常被看作是代表符号或逻辑的符号。
&&逻辑符号
这通常也被视为代表逻辑的符号。
&背景工作
将一个&符放在完整命令行的末尾,这意味着该命令行被置于后台才能工作。
tar cvfz data.tar.gz data> / dev / null&
\字边界
这组符号在正则表达式中定义为“边界”。例如,当我们要查找单词the时,如果我们使用
grep FileA
您会发现类似的单词也将被视为匹配单词。因为碰巧是那里的一部分。如果要避免这种情况,我们必须添加符号“边界”
grep'\'FileA
+加号(加号)
在表达式中,她用来表示“加法”。
expr 1 + 2 + 3
此外,在正则表达式中,它用来表示前面的“许多”字符。
#grep '10 \ +9'文件B10009#使用此符号时,必须在其前面加上转义符。
-减号(破折号)
在表达式中,她习惯于表示“减法”。
expr 10-2
此外,它也是系统命令的选项符号。
ls -expr 10-2
在GNU命令中,如果单独使用the-symbol,而没有任何其他文件名,则表示“标准输入”。这是GNU命令的常用选项。例如,以下示例
tar xpvf-
这里的符号表示从标准输入中读取数据。
但是,这在cd命令中很特殊
cd-
这表示将工作目录更改为“最后一个”工作目录。
%除法(模数)
在表达式中,它的意思是“除法”。
expr 10%2
此外,以下内容还用于有关变量的正则表达式中
$ {parameter%word} $ {parameter %% word}
1%表示最短的单词匹配,而2表示最长的单词匹配。
=等号(等于)
设置变量时经常看到的符号。
vara = 123echo“ vara = $ vara”
或者诸如PATH之类的设置,甚至用于计算或判断之类的目的。
==等号(等于)
它经常出现在条件判断中,意思是“等于”。
如果[$ vara == $ varb]
...略低于
!=不等于
它经常出现在条件判断中,意思是“不等于”。
如果[$ vara!= $ varb]
...略低于
^
在正则表达式中,此符号表示行的“开始”位置,在[]中,还表示“不”,例如“!”。 (感叹号)
输出/输入重定向
> >> 2>&>&2
文件描述符,使用数字(通常为0- 9)代表文件。
常用的文件描述符如下:
文件描述符名称常用缩写默认值
0个标准输入标准输入键盘
1个标准输出标准输出屏幕
2标准错误输出stderr屏幕
当我们简单地使用它时,它等效于使用0(在下面进行更多介绍)。
* cmd>文件
将cmd命令的输出重定向到文件文件。如果文件已经存在,则将原始文件清除,并且bash的noclobber选项可以防止覆盖原始文件。
* cmd >>文件
将cmd命令的输出重定向到文件文件。如果文件已经存在,请将信息添加到原始文件中。
* cmd
使cmd命令从文件中读取
* cmd文件名将文件“文件名”的长度缩短为0。 #如果文件不存在,则创建一个长度为0的文件(与“触摸”效果相同)。
cmd>&n将输出发送到文件描述符n
cmd m>&n将信息输出到文件字符m重定向到文件描述符n
cmd>&-关闭标准输出
cmd&1与cmd 2>&1> file的作用不同。
转载自本文