基本命令#

本节讨论如何通过命令行完成一些基本操作。

登陆/退出系统#

回顾虚拟机的使用教程,通过命令行,可以使用以下命令登陆系统。SSH 通过服务器地址 172.0.0.1 和端口 2222 访问系统中的 cs 账户:

ssh cs@172.0.0.1 -p 2222

退出系统可以使用:

exit

重启/关机#

使用 shutdown 命令可以关闭 Linux 系统。以下命令表示立刻关闭计算机(不加参数 now,则系统将会在 1 分钟后关机):

sudo shutdown now

重启计算机可以使用 reboot 命令。以下命令表示立刻重启计算机:

sudo reboot

reboot 命令等价于 sudo shutdown -r now。其中,参数 now 可以替换成具体时间,比如 sudo shutdown -r +30 表示 30 分钟后重启。

访问路径#

登陆系统后,默认的位置是个人账户目录,也可以通过系统变量 $HOME 查看:

echo $HOME

在 Linux 系统中,该路径也可以使用 ~ 表示,例如 ~/Desktop 表示 /home/cs/Desktop

命令

用途

pwd

显示当前路径

cd ~cd

切换到个人账户目录

cd ..

切换到上级目录 (..)

cd -

切换到前一步目录 - (减号)

定位程序位置#

当我们执行命令时,系统会根据配置好的路径依次在目录中寻找该命令;如果找不到,则会提示 “not found”。可以通过系统变量 PATH 查看修改查找的路径和顺序。

echo $PATH

根据输出可以看出,路径之间用冒号分隔,查询顺序从左到右依次进行。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

在执行 hello 程序时,如果不添加 ./ 前缀,则系统会提示找不到 hello 命令,其原因就是 PATH 并不包含当前目录。如果我们将 hello 程序放到 ~/.local/bin 目录下,则可以通过以下命令,将该路径添加到 PATH 变量中。

export PATH=$HOME/.local/bin:$PATH

使用 which 命令可以定位程序的位置,该命令会在系统路径中查找程序的位置并输出,例如

$ which make
/usr/bin/make

如果不局限系统路径,可以使用 whereis 命令扩大搜索范围。

$ whereis diff
diff: /usr/bin/diff /usr/share/man/man1/diff.1.gz

绝对路径 vs 相对路径#

在 Linux 中定义路径的两种方式:

  • 绝对路径

    绝对路径以根路径 / 开头,依次跟随目录树分支,定位到需要的位置,例如,/usr/bin

  • 相对路径

    相对路径以当前路径开头,. 表示当前目录,.. 表示上一级目录,~ 表示个人账户目录。

在个人账户目录中,执行以下命令都会切换到 /usr/bin 目录,

$ pwd
/home/cs
$ cd /usr/bin
$ pwd
/home/cs
$ cd ../../usr/bin

查看文件系统#

使用第三方工具 tree 可以很方便地浏览文件系统内容,通过以下命令进行安装:

sudo apt install tree

直接使用 tree 命令会递归列出当前路径下所有文件树,通过 -L 指定层级可以指定显示的文件深度:

$ tree -L 1
.
├── Desktop
├── Documents
├── Downloads
├── Music
├── Pictures
├── Public
├── snap
├── Templates
└── Videos

其他一些常用命令也可以实现类似目的:

命令

用途

ls

列出当前目录内容

ls –a

列出当前目录内容,包含 . 开头的隐藏文件

ls -l

以列表形式列出当前目录内容

练习#

  1. 使用 whereis 命令定位 gcc 程序的位置

  2. 显示当前路径

  3. 切换到 /usr/bin 目录

  4. 切换到个人账户目录

  5. 切换到上一级目录

  6. 使用 - 参数切换到前一步目录

  7. 显示当前路径