通配符 *
shell 将通配符*替换为当前目录下的各个文件和目录,然后再传给命令。
比如ls *是ls(当前目录下的所有文件 + 当前目录下所有文件夹), 其中ls(当前目录下所有文件夹) 将会列举这些文件夹下的文件(夹)
1 | ➜ ls -p # append '/' at the end of a directory |
括号和大括号
() 包裹的代码在子shell 里执行,{} 包含的代码在当前shell里执行1
2
3
4
5
6
7
8➜ (a=$PWD;echo $a;)
/Users/lin
➜ echo $a # a is not defined in current shell
➜ { a=$PWD;echo $a; }
/Users/lin
➜ echo $a
/Users/lin
echo $((expression))
运算展开1
2➜ echo $((1+2))
3
进制
| 写法 | 含义 |
|---|---|
0开头 |
8进制 |
0x开头 |
16进制 |
[base#]n |
base进制,n is a number in that base |
1 | ➜ echo $((1)) |
单引号和双引号
被双引号括起的内容常量还是常量,变量则会替换成变量内容。
被单引号括起的内容不会发生替换。
1 | ➜ var=dablelv |