# 命令行

- 本节贡献者: {{姚家园}}、{{田冬冬}}
- 最近更新日期: 2021-03-01
- 预计花费时间: 20 分钟

---

## 命令行与图形界面

地震学科研中，大部分时间使用的是命令行界面（**CLI**, **C**ommand **L**ine **I**nterface），
有时也使用图形界面（**GUI**, **G**raphical **U**ser **I**nterface）。
命令行基本以操作键盘为主，图形界面一般同时操作鼠标和键盘。图形界面上手简单，
各种常用功能显式可见，但是推荐在日常科研中使用和掌握命令行，原因如下：

- 命令行更加高效。操作键盘比在键盘和鼠标之间来回切换更快
- 命令行操作可编写成脚本，并重复使用，而图形界面下操作重复的时间成本较高
- 命令行有时是唯一的选择。例如，登录远程服务器时，很少有图形化界面可供使用
- 图形界面占用更多的系统资源

近几年，一些图形界面工具发展迅速，有时使用图形界面会更方便。例如，[Visual Studio Code](https://code.visualstudio.com/)
是当前最流行的图形界面文本编辑器之一，使用其进行编程或编辑文本十分高效。

## 终端

命令行一般需使用终端（Terminal）输入指令。日常使用的终端更确切的称谓应该是
终端模拟器（Terminal Emulator）。用户可以在桌面或菜单栏中找到并点击
“Terminal” 图标以启动终端，然后输入命令并按下 {kbd}`Enter` 键即可执行相应的命令:

```
# 使用 echo 命令输出 Hello World~
$ echo "Hello World~"

# 使用 exit 命令退出终端
$ exit
```

## Shell

从终端程序输入的指令，会被一个称为 Shell（壳）的程序接收，并进一步交给系统执行。
几乎所有的 Linux 发行版都提供了一个叫 Bash 的 Shell，此外还有 Zsh、csh、ksh 等 Shell。
熟悉 Linux 系统之后，推荐参考[《Zsh 及其配置实践经验》](/best-practices/zsh) 安装和使用 Zsh。

打开终端后，通常会看到类似如下 Shell 提示符:

```
[seismo-learn@earth ~] $
```

上例中的提示符由 seismo-learn（用户名）、@ 符号、earth（主机名）、~（表示家目录）
以及 \$ 美元符号组成。在不同的 Linux 发行版或不同的用户设置下，该提示符的样式有所不同。

接着就可以在终端中输入各种命令，Shell 会获取命令并交给系统执行:

```
# 查看变量 SHELL 的值，即当前 Shell 程序的名字
[seismo-learn@earth ~] $ echo $SHELL
/bin/bash
```

为了简洁，本教程中的所有命令行只使用 `$` 符号表示 Shell 提示符。因而上面的示例
在本教程中会写作:

```
# 查看变量 SHELL 的值，即当前 Shell 程序的名字
$ echo $SHELL
/bin/bash
```

其中，以 `#` 符号开头的行为注释行，用于解释接下来的命令，用户无需输入。
以 `$` 符号开头的行为命令行，用户需要在终端中键入该命令以执行。
不以 `#` 符号和 `$` 符号开头的行，则为命令的输出信息（例如 `/bin/bash`）。

:::{tip}
1. 使用向上、向下箭头按键可以获取之前输入的命令
2. 按住鼠标左键并拖动选中文本，或直接双击一个单词，就可以复制选中的文本或单词，
   随后按下鼠标中键，就可以将文本粘贴到光标所在的位置
3. 输入命令或路径时按下 {kbd}`Tab` 键可自动补全
:::
