|
| 1 | +# 基本命令行常识 |
| 2 | + |
| 3 | +这篇文章是适用所有系统的基本命令行常识。 |
| 4 | + |
| 5 | +## 什么是命令行? |
| 6 | +命令行界面(Command Line Interface,CLI)是一种通过输入文本命令与计算机交互的方式,不同于图形用户界面(GUI)的点击操作。命令行提供了更精确、更强大的控制能力,是开发者的重要工具。 |
| 7 | + |
| 8 | + |
| 9 | +命令行程序运行在**终端模拟器**(Terminal Emulator)中,它们的功能相当于是模拟了上一个时代的终端,并为你提供一套帮助你键入、修改、运行命令的功能。 |
| 10 | + |
| 11 | +### 在不同系统中打开命令行(终端) |
| 12 | +#### Windows |
| 13 | + - 按下 Win+R,输入 cmd 或 powershell,按回车 |
| 14 | + - 或在开始菜单搜索"命令提示符"或"PowerShell" |
| 15 | + |
| 16 | + |
| 17 | +#### macOS |
| 18 | + - 打开 Applications > Utilities > Terminal |
| 19 | + - 或使用 Spotlight (Cmd+Space),搜索 "Terminal" |
| 20 | + |
| 21 | +#### Linux |
| 22 | + - 在大多数桌面环境中,通常按 Ctrl+Alt+T 快捷键就可以呼出终端模拟器 |
| 23 | + - 或在应用程序菜单中找到"终端"或"Terminal" |
| 24 | + |
| 25 | +## 运行程序 |
| 26 | +命令行中运行程序的基本语法是输入程序名称,然后跟上需要的参数。 |
| 27 | + |
| 28 | +打开终端后,**壳程序**(Shell)就已经在运行了。这一程序就本质而言,和任何其他的程序并无分别。它主要的功能是接受你给出的命令,将它的一些特殊语法予以解释之后,再帮你执行对应的程序。 |
| 29 | + |
| 30 | +例如,在 Linux 系统上,打开终端之后,你应该看到类似这样的内容: |
| 31 | + |
| 32 | +```shell |
| 33 | +user@hostname:~$ |
| 34 | +``` |
| 35 | + |
| 36 | +在 Windows 系统上,则是: |
| 37 | +``` |
| 38 | +C:\Your\Path> |
| 39 | +``` |
| 40 | + |
| 41 | +这就是 Shell 的**提示符**。它告诉你,可以在这里键入命令了。 |
| 42 | + |
| 43 | +> [!NOTE]记号约定 |
| 44 | +> 在很多网站上,会使用 `$` 和 `>` 符号来代指提示符。通常,`$` 符号代表命令适合 Linux 或者其他 Unix-like 系统,而 `>` 符号代表命令适合 Windows。 |
| 45 | +> 因此,不要将这些符号认为是命令的一部分。 |
| 46 | +
|
| 47 | + |
| 48 | +> [!WARNING]不要轻易复制网上的命令 |
| 49 | +> **除非你知道自己在做什么,否则不要直接复制粘贴网上的命令到你的终端中!** |
| 50 | +> |
| 51 | +> 这是因为,它们可能不适合你所使用的环境,或者有需要修改的内容。更危险的,它们也可能包含恶意的命令。 |
| 52 | +
|
| 53 | +### PATH 环境变量 |
| 54 | +PATH 是一个环境变量,它告诉系统在哪里寻找可执行程序。为了保护安全,大多数系统在接受到命令时,都只会搜索这些目录来寻找有没有对应的程序。因此,你会常常需要修改这个变量,来告诉系统你的软件安装在哪里。 |
| 55 | + |
| 56 | +如果你希望运行当前目录的文件。通常,需要使用相对寻址方法。也就是,使用 `./program` 而不是直接键入 `program`。 |
| 57 | + |
| 58 | +- **查看当前PATH**: |
| 59 | + - Windows: `echo %PATH%` |
| 60 | + - macOS/Linux: `echo $PATH` |
| 61 | + |
| 62 | +- **临时添加路径到PATH**: |
| 63 | + - Windows: `set PATH=%PATH%;C:\your\new\path` |
| 64 | + - macOS/Linux: `export PATH=$PATH:/your/new/path` |
| 65 | + |
| 66 | +- **永久设置PATH**: |
| 67 | + - Windows: 通过系统属性 > 环境变量设置。可以在 Windows 搜索中(按 Windows 徽标键呼出)搜索 “environment variables” 找到这个命令。 |
| 68 | + - macOS: 在 `~/.bash_profile` 或 `~/.zshrc` 添加 export 命令。 |
| 69 | + - Linux: 在 `~/.bashrc` 或相应的 Shell 配置文件中添加 export 命令。 |
| 70 | + |
| 71 | +> [!NOTE] 不同的 Shell 有不同的语法 |
| 72 | +> Linux 和 macOS 用户很可能并不会使用默认的 Shell。这时,它们的变量设置语法也可能不同。因此,请务必查阅你所用的 Shell 的文档。 |
| 73 | +### 常见参数语法 |
| 74 | +大部分程序的命令行参数通常有以下几种形式: |
| 75 | + |
| 76 | +- **短参数**: 单个字母前加单个连字符,如 `-a`。可以组合使用,如 `-abc` 等同于 `-a -b -c` |
| 77 | + |
| 78 | +- **长参数**: 完整单词前加双连字符,如 `--help`。通常后跟等号和值,如 `--file=document.txt` |
| 79 | + |
| 80 | +- **位置参数**: 不带标识符的参数,按位置解释,如 `cp source.txt destination.txt` |
| 81 | + |
| 82 | +- **示例**: |
| 83 | + ``` |
| 84 | + $ ls -la # 列出所有文件详细信息 |
| 85 | + $ grep --color=auto word file.txt # 搜索文件中的单词并高亮显示 |
| 86 | + $ python script.py arg1 arg2 # 运行Python脚本并传递两个参数 |
| 87 | + ``` |
| 88 | + |
| 89 | +此外,虽然并非一定如此,但许多程序会接受 `-h` 或者 `--help` 参数,并打印自己的帮助信息。 |
| 90 | + |
| 91 | +## 实用功能 |
| 92 | +大多数终端模拟器还提供了一系列实用功能来帮助你更快地编辑命令。例如: |
| 93 | + |
| 94 | +- 按上箭头键可以依次调出历史中键入过的命令。 |
| 95 | +- 按 <kbd>Tab</kbd> 键可以让 Shell 试图补全路径或者命令。这在路径比较长的时候很有用。 |
0 commit comments