~ (波浪线)
在linux命令中波浪线 ~ 代表当前用户路径
如果你的用户名是abc,那么 ~ 代表的路径是 /Users/abc
work:~/baidu/ps-se$cd ~
work:~$pwd
/home/work
work:~$
. (点)
在linux命令中,点 . 代表当前路径
如果当前路径是/Users/abc,那么 . 就代表/Users/abc
如果想给当前路径下test.txt文件重命名,可以使用如下方式
mv ./test.txt text.txt
# 等同于如下命令
mv /Users/abc/test.txt text.txt
‘’ (单引号)
单引号内的内容都作为字符串,忽略内容中所有的命令和特殊字符
work:~$echo 'This is a string'
This is a string
“” (双引号)
与单引号的区别在于双引号内会解析特殊字符,单引号直接输出内容,不解析特殊字符;双引号内则会解析特殊字符,然后输出。
特殊字符包括’, ", $, \,如果要忽略特殊字符,就可以利用 \ 来转义,忽略特殊字符,作为普通字符输出
work:~$A=1
work:~$echo 'A'
A
work:~$echo "${A}"
1
`` (反引号)
用于将命令的执行结果赋予变量
work:~$date +"%Y-%m-%d"
2021-04-07
work:~$today=`date +"%Y-%m-%d"`
work:~$echo `date +"%Y-%m-%d"`
2021-04-07
# 等同于如下命令
work:~$echo ${today}
2021-04-07
# 可以看出反引号将date命令的执行结果赋值给了today变量
? (问号)
作为通配符,代表一个字符
work:~/$ls -l rea?me.txt
-rw-rw-r-- 1 work work 31 Feb 1 10:22 readme.txt
* (星号)
作为通配符,代表零个或多个字符
work:~/$ls -l read*
-rw-rw-r-- 1 work work 31 Feb 1 10:22 readme.txt
[] (中括号)
作为通配符,表示一个字符位置并给出多个可能的选择
如:ls re[ai]dme表示ls readme 及 ls reidme的结果集合
如:ls re[a-c]dme 表示ls readme 、ls rebdme及ls recdme的结果集合
work:~/$ls -l re[ai]dme.txt
-rw-rw-r-- 1 work work 31 Feb 1 10:22 readme.txt
-rw-rw-r-- 1 work work 31 Mar 30 15:28 reidme.txt
! (感叹号)
配合中括号使用,将不需要的结果排除在外
如:ls re[!a]dme表示该位置字符结果将字符a结果排除在外
work:~/$ls -l re[!a]dme.txt
-rw-rw-r-- 1 work work 31 Mar 30 15:28 reidme.txt
$ (美元符号)
$ 符号在linux系统中作用广泛,尤其是在编写shell脚本时候,少不了 $ 符号
-
$ para(代表变量名)
可获取变量的值work:~$A=1 work:~$echo $A 1
-
$0
表示脚本名 -
$1
表示脚本的第一个参数 -
$n(n=1,2,3…)
表示脚本的第n个参数 -
$#
表示脚本的参数个数实例展示:这里创建一个可执行文件test.sh
# 创建可执行文件并填充命令 work:~$sh test.sh echo 'echo $# $0 $1 $2' > test.sh work:~$cat test.sh echo $# $0 $1 $2 # 执行可执行文件,并传入变量 I am a student work:~$sh test.sh I am a student 4 test.sh I am # 由于并没有声明$3第三个参数,所以并没有打印 a
-
${}
用于获取变量的值,不同于 $para 用法,使用 {} 可以明确区分变量的边界work:~$a=1 work:~$ab=2 work:~$echo "$ab" 2 work:~$echo "${a}" 1
-
$?
判断上一个命令执行是否成功,获取返回值
执行成功值时0,失败是非0work:~$ls 111.txt work:~$echo $? 0 work:~$li bash: li: command not found # 未找到命令 = 命令执行失败 work:~$echo $? 127
参考文献:传送门