# 井号(comments)

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

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

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

echo "abc#abc"

~ 波浪号

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

cd ~

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

echo ~+

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

echo ~-

; 分号(command seperator)

分号表示连续指令。

cd ~; ls

;; 连续分号(terminator)

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

var="1"
case $var in1)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对变量的正规表达式。bash对{} 变量的正规表达式。 bash 对 {} 定义了不少用法。以下是取自线上说明

${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,1, 2, ..., 10,10,{10}, {11}, …
其中:0表示脚本名,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

#linux#shell中的特殊符号相关推荐

  1. Day25 linux shell中的特殊符号与命令

    2019独角兽企业重金招聘Python工程师标准>>> linux shell中的特殊符号 *:代表零个或多个任意字符 ?:只代表一个任意字符,不管是数字还是字母,只要是一个字符,都 ...

  2. Linux Shell中的美元符号$

    linux脚中经常会遇到一大堆美元符号 ($),有些符号容易搞混,他们代表的含义我做个记录: $0 shell的命令本身(包括完整路径) $1到$9 数字表示shell 的第几个参数 $# 传递到脚本 ...

  3. linux什么符号表示未结束,Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)...

    井号 (comments) 这几乎是个满场都有的符号. !/bin/bash 井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行. This line is ...

  4. linux中比较大小的符号,linux shell中的比较符号与特殊符号介绍

    shell字符串比较.判断是否为数字 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b&qu ...

  5. 如何理解Linux shell中的“2>1”(将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出))(尼玛>符号竟然不支持搜索,害我搜搜不到,只能搜)

    文章目录 前言 有何妙用 如何理解 总结 前言 有时候我们常看到类似这样的脚本调用: ./test.sh > log.txt 2>&1 这里的2>&1是什么意思?该如 ...

  6. linux的shell的功能,linux shell中${ }的一些特异功能

    linux shell中${ }的一些特异功能,这部分内容是shell中的比较经典的部分之一,建议认真学习,深刻体会. 假设我们定义一个变量为: file=/dir1/dir2/dir3/my.fil ...

  7. Linux shell中的一个问题 ${}带正则匹配的表达式

    目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

  8. Linux shell中2>1的含义

    转载来源 :Linux shell中2>&1的含义 作者:一个行走的民 https://blog.csdn.net/zhaominpro/article/details/82630528 ...

  9. Linux shell中的竖线(|)——…

    原文地址:Linux shell中的竖线(|)--管道符号 作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | comman ...

最新文章

  1. Missing separate debuginfos, use: debuginfo-install
  2. Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] A A Problem about Polyline(数学)
  3. bzoj2957:楼房重建
  4. 动态规划-直方图最大长方形
  5. 老黄历小程序源码前端实例(亲测可用)
  6. 室外定位_为什么老师应该走出自己的舒适区而进入室外
  7. 快速修复 Log4j2 远程代码执行漏洞步骤
  8. PHP错误提示的关闭方法详解
  9. Spark面试:Spark on yarn 运行流程
  10. 记于开学两个星期...十九岁快乐!
  11. 系统wmi服务器,wmi的服务器实时监控系统
  12. 编程示例:公农历转换的算法
  13. 触发器的使用,通过这个案例让你完全掌握
  14. 中小型企业Web开发框架
  15. 一分钟教你看懂蓝屏代码,轻松解决电脑蓝屏问题
  16. Xftp6XShell6下载地址
  17. 测距必备,8个超声波测距方案,实时更可控
  18. grub2命令 linux启动盘,使用grub2制作多重启动盘(下)
  19. Infortrend与英方合作推出存储灾备一体化解决方案
  20. 字节测试爆料薪资普降17%,薪资和假期之间的抉择

热门文章

  1. 扎克伯格:我们如何接管世界
  2. 转载:ZYNQ+linux网口调试笔记(1)PS-GEM0
  3. windows无法打开添加打印机_计算机共享打印机,再也不用为安装共享打印机发愁了...
  4. 一起学Docker:CMD与ENTRYPOINT的区别
  5. html5仿网页模板,html5仿创客贴官网滚屏页面展示模板
  6. 测试口语辨识度的软件,英语口语学习软件哪些比较好?
  7. 2020高压电工考试及高压电工实操考试视频
  8. 为什么有那么多管理者不愿意制定计划?
  9. Error:java:无效的标记:E:\IdeaProjects\项目名\src\main\webapp\WEB-INF\lib
  10. form builder画布跟着鼠标滚轮上下跳动