# 认识终端 ```{caution} 我们日常见到的应用程序大部分都是图形化程序。这些程序有一个图形化界面, 大部分可以直接使用双击 exe 的方式打开。 nmlc 并不具有图形化界面,是一个控制台程序。双击 exe 的方法是绝对不行的, 必须使用终端打开 nmlc。 ``` 编译 GRF 必须使用终端。 可以使用下面的终端速查图查看使用的终端。 ```{mermaid} flowchart TD Start[开始] Start --> OS{操作系统} OS --> Windows Windows --> PowerShell Windows --> CMD Windows --> Git{是否有 Git} Git -->|是|GB[Git Bash] GB -..- Bash OS --> Linux Linux --> Bash & Zsh OS --> MacOS MacOS --> Version{系统版本} Version -->|Catalina 前|Bash Version -->|Catalina 后|Zsh ``` 支持或使用 Bash、Git Bash 与 Zsh 的操作系统通常都附带有 [POSIX 环境](https://zh.wikipedia.org/wiki/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%8E%A5%E5%8F%A3)([百度百科](https://baike.baidu.com/item/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%8E%A5%E5%8F%A3)) 必须的系统工具、组件等。Windows 并没有这些组件。 ## 打开终端 ### Windows 在 Windows 下,你可以通过 Windows+R 组合键打开“运行”界面, 输入 `cmd`、`powershell` 或 `sh`(Git Bash,需要事先安装 Git)打开终端。 使用 `cmd`、`powershell` 或 `bash` 在编写 GRF 时基本没有区别; 推荐使用 PowerShell 或者 Git Bash。 ### MacOS 在 MacOS 下,你可以按 {kbd}`⌘`+{kbd}`空格` 打开搜索,随后输入“Terminal”打开终端。 ### Linux[^basics] 大部分发行版支持使用 {kbd}`Ctrl`+{kbd}`Alt`+{kbd}`T` 打开终端。 [^basics]: ~~这个是基本功吧~~ ## 基本功能 在终端中,我们可以通过输入“程序名称+参数”的方式来执行程序,并传递一些额外的信息给程序。 当我们在终端中输入“程序名称 + 参数”时,终端会先找到指定的程序,然后将参数传递给程序。 参数是程序运行时所需的附加信息或选项,用于调整程序的行为。 程序接收这些参数,并根据参数执行相应的操作。 不同的程序支持的参数不同, 通常可以通过输入 `program_name --help` 来查看该程序支持的参数列表。 ```bash 程序名称 参数1 参数2 ... ``` ### 列出当前目录文件 ```bash # 输入 ls -l # 输出 total 168 drwxr-xr-x 2 jeremy jeremy 4096 Sep 18 21:16 folder-1 drwxr-xr-x 7 jeremy jeremy 4096 Oct 7 21:24 folder-2 ``` 在这个例子中,`ls` 是程序名称,用于列出目录内容,`-l` 是参数,表示以详细列表的格式显示文件信息。 ```{important} CMD 不支持 ls,不过在 CMD 中可以使用 dir 命令列出当前目录下所有文件。 ``` ### 复制文件 ```bash cp source.txt destination.txt ``` 这里 `cp` 是程序名称,用于复制文件,`source.txt` 和 `destination.txt` 是参数,分别表示源文件和目标文件。 ### 执行脚本 ```bash python script.py arg1 arg2 ``` 在这个例子中,`python` 是程序名称,`script.py` 是要运行的脚本文件,`arg1` 和 `arg2` 是传递给脚本的参数。 ### 切换目录 ```bash cd ../ ``` 在这个例子中,`cd` 是程序名称,`../` 是切换的目录。 | 项目 | 意义 | |------|----------------| | .. | 父目录 | | . | 当前目录 | | / | 根目录或分隔符 | ```{note} 在使用命令的时候可以使用 {kbd}`q` 键左边的 {kbd}`tab` 键补全命令,加快打命令的速度。 ``` ```{important} 在 Windows 中切换盘符比较麻烦。PowerShell 支持输入 `cd C:\foo\bar` 直接切换, 但是在 CMD 中则必须使用 `C:` `D:` 这种“盘符+冒号”的格式切换。 Git Bash 则是另一套规则,不同的盘在根目录下。 比如想要切换到 D 盘,就必须使用 `cd /d` 切换(注意不要打错)。 Linux 与 MacOS 由于没有盘符,不需要进行这样的操作。 ``` 假设你把你的工程文件放在 `C:\OpenTTD\GRF\` 目录下,主文件是 `my_grf.nml` ,你可以通过这些步骤编译 GRF: ```bash # 切换到工作目录 cd C:\OpenTTD\GRF # 可选项,使用ls命令来查询当前目录的所有文件 ls # 编译 GRF nmlc my_grf.nml ``` | 命令 | 作用 | 备注 | |--------|----------------------------|----------------------------| | `cd` | 改变工作目录 | 即“Change directory” | | `ls` | 列出当前工作目录下的所有文件 | 即“List”,仅 PowerShell 可用 | | `dir` | 列出当前工作目录下的所有文件 | 即“Directory” | | `man` | 获取帮助 | 即“Manual” | | `nmlc` | 编译 NML 语言 | 需要事前安装 | ## 相关视频 ---