1. 认识 Shell
首次登录 Ubuntu 并打开 Shell,我们将处于用户目录,你将看到 Shell 中显示 user@machine:~$
,其中 @ 前面的内容代表用户名,@ 后面的内容代表计算机名,$ 代表身份为用户,如果为 # 则代表身份为管理员,~ 代表当前正处于用户目录,如果处于其他目录,将显示相应目录路径。
2. 常用命令
2.1 浏览类
2.1.1 pwd (print working directory)
用户当前所处的目录被称为工作目录,pwd 命令的作用是显示从根目录到当前工作目录的路径,用法为 pwd
。
2.1.2 cd (change directory)
cd 命令的作用是切换工作目录,可以使用绝对路径和相对路径两种方式。绝对路径,是指从根目录开始到目标目录。相对路径,是指从当前工作目录开始到目标目录,.
代表当前目录,..
代表上一目录,.
通常也可以省略。常见用法如下:
命令 | 结果 |
---|---|
cd .. | 使用相对路径切换到父目录。 |
cd ./bin 或 cd /bin | 使用相对路径切换到当前目录的子目录 bin。 |
cd /usr/bin | 使用绝对路径切换到 bin 目录。 |
cd 或 cd ~ | 切换到当前用户目录。 |
cd ~username | 切换到指定用户目录。 |
cd / | 切换到根目录。 |
cd - | 回到上一次所在目录。 |
2.1.3 ls (list)
ls 命令的作用是列出目录下的内容,常见用法如下:
命令 | 结果 |
---|---|
ls | 列出当前目录的内容。 |
/bin | 列出子目录 bin 的内容。 |
ls -l | 以长格式列出当前目录的内容。 |
ls -l /etc /bin | 以长格式同时列出子目录 etc 和 bin 的内容。 |
ls -la | 以长格式列出当前目录的所以内容,包括文件名以 . 开头的隐藏文件。 |
2.1.4 less
less 命令的作用是查看文本文件,用法为 less text_file
,执行命令后,将显示文本文件的内容,我们可以通过输入命令进行浏览,常用命令如下:
命令 | 行为 |
---|---|
↑ | 向上滚动 |
↓ | 向下滚动 |
q | 退出 |
2.1.5 file
file 命令的作用是查看文件类型,用法为 file filename
,常见文件类型如下:
类型 | 描述 |
---|---|
ASCII text | 文本 |
Bourne-Again shell script text | Bash 脚本 |
ELF 64-bit LSB execuable | 可执行程序 |
ELF 64-bit LSB shared object | 共享库 |
HTML document text | HTML |
JPEG image data | JPEG 格式的图片 |
Zip archive data | Zip 格式的压缩包 |
2.2 操作类
2.2.1 cp (copy)
cp 命令用来拷贝文件和目录,常见用法如下:
命令 | 结果 | 理解 |
---|---|---|
cp file1 file2 | 拷贝 file1。如果 file2 存在,则无任何提示重写 file2。 | 拷贝文件 |
cp -i file1 file2 | 结果和上面一样。-i (interactive) 表示交互,重写时,发出提示。 | 拷贝文件 |
cp file1 dir1 | 拷贝 file1 到 dir1 中。如果目录不存在,将转变为用法一。 | 拷贝文件到目录 |
cp -r dir1 dir2 | 如果 dir2 不存在,拷贝 dir2。 如果 dir2 存在,拷贝 dir1 到 dir2 中。 -r (recursive) 表示递归,用于对目录进行操作。 | 拷贝目录 拷贝目录到目录 |
2.2.2 mv (move)
mv 命令用来移动或重命名文件和目录,常见用法如下:
命令 | 结果 | 理解 |
---|---|---|
mv file1 file2 | 重命名 file1。如果 file2 存在,则无任何提示替换 file2,只剩一个文件。 | 重命名文件 |
mv -i file1 file2 | 结果和上面一样。-i (interactive) 表示交互,替换时,发出提示。 | 重命名文件 |
mv file1 file2 dir1 | 移动 file1 和 file2 到 dir1 中。如果目录不在,则报错。 | 移动文件 |
mv dir1 dir2 | 如果 dir2 不存在,重命名 dir1。 如果 dir2 存在,移动 dir1 到 dir2 中。 | 重命名目录 移动目录 |
2.2.3 rm(remove)
rm 命令用来删除文件和目录,常见用法如下:
命令 | 结果 | 理解 |
---|---|---|
rm file1 file2 | 删除 file1 和 file2。 | 删除文件 |
rm -i file1 file2 | 结果和上面一样。-i (interactive) 表示交互,删除时,发出提示。 | 删除文件 |
rm -r dir1 dir2 | 删除 dir1 和 dir2。-r (recursive) 表示递归,用于对目录进行操作。 | 删除目录 |
!!!建议谨慎使用 rm 命令,尤其是和通配符一起使用时。Linux 无法撤销删除,在和通配符一起使用时,建议先用 ls 命令查看选中的文件,确认后再使用 rm 命令进行删除。
2.3 创建类
2.3.1 mkdir(make directory)
mkdir 命令用来创建目录,用法为 mkdir directory
。
2.4 帮助类
2.4.1 type
type 命令用来查看命令的类型,用法为 type command
。
2.4.2 which
which 命令用来查看可执行程序的位置,用法为 which program
。
2.4.3 help
help 命令用来查看 Shell 内置命令的帮助文档,用法为 help builtin
。
–help 参数用来查看可执行程序的帮助文档,用法为 program --help
。有些可执行程序可能没有此参数,但是如果报错,它一般会提示你如何查看帮助文档。
2.4.4 man
man 命令用来查看可执行程序的帮助文档,用法为 man program
。
3. 长格式 (long formate)
一图读懂长格式。
- 文件名:文件的名称。
- 修改日期:该文件的最后修改日期,日期大于6个月时显示年份。
- 文件大小:文件所占的内存空间,以字节 (byte) 为单位。
- 拥有组:拥有该文件的用户组。
- 拥有者:拥有该文件的用户。
- 硬链接数:对于文件,硬链接数为1;对于目录,硬链接数为子目录的数量加上该目录本身的硬链接数(
.
和..
)。 - 权限:总共有10位,分为四组,1位为第一组,2-4位为第二组,5-7位为第三组,8-10位为第四组。第一组
d
代表目录,-
代表文件;第二组的三位分别表示拥有者对该文件的读r
、写w
和执行x
权限,第三组和第四组以此类推,分别表示组内用户和所有用户对该文件的权限。 - 目录大小:该目录所占的内存空间,以块为单位,一块的大小为 1KB
4. 通配符(wildcard)
通配符可以让我们按照某种文件名规则批量选择文件,常见的通配符及其含义如下:
通配符 | 含义 |
---|---|
* | 任意长度字符。 |
? | 任意一个字符。 |
[characters] | 包含中括号内的任意一个字符。 除了在中括号内直接写出字符外,也可以使用预设字符集。 [:alnum:] 字母和数字 [:alpha:] 字母 [:digit:] 数字 [:upper:] 大写字母 [:lower:] 小写字母 |
[!characters] | 不包含中括号内的任意一个字符,其他用法同上。 |
我们可以在任意一个命令的文件名参数中使用通配符,常见用法如下:
规则 | 含义 |
---|---|
* | 选择全部文件。 |
g* | 选择以 g 开头的文件。 |
b*.txt | 选择以 b 开头,以 .txt 结尾的文件。 |
Data??? | 选择以 Data 开头,后跟任意三个字符的文件。 |
[abc]* | 选择以 a 或 b 或 c 开头的文件。 |
[[:upper:]]* | 选择以任意一个大小字母开头的文件。 |
BACKUP.[[:digit:]][[:digit:]] | 选择以 BACKUP. 开头,以任意两个数字结尾的文件。 |
*[![:lower:]] | 选择不以任意小写字母结尾的文件。 |
5. 命令类型
Linux 包含 4 种类型的命令,如下:
- 可执行程序:由 C/C++ 等高级语言编译后生成的二进制可执行程序。
- Shell 内置命令(bulitin):Shell 本身内置的一些命令。
- Shell 函数:集成在 Shell 环境中的 Shell 脚本。
- 别名命令:由用户通过已有命令构建的别名命令。