MISSING SEMESTER
课程概览与 shell
使用 shell
- shell 基于空格分割命令并进行解析,然后执行第一个单词代表的程序,并将后续的单词作为程序可以访问的参数。
- 如果您希望传递的参数中包含空格(例如一个名为 My Photos 的文件夹),您要么用使用单引号,双引号将其包裹起来,要么使用转义符号
\进行处理(My\ Photos)。
在 shell 中导航
- shell 中的路径是一组被分割的目录,在 Linux 和 macOS 上使用
/分割,而在 Windows 上是\。 - 如果某个路径以
/开头,那么它是一个绝对路径,其他的都是相对路径。相对路径是指相对于当前工作目录的路径,当前工作目录可以使用pwd命令来获取。此外,切换目录需要使用cd命令。在路径中,.表示的是当前目录,而..表示上级目录 - 为了查看指定目录下包含哪些文件,我们使用
ls命令: - 还有几个趁手的命令是您需要掌握的,例如
mv(用于重命名或移动文件)、cp(拷贝文件)以及mkdir(新建文件夹)。 - 如果您想要知道关于程序参数、输入输出的信息,亦或是想要了解它们的工作方式,请试试
man这个程序。它会接受一个程序名作为参数,然后将它的文档(用户手册)展现给您
在程序间创建连接
- 最简单的重定向是
< file和> file。这两个命令可以将程序的输入输出流分别重定向到文件: >>相当于 add
shell 工具和脚本
Shell 脚本
-
Bash 中的字符串通过
'和"分隔符来定义,但是它们的含义并不相同。以'定义的字符串为原义字符串,其中的变量不会被转义,而"定义的字符串会将变量值进行替换。 -
脚本参数
$0- 脚本名$1到$9- 脚本的参数。$1是第一个参数,依此类推。$@所有参数$#参数个数$?前一个命令的返回值$$当前脚本的进程识别码!!完整的上一条命令,包括参数。常见应用:当你因为权限不足执行命令失败时,可以使用sudo !!再尝试一次。$_上一条命令的最后一个参数。如果你正在使用的是交互式 shell,你可以通过按下 Esc 之后键入 . 来获取这个值。 -
||and&&都会短路 -
命令替换,当您通过
$(CMD)这样的方式来执行CMD这个命令时,它的输出结果会替换掉$(CMD)。 -
shell 的 通配(globbing)
- 通配符 - 当你想要利用通配符进行匹配时,你可以分别使用
?和*来匹配一个或任意个字符。例如,对于文件foo,foo1,foo2,foo10和bar,rm foo?这条命令会删除foo1和foo2,而rm foo*则会删除除了 bar 之外的所有文件。 - 花括号
{}- 当你有一系列的指令,其中包含一段公共子串时,可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便。
- 通配符 - 当你想要利用通配符进行匹配时,你可以分别使用