速览:
命令行即shell
终端: 让用户访问shell
终端下鼠标选中/单击/双击可快速copy
rm
用通配符删除文件之前最好使用ls
命令查看对应文件双引号
"
“和单引号'
‘在shell中的意义不完全相同
$
$
在不加括号时为参数扩展,比如我的电脑中$USER
代表的就是home,所有的可用参数可以由一行命令看到:
printenv | less |
命令过多此处不进行展示。
$(命令)
得到的是命令的输出结果,此时可以将其用作其他命令的参数
echo $(ls) # 结果和 ls 一致 |
引用类型: 双引号""
& 单引号''
& 反斜线\
参数之间的分割是通过空格进行的,下面以 cal
命令为例看一下结果
echo $(cal) |
三月 2021 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
这里的结果是因为没有经过引用(或者转义)的空格会被当成分割符而不是参数的组成部分,不建议使用 touch
代替这里的 echo
,当然,你也可以建个文件夹试试看 : )
利用单/双引号引用的参数会传递一个字符串,此时其中的空格是参数的组成部分,以hello world
为例
mkdir testfile |
total 0 |
该命令会创建两个文件:hello
和 world
(Ps: 前两行仅为了 ll
命令的简洁,ll
是 ls -lh
的别名),现在 引用 & 转义 空格让其包含在文件名中:
touch "hello world1" |
+ -rw-r--r-- 1 home staff 0B 5 17 11:56 hello world1 |
以上三种方式都可以达到参数中包含空格的效果。
关于引用下的禁止拓展
'
和"
在shell中有时并不相同:
echo "$(cal)" |
三月 2021
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
echo '$(cal)' |
$(cal) |
某种意义上来说,单引号禁止的扩展类型比双引号多,另一个例子是 \
在单引号中将不具备特殊含义:
echo "\$" |
$
\$
更多的内容请参考Bash quoting 手册。
history
假设现有历史命令总数为 totalNumber
history [number]
可以查看序号从 number
到 total_number
的历史记录history [-number]
可以查看最后 number
个记录
history 10 |
umask
umask [掩码]
和在使用 chmod [增加权限]
的实现原理完全一样,只是反了过来,二者在终端中都是8进制的表现方式,比如掩码 002
,展开为2进制就是000 000 010
,这代表掩盖其他用户组的写入权限。
文件似乎在创建时默认是没有可执行权限的,目录才有,所以掩码不需要任何值来去除文件的执行权限。