认识终端

小心

我们日常见到的应用程序大部分都是图形化程序。这些程序有一个图形化界面, 大部分可以直接使用双击 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 组合键打开“运行”界面, 输入 cmdpowershellsh(Git Bash,需要事先安装 Git)打开终端。 使用 cmdpowershellbash 在编写 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.txtdestination.txt 是参数,分别表示源文件和目标文件。

执行脚本

python script.py arg1 arg2

在这个例子中,python 是程序名称,script.py 是要运行的脚本文件,arg1arg2 是传递给脚本的参数。

切换目录

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

命令

作用

备注

cd

改变工作目录

即“Change directory”

ls

列出当前工作目录下的所有文件

即“List”,仅 PowerShell 可用

dir

列出当前工作目录下的所有文件

即“Directory”

man

获取帮助

即“Manual”

nmlc

编译 NML 语言

需要事前安装

相关视频