Bash 是 "Bourne Again Shell" 的缩写,Bash Shell 是 Unix/Linux 操作系统常见的命令行界面,这是一个用来与计算机进行交互的工具,可以执行程序和管理文件系统,帮助我们完成所需的任务。
基本上,Bash Shell 相当于 Windows 操作系统的「命令提示符」窗口,我们在 Windows 下达的 MS‑DOS 命令,相当于是在 Linux 的 Bash Shell 界面执行 Linux 命令。
文件系统命令
Linux 文件系统命令是用来处理操作系统文件和目录的相关命令,可以建立目录,复制、移动和删除文件或目录。本章以预设 Linux 发行版 Ubuntu 为例。
pwd 命令:显示当前的工作目录
pwd命令可以显示当前的工作目录(Working Directory),如下所示:
请开启 Windows 终端机启动并进入 Linux 发行版 Ubuntu 和切换至用户目录,然后就可以输入pwd后,按 Enter 键,显示当前的工作目录「/home/devops」,因为预设的登录用户名是devops,如下图所示:
ls 命令:显示文件和目录信息
ls是 list 的缩写,可以显示当前工作目录的文件和目录清单,如下所示:
上述命令可以显示当前工作目录「/home/devops」下的文件和目录清单,test.txt就是前面文章中建立的文本文件,如下图所示:
上述命令只显示文件和目录名清单,我们可以加上-l(小写字母 L),可以显示详细信息,包括权限、拥有者、大小、日期和最后修改日期等信息,如下所示:
上述命令在输入ls后,空一格,再输入-l选项,可以显示当前工作目录「/home/devops」下文件和目录的详细信息,如下图所示:
在ls命令只需加上-a选项,就可以显示完整的文件和目录信息,包含以「.」开头的隐藏文件,如下所示:
如果没有指明路径,预设是显示当前的工作目录,我们也可以自行加上路径选项,显示指定路径的文件和目录信息(如果指定文件名,就是显示此文件的信息),如下所示:
mkdir 命令:建立新目录
mkdir命令可以建立新目录,例如:建立名为Joe的目录,如下所示:
上述命令可以在「/home/devops」目录下,建立名为sean的新目录,如下图所示:
cd 命令:切换目录
cd命令的全名是 Change Directory,可以切换我们建立的sean目录,请注意!目录名区分英文大小写,请输入Sean;不是Sean,如下所示:
上述命令因为当前工作目录是「/home/devops」,可以切换至「/home/devops/sean」目录。我们可以使用「~」代表切换至当前用户的根目录,「..」是回到上一层目录,「.」是当前目录,如下所示:
rm 命令:删除文件
rm命令可以删除之后文件路径的文件。请先使用touch命令建立名为file.txt的文件,如下所示:
上述 Joe 目录是之前使用mkdir命令新增的目录,file.txt是新增的文本文件。我们可以使用rm命令删除file.txt文件(rm *是删除全部文件),如下所示:
上述命令因为当前工作目录是「/home/devops」,可以删除此目录下的file.txt文件。请注意!rm命令没有真的删除文件,只是标记文件空间成为是可用的空间。
rmdir 命令:删除目录
rmdir命令可以删除没有文件的空白目录,之后就是欲删除的目录名,请注意!我们需要将整个目录中的文件都删除后,才能使用rmdir命令来删除空白目录,如下所示:
因为rmdir命令只能删除空白目录,如果需要删除目录下的所有文件和子目录(不是空白目录),请使用sudo rm命令(sudo命令请参阅第 3-1-4 节),如下所示:
上述命令需要使用-rf选项,-r是递归;-f是强制,之后是删除的目录,以此例可以删除名为Demo的目录,在输入用户密码后,就可以递归强制删除目录下的所有文件和子目录。
cp 命令:复制文件与目录
cp命令可以复制指定文件,之后的第 1 个是欲复制的来源文件名;第 2 个是复制新增的目的文件名,可以是不同的文件名。例如:先使用touch命令建立名为file.txt文件后,复制file.txt文件(来源)成为file2.txt文件(目的),如下所示:
$ touch file.txt$ cp file.txt file2.txt
上述命令可以在当前工作目录「/home/devops」之下复制一个新文件,所以共有 2 个文件file.txt和file2.txt,如下图所示:
cp命令不只可以复制至同一个目录,也可以复制至其他目录,如同移动一个新文件至其他目录,请先建立名为Documents目录后,再复制file.txt文件成为Documents目录下的file2.txt,如下所示:
$ mkdir Documents$ cp file.txt Documents/file2.txt
当执行上述cp命令后,我们可以在「/home/devops/Documents」目录新增一个名为file2.txt的文件,如下图所示:
cp命令不只可以复制文件,只需加上-r或-R选项,就可以复制整个目录下的所有文件(包含子目录),例如:首先建立test目录后,在此目录新增test.txt文本文件,然后再建立tmp子目录(即test/tmp),并在此子目录新增test2.txt文件,最后执行cp命令复制test目录至backup目录,如下所示:
$ mkdir test$ touch test/test.txt$ mkdir test/tmp$ touch test/tmp/test2.txt$ cp -r test backup
上述命令因为有-r选项,所以执行结果不只复制test目录的文件,连test/tmp子目录的文件也会一并复制至backup目录。
mv 命令:移动文件或为文件更名
mv命令可以移动指定文件至指定的目录,之后的第 1 个是欲移动的文件名;第 2 个是移动文件的目的地目录,例如:将之前file.txt文件移至「/home/devops/Documents」目录,如下所示:
$ mv file.txt /home/devops/Documents
上述命令可以将文件file.txt移至「/home/devops/Documents」目录,目前在「/home/devops/Documents」目录下共有 2 个文件(file2.txt是cp命令复制的文件),如下图所示:
mv命令除了移动文件至指定目录,如果第 2 个不是目录,而是文件名时,就是为文件更名,例如:将「/home/devops」目录的file2.txt文件更名为file3.txt,如下所示:
find 命令:搜寻文件名
find命令是用来在文件系统搜索指定的文件名,例如:搜索扩展名为.txt的文本文件,如下所示:
$ find /home/devops/Documents -name '*.txt'
上述命令之后是开始搜索的 Documents 目录,-name选项是使用文件名本身进行搜索,在之后的参数字符串*.txt就是模式,可以找出扩展名为.txt的 2 个文件,如下图所示:

如果已经知道文件名,我们可以直接搜索指定文件,例如:搜索文本文件file2.txt,如下所示:
上述命令的「.」是当前目录,可以找到 1 个文件,如下图所示:

我们可以更改命令后第 1 个搜索目录的搜索范围,例如:改在「/」目录进行搜索,如下所示:
$ find / -name 'file.txt'
上述命令的执行结果因为权限不足,可以看到更多目录都不允许搜索,如下图所示:
请注意!因为上述执行结果连 Windows 挂载的硬盘都会搜索,请按 【 Ctrl + C 】 键中断命令的执行。我们可以使用第 3-1-4 节的sudo命令以更大权限来执行find命令,如下所示:
$ sudo find / -name 'file2.txt'
上述命令的执行结果,可以看到不允许搜索的目录已经大幅减少,如下图所示:
df 命令:显示文件系统的磁盘使用状况
df命令可以显示文件系统磁盘的使用状况,如下所示:
上述命令可以显示所有挂载至文件系统的磁盘清单,和各磁盘空间的使用状况,如下图所示:
clear 命令:清空终端机的内容
如果觉得 Windows 终端机的内容有些混乱,我们可以执行clear命令(或cls命令)来清空终端机屏幕的内容,如下所示:
网络与系统信息命令
Linux 网络命令可以查询主机名、IP 地址、连接状态和网络设置,如下所示:
ping 命令:查询连接状态
ping命令可以查询其他主机或 IP 地址的连接状态,例如:百度网站www.baidu.com,如下所示:
上述封包测试不会停止,请按 【 Ctrl + C 】 键结束测试,可以在最后看到统计数据。
hostname 命令:显示主机名或 IP 地址
hostname命令可以显示当前的主机名,如下所示:
上述图例显示主机名就是 Windows 计算机名DESKTOP-JOE。如果需要查询 IP 地址,请加上-I选项或小写英文字母-i,可以显示 IP 地址,如下所示:
ip addr 命令:显示网络接口设置
ip addr命令可以显示当前系统各网络接口设置的详细数据,如下所示:
上述图例显示lo、eth0等接口的详细网络设置,如果针对指定接口,可以加上show命令的接口名,如下所示:
文件下载与压缩命令
我们可以使用 Linux 命令从网站下载文件,并进行 TAR 文件的压缩与解压缩。
wget 命令:从网站下载文件
wget命令可以从网站下载指定文件至 Linux 子系统,我们只需知道文件的 URL 网址,就可以使用此命令来下载文件,如下所示:
$ wget https://fchart.github.io/img/koala.png
上述命令可以从网站下载一个 PNG 图文件,执行ls命令,就可以看到此图文件,如下图所示:

tar 命令:压缩与解压缩 TAR 格式文件
Linux 操作系统使用的文件压缩格式是 TAR,我们可以使用tar命令建立压缩文件并进行解压缩。首先请将「/home/devops/Documents」目录的file.txt和file2.txt两个文件复制到上一层目录,如下所示:
$ cp /home/devops/Documents/*.txt /home/devops/
然后执行ls命令,可以看到复制的.txt文件。现在,我们准备将这 4 个.txt文件建立成 TAR 格式的压缩文件,如下所示:
$ tar -cvzf file.tar.gz *.txt
上述tar命令使用-cvzf选项建立之后的压缩文件file.tar.gz,最后是压缩来源,即当前目录下所有扩展名为.txt的文件,如下图所示:
同一个tar命令也可以解压缩,使用的是-xvzf选项,请使用mkdir命令建立tmp目录后,将file.tar.gz文件复制至此目录,就可以切换至tmp目录来解压缩文件,如下所示:
$ mkdir tmp$ cp file.tar.gz tmp/$ cd tmp/$ tar -xvzf file.tar.gz
上述tar命令可以将压缩文件file.tar.gz解压缩至新建的tmp目录(即当前目录),如下图所示:
sudo 超级用户命令
sudo命令的全名是 Super‑user Do,这是一个权限提升命令,对于登录的用户来说,因为有些命令需要超级用户root才能执行,此时可以使用sudo命令暂时提升登录用户成为超级用户root,来执行之后的 Linux 命令,如下所示:
上述命令的执行结果和单纯ls相同,因为ls命令是显示当前工作目录的文件和目录清单,并不需要使用超级用户来执行。
如果需要使用第 3-1-1 节的find命令搜索「/」目录的整个文件系统,就需要使用sudo才能拥有权限来搜索目录,如下所示:
$ sudo find / -name 'flippy.py'
上述命令的执行结果因为使用sudo,就可以成功执行文件名搜索。在第 3-3 节说明用户与文件权限命令时,部分命令就需要使用sudo来执行 Linux 命令。
3-1-5 关机命令
我们可以使用关机的 Linux 命令shutdown来安全地替 Linux 子系统关机,请注意!此命令需要使用sudo来执行,如下所示:
上述命令的执行结果需要输入用户密码,然后就会关机回到 Windows 提示符的命令行。