认识终端
小心
我们日常见到的应用程序大部分都是图形化程序。这些程序有一个图形化界面, 大部分可以直接使用双击 exe 的方式打开。 nmlc 并不具有图形化界面,是一个控制台程序。双击 exe 的方法是绝对不行的, 必须使用终端打开 nmlc。
编译 GRF 必须使用终端。
可以使用下面的终端速查图查看使用的终端。
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 环境(百度百科) 必须的系统工具、组件等。Windows 并没有这些组件。
打开终端
Windows
在 Windows 下,你可以通过 Windows+R 组合键打开“运行”界面,
输入 cmd、powershell 或 sh(Git Bash,需要事先安装 Git)打开终端。
使用 cmd、powershell 或 bash 在编写 GRF 时基本没有区别;
推荐使用 PowerShell 或者 Git Bash。
MacOS
在 MacOS 下,你可以按 ⌘+空格 打开搜索,随后输入“Terminal”打开终端。
Linux[1]
大部分发行版支持使用 Ctrl+Alt+T 打开终端。
基本功能
在终端中,我们可以通过输入“程序名称+参数”的方式来执行程序,并传递一些额外的信息给程序。
当我们在终端中输入“程序名称 + 参数”时,终端会先找到指定的程序,然后将参数传递给程序。
参数是程序运行时所需的附加信息或选项,用于调整程序的行为。
程序接收这些参数,并根据参数执行相应的操作。
不同的程序支持的参数不同,
通常可以通过输入 program_name --help 来查看该程序支持的参数列表。
程序名称 参数1 参数2 ...
列出当前目录文件
# 输入
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 是参数,表示以详细列表的格式显示文件信息。
重要
CMD 不支持 ls,不过在 CMD 中可以使用 dir 命令列出当前目录下所有文件。
复制文件
cp source.txt destination.txt
这里 cp 是程序名称,用于复制文件,source.txt 和 destination.txt 是参数,分别表示源文件和目标文件。
执行脚本
python script.py arg1 arg2
在这个例子中,python 是程序名称,script.py 是要运行的脚本文件,arg1 和 arg2 是传递给脚本的参数。
切换目录
cd ../
在这个例子中,cd 是程序名称,../ 是切换的目录。
项目 |
意义 |
|---|---|
… |
父目录 |
. |
当前目录 |
/ |
根目录或分隔符 |
备注
在使用命令的时候可以使用 q 键左边的 tab 键补全命令,加快打命令的速度。
重要
在 Windows 中切换盘符比较麻烦。PowerShell 支持输入 cd C:\foo\bar 直接切换,
但是在 CMD 中则必须使用 C: D: 这种“盘符+冒号”的格式切换。
Git Bash 则是另一套规则,不同的盘在根目录下。
比如想要切换到 D 盘,就必须使用 cd /d 切换(注意不要打错)。
Linux 与 MacOS 由于没有盘符,不需要进行这样的操作。
假设你把你的工程文件放在 C:\OpenTTD\GRF\ 目录下,主文件是 my_grf.nml ,你可以通过这些步骤编译 GRF:
# 切换到工作目录
cd C:\OpenTTD\GRF
# 可选项,使用ls命令来查询当前目录的所有文件
ls
# 编译 GRF
nmlc my_grf.nml
命令 |
作用 |
备注 |
|---|---|---|
|
改变工作目录 |
即“Change directory” |
|
列出当前工作目录下的所有文件 |
即“List”,仅 PowerShell 可用 |
|
列出当前工作目录下的所有文件 |
即“Directory” |
|
获取帮助 |
即“Manual” |
|
编译 NML 语言 |
需要事前安装 |