#linux#shell中的特殊符号

# 井号(comments)

井号 出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。

#这个井号表示注释
echo "abc" #这个井号表示注释

如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

echo "abc#abc"

~ 波浪号

波浪号 代表当前登录用户的home目录。

cd ~

~+ 表示当前的工作目录,和pwd作用相同。

echo ~+

~- 表示上次的工作目录。

echo ~-

; 分号(command seperator)

分号表示连续指令。

cd ~; ls

;; 连续分号(terminator)

连续分号 专用在case的选项,作为结束标识。

var="1"
case $var in
    1)
    echo 1;
    ;;
    2)
    echo 2;
    ;;
    *)
    echo "default";
    ;;
esac

. 点号(dot)

1个点号表示当前目录,2个点号表示上层目录。

ls .
ls ..

如果文件名以点号开头,表示该文件为隐藏属性。需要通过 ls -a 才能看到该文件。

正则表达式中,点号表示任意字符。

’ 单引号(single quote)

被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。

var=123
echo 'number is $var' #这里输出的为$var,而不是123

” 双引号(double quote)

被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。

var=123
echo 'number is $var' #这里输出的为123

` 倒引号(backticks)

倒引号引住的内容为命令,会作为命令执行。类似于$()

echo `ls`
echo $(ls)

, 逗号(comma)

逗号用在运算表达式中间,用于分隔表达式。

a=1
b=2
((a++, b++))
echo $a
echo $b

/ 斜线(forward slash)

斜线在路径表示时,代表目录。

cd /etc/sysconfig/

通常单一的斜线表示系统根目录。

ls /

在四则运算中,表示除法。

let "var=25/5"
echo $var #输出5

\ 反斜杠

反斜杠放在指令前,表示取消alias作用。

\ls

反斜杠房子特殊符号前,则该特殊符号的作用消失,表示转义

echo "\"abc\""

反斜杠放在指令的末端,表示指令链接下一行。

ls /etc/ \
-la

| 竖线(pipeline)

unix系统中,竖线表示管道,连接上个指令的标准输出,作为下个指令的标准输入。

ls -la | wc -l

! 感叹号(negate or reverse)

感叹号通常表示反逻辑的作用,如:条件语句中,表示 不等于

if [ $var != 2 ]; then 
    echo "not equal"
fi

在正则表达式中,表示反逻辑。

ls a[!0-9]

: 冒号

冒号在bash中,这是一个内建指令,表示:什么都不做,但返回值为0

:
echo $? #返回0

? 问号

问号在文件名扩展上,表示任意单个字符,但不包括null字符。

ls a?a

* 星号

星号在文件名扩展上,表示任意多个字符,包括null字符。

ls a*

星号在运算时,代表乘法。

let "var = 3 * 4"
echo $var #12

两个星号在运算时代表次方运算。

let "var=2**3"
echo $var #8

$ 美元符号(dollar sign)

美元符号表示变量替换。

var=3
echo $var

正则表达式中,美元符号表示行结束符。

bash 变 量 的 正 规 表 达 式 。 b a s h 对 {} 定义了不少用法。以下是取自线上说明

${parameter:-word}      使用默认值word来代替那些空的或者没有复制的变量。
${parameter:=word}      使用指定值word来代替空的或者没有复制的变量。
${parameter:?word}      如果变量为空或者未赋值,那么就会显示出错误信息word并中止脚本的执行同时返回退出码1${parameter:+word}
${parameterffset}
${parameterffset:length}
${!prefix*}
${#parameter}           字符串长度
${parameter#word}       从字符串的头部开始删除与word匹配的最小部分,然后返回剩余部分
${parameter##word}      从字符串的头部开始删除与word匹配的最长部分,然后返回剩余部分
${parameter%word}       从字符串的尾部开始删除与word匹配的最小部分,然后返回剩余部分
${parameter%%word}      从字符串的尾部开始删除与word匹配的最长部分,然后返回剩余部分
${parameter/pattern/string}
${parameter//pattern/string}

使 ∗ 表 示 脚 本 的 所 有 参 数 , 使 用 时 视 情 况 加 上 双 引 号 。 引 用 参 数 的 方 式 如 下 : 0, 1, 1 , 2, ..., 10, 10 , {11}, …
其中: 0 0 表 示 脚 本 名 , 1, … 表示脚本参数。

@ @ 与 * 具有相同作用。
不同点是:
∗ 是 将 所 有 的 引 用 变 量 视 为 一 个 整 体 , @ 则仍保留每个引用变量的区段概念。

$# 也是与引用变量相关的符号,表示引用变量的数量。

$? 状态值(status variable)
表示指令的结果码,一般来说:0表示正常,非0表示异常。

$$ 表示当前进程的pid

$- 显示shell使用的当前选项

$! 最后一个后台运行的进程ID

() 圆括号(指令群组,command group)

用括号将一串连续指令括起来,这种用法对 shell 来说,称为指令群组。

(cd ~ ; vcgh=`pwd` ;echo $vcgh)

指令群组有一个特性,shell会以产生 subshell来执行这组指令。因此,在其中所定义的变数,仅作用于指令群组本身。

除了上述的指令群组,括号也用在 array 变数的定义上;另外也应用在其他可能需要加上escape字元才能使用的场合,如运算式。

(()) 双圆括号

这组符号的作用与 let 指令相似,用在算数运算上,是 bash 的内建功能。所以,在执行效率上会比使用 let指令要好许多。

var=1
((++var))
echo $var #2

{} 大括号(block of code)

脚本中,大括号中夹杂着一段或几段以分号做结尾的指令或变量,这种情况下,和指令群组类似,但不同的是,它在当前shell执行,不会产生subshell。

{
    echo abc
}

大括号也被用在函数的功能上,广义的讲,单纯只使用大括号时,作用就像是个没有指定名称的函数一样。

此外,大括号还有另一种用法,如下
{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,这几个目录。

[] 中括号

中括号常用在流程控制中,用于括住判断式。可理解为指向test命令的一个软链接。所以其用法可以参照test,将test位置替换为[即可。

if [ -z $var ]; then
fi

正则表达式中,表示范围或集合。

ls abc[1-9]

[[]] 与[] 作用类似,允许使用|| && 逻辑等符号。

var=5
if [[ $var > 4 ]]; then echo "large"; fi;

|| 双竖线

双竖线表示逻辑符号 or,可以链接多个命令。允许执行一系列命令直到有一条命令成功为止,其后所有命令将不再被执行。

&& 双and符号

双and符号表示逻辑符号 and,可以连接多个命令。只有在前面所有的命令都执行成功的情况下才执行后一条命令。

echo "a" && echo "b" && echo "c"

& and符号

单一个and符号放在完整指令末端,表示后台执行。

+ 加号(plus)

在运算表达式中,表示加法。

此外在正则表达式中,用来表示很多个的前面字符的意思。

grep '10\\+9' fileB109100910000910000931010009#这个符号在使用时,前面必须加上转义字符。

- 减号(dash)

在运算表达式中,表示减号。

let "var=5-3"

减号表示系统指令的选项符号。

ls -la

在GNU指令中,如果单独使用-,不加任何该加的文件名称时,代表标准输入的意思。只是GNU指令的共通选项。

tar xpvf - #代表从标准输入读取资料。

cd指令中,表示回到上次目录。

cd -

% 百分号(modulo)

在运算表达式中,表示取模

expr 10 % 2 #输出2

此外,也被运用在关于变量的规则表达式当中

${parameter%word}${parameter%%word} 

一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配。

= 等号(equals)

等号表示变量赋值,PATH设定。

var=3
export JAVA_HOME=/usr/local/java

== 双等号

双等号在条件表达式中,表示等于。

if [ $var1 == $var2 ]; ...

!= 不等于

不等于号在条件表达式中,表示不等于。

if [ $var1 != $var2 ]; ...

^ 上尖括号

正则表达式中,表示行首,在[]中,表示非。

输出/输入重导向

ls >> a.txt #追加操作

ls > a.txt #创建操作

ls 1>>/dev/null 2>>&1
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值