Loading docs/tools/cmd.md +24 −24 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ author: StudyingFather 虽然图形界面能做的事情越来越多,但有很多高阶操作仍然需要使用命令行来解决。 这里将会为大家介绍命令行的一些使用方法。 本页面将简要介绍命令行的一些使用方法。 ## 一些常用命令 Loading @@ -13,41 +13,41 @@ author: StudyingFather - 相对路径:用相对当前路径的位置关系来描述位置。例如当前路径为 `~/folder` ,则 `./a.cpp` 实际上指的就是 `~/folder/a.cpp` 这个文件。 **随着当前路径的变化,相对路径描述的位置也可能发生改变** 。 - 绝对路径:用完整的路径来描述位置。例如 `~/folder/a.cpp` 就是一个绝对路径的例子。 **绝对路径描述的位置不随当前路径的变化而改变** 。 在 Windows/Linux 下,我们用 `.` 代表当前目录, `..` 代表当前目录的父目录。特别地,在 Linux 下,用 `~` 表示用户主目录。 Windows/Linux 用 `.` 代表当前目录, `..` 代表当前目录的父目录。特别地,在 Linux 下,用 `~` 表示用户主目录。 在 Windows/Linux 下,使用 `cd <目录>` 命令可以切换你当前的目录。例如 `cd folder` 会切换到当前目录的 `folder` 子目录, `cd ..` 会切换到当前目录的父目录。 在 Windows/Linux 下,使用 `cd <目录>` 命令可以切换当前的目录。例如, `cd folder` 会切换到当前目录的 `folder` 子目录; `cd ..` 会切换到当前目录的父目录。 在 Windows 下,使用 `dir` 命令可以列出当前目录的文件列表。在 Linux 下,列出文件列表的命令是 `ls` 。 现在我们会切换目录和列出文件了,那如何创建/删除一个目录呢? 在 Windows 下,使用 `md <目录>` 命令创建一个新目录,使用 `rd <目录>` 命令删除一个目录。在 Linux 下,这两个命令分别是 `mkdir` 和 `rmdir` 。需要注意的是, **使用 `rd` 或是 `rmdir` 删除一个目录前,这个目录必须是空的** 。如果想要删除非空目录(和该目录下的所有文件)的话,Linux 下可以执行 `rm -r <目录>` 命令,Windows 下可以执行 `rd /s <目录>` 命令。 在 Windows 下,使用 `md <目录>` 命令创建一个新目录,使用 `rd <目录>` 命令删除一个目录。在 Linux 下,这两个命令分别是 `mkdir` 和 `rmdir` 。 ### 重定向机制 需要注意的是, **使用 `rd` 或是 `rmdir` 删除一个目录前,这个目录必须是空的** 。如果想要删除非空目录(和该目录下的所有文件)的话,Linux 下可以执行 `rm -r <目录>` 命令,Windows 下可以执行 `rd /s <目录>` 命令。 > 我编译了一个程序,它从标准输入读入,并输出到标准输出。然而输入文件和输出文件都很大,这时候能不能想办法把输入重定向到指定的输入文件,输出重定向到指定的输出文件呢? ### 重定向机制 使用如下命令即可做到。 现在我们编译了一个程序,它从标准输入读入,并输出到标准输出。然而输入文件和输出文件都很大,这时候能不能想办法把输入重定向到指定的输入文件,输出重定向到指定的输出文件呢? ```bash command < input > output ``` 当然可以!例如 `./prog < 1.in > 1.out` 这个命令就将让 `prog` 这个程序从当前目录下的 `1.in` 中读入数据,并将程序输出写入到 `1.out` 。 例如, `./prog < 1.in > 1.out` 这个命令就将让 `prog` 这个程序从当前目录下的 `1.in` 中读入数据,并将程序输出写入到 `1.out` 。 事实上,大多数 OJ 都采用了这样的重定向机制。选手提交的程序采用标准输入输出,通过重定向机制,就可以让选手的程序从给定的输入文件读入数据,输出到指定的输出文件,再进行文件比较就可以评测了。 ### 执行程序 对于一个可执行程序或是批处理脚本,我们只需直接输入它的文件名即可执行它。 当然你执行一个文件时,命令行并不会把所有目录下的文件都找一遍。哪些地方会在命令行搜索的范围呢? 对于一个可执行程序或是批处理脚本,只需在命令行里直接输入它的文件名即可执行它。 环境变量 `PATH` 描述了命令行搜索路径的范围,命令行会在 `PATH` 中的路径寻找目标文件。 **对于 Windows 系统,当前目录也在命令行的默认搜索范围内** 。 当然,执行一个文件时,命令行并不会把所有目录下的文件都找一遍。环境变量 `PATH` 描述了命令行搜索路径的范围,命令行会在 `PATH` 中的路径寻找目标文件。 例如 Windows 系统中,输入 `hello` 命令就可以执行当前目录下的 `hello.exe` 。 对于 Windows 系统, **当前目录也在命令行的默认搜索范围内** 。例如 Windows 系统中,输入 `hello` 命令就可以执行当前目录下的 `hello.exe` 。 在 Linux 系统中, **当前目录并不在命令行的默认搜索范围内** ,所以执行当前目录下的 `hello` 程序的命令就变成了 `./hello` 。 ### 总结 上面介绍的用法只是命令行命令的一小部分,还有很多用法没有涉及到,可以通过帮助命令 `help` 来查询这些命令的用法。 上面介绍的用法只是命令行命令的一小部分,还有很多命令没有涉及到。在命令行里输入帮助命令 `help` ,可以查询所有命令以及它们的用途。 下面给出 Windows 系统和 Linux 系统的命令对照表,以供参考。 Loading @@ -67,15 +67,15 @@ author: StudyingFather ### 命令行编译 在命令行下输入 `g++ a.cpp` 就可以编译 `a.cpp` 这个文件了(如果您使用的是 Windows 系统,记得把编译器所在目录加入到 `PATH` 中)。 在命令行下输入 `g++ a.cpp` 就可以编译 `a.cpp` 这个文件了(Windows 系统需提前把编译器所在目录加入到 `PATH` 中)。 在编译过程中,我们可以加入一些编译选项: 编译过程中可以加入一些编译选项: - `-o <文件名>` :指定编译器输出可执行文件的文件名; - `-g` :在编译时添加调试信息(使用 gdb 调试时需要); - `-Wall` :显示所有编译警告信息; - `-O1` , `-O2` , `-O3` :对编译的程序进行优化,数字越大表示采用的优化手段越多(开启优化会影响使用 gdb 调试); - `-DDEBUG` :在编译时定义 `DEBUG` 符号(符号可以随意更换,例如 `-DONLINE_JUDGE` 定义了 `ONLINE_JUDGE` 符号); - `-o <文件名>` :指定编译器输出可执行文件的文件名。 - `-g` :在编译时添加调试信息(使用 gdb 调试时需要)。 - `-Wall` :显示所有编译警告信息。 - `-O1` , `-O2` , `-O3` :对编译的程序进行优化,数字越大表示采用的优化手段越多(开启优化会影响使用 gdb 调试)。 - `-DDEBUG` :在编译时定义 `DEBUG` 符号(符号可以随意更换,例如 `-DONLINE_JUDGE` 定义了 `ONLINE_JUDGE` 符号)。 - `-UDEBUG` :在编译时取消定义 `DEBUG` 符号。 ### 命令行调试 Loading @@ -84,7 +84,7 @@ author: StudyingFather 执行 `gdb a` 就可以调试 `a` 程序。 接下来介绍几个 gdb 调试的常用命令(大多数命令可以缩写,用命令开头的若干个字母就可以代表该命令): 以下是几个 gdb 调试的常用命令(大多数命令可以缩写,用命令开头的若干个字母就可以代表该命令): - `list` ( `l` ):列出程序源代码,如 `l main` 指定列出 `main` 函数附近的若干行代码。 - `break` ( `b` ):设置断点,如 `b main` 表示在 `main` 函数处设置断点。 Loading Loading
docs/tools/cmd.md +24 −24 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ author: StudyingFather 虽然图形界面能做的事情越来越多,但有很多高阶操作仍然需要使用命令行来解决。 这里将会为大家介绍命令行的一些使用方法。 本页面将简要介绍命令行的一些使用方法。 ## 一些常用命令 Loading @@ -13,41 +13,41 @@ author: StudyingFather - 相对路径:用相对当前路径的位置关系来描述位置。例如当前路径为 `~/folder` ,则 `./a.cpp` 实际上指的就是 `~/folder/a.cpp` 这个文件。 **随着当前路径的变化,相对路径描述的位置也可能发生改变** 。 - 绝对路径:用完整的路径来描述位置。例如 `~/folder/a.cpp` 就是一个绝对路径的例子。 **绝对路径描述的位置不随当前路径的变化而改变** 。 在 Windows/Linux 下,我们用 `.` 代表当前目录, `..` 代表当前目录的父目录。特别地,在 Linux 下,用 `~` 表示用户主目录。 Windows/Linux 用 `.` 代表当前目录, `..` 代表当前目录的父目录。特别地,在 Linux 下,用 `~` 表示用户主目录。 在 Windows/Linux 下,使用 `cd <目录>` 命令可以切换你当前的目录。例如 `cd folder` 会切换到当前目录的 `folder` 子目录, `cd ..` 会切换到当前目录的父目录。 在 Windows/Linux 下,使用 `cd <目录>` 命令可以切换当前的目录。例如, `cd folder` 会切换到当前目录的 `folder` 子目录; `cd ..` 会切换到当前目录的父目录。 在 Windows 下,使用 `dir` 命令可以列出当前目录的文件列表。在 Linux 下,列出文件列表的命令是 `ls` 。 现在我们会切换目录和列出文件了,那如何创建/删除一个目录呢? 在 Windows 下,使用 `md <目录>` 命令创建一个新目录,使用 `rd <目录>` 命令删除一个目录。在 Linux 下,这两个命令分别是 `mkdir` 和 `rmdir` 。需要注意的是, **使用 `rd` 或是 `rmdir` 删除一个目录前,这个目录必须是空的** 。如果想要删除非空目录(和该目录下的所有文件)的话,Linux 下可以执行 `rm -r <目录>` 命令,Windows 下可以执行 `rd /s <目录>` 命令。 在 Windows 下,使用 `md <目录>` 命令创建一个新目录,使用 `rd <目录>` 命令删除一个目录。在 Linux 下,这两个命令分别是 `mkdir` 和 `rmdir` 。 ### 重定向机制 需要注意的是, **使用 `rd` 或是 `rmdir` 删除一个目录前,这个目录必须是空的** 。如果想要删除非空目录(和该目录下的所有文件)的话,Linux 下可以执行 `rm -r <目录>` 命令,Windows 下可以执行 `rd /s <目录>` 命令。 > 我编译了一个程序,它从标准输入读入,并输出到标准输出。然而输入文件和输出文件都很大,这时候能不能想办法把输入重定向到指定的输入文件,输出重定向到指定的输出文件呢? ### 重定向机制 使用如下命令即可做到。 现在我们编译了一个程序,它从标准输入读入,并输出到标准输出。然而输入文件和输出文件都很大,这时候能不能想办法把输入重定向到指定的输入文件,输出重定向到指定的输出文件呢? ```bash command < input > output ``` 当然可以!例如 `./prog < 1.in > 1.out` 这个命令就将让 `prog` 这个程序从当前目录下的 `1.in` 中读入数据,并将程序输出写入到 `1.out` 。 例如, `./prog < 1.in > 1.out` 这个命令就将让 `prog` 这个程序从当前目录下的 `1.in` 中读入数据,并将程序输出写入到 `1.out` 。 事实上,大多数 OJ 都采用了这样的重定向机制。选手提交的程序采用标准输入输出,通过重定向机制,就可以让选手的程序从给定的输入文件读入数据,输出到指定的输出文件,再进行文件比较就可以评测了。 ### 执行程序 对于一个可执行程序或是批处理脚本,我们只需直接输入它的文件名即可执行它。 当然你执行一个文件时,命令行并不会把所有目录下的文件都找一遍。哪些地方会在命令行搜索的范围呢? 对于一个可执行程序或是批处理脚本,只需在命令行里直接输入它的文件名即可执行它。 环境变量 `PATH` 描述了命令行搜索路径的范围,命令行会在 `PATH` 中的路径寻找目标文件。 **对于 Windows 系统,当前目录也在命令行的默认搜索范围内** 。 当然,执行一个文件时,命令行并不会把所有目录下的文件都找一遍。环境变量 `PATH` 描述了命令行搜索路径的范围,命令行会在 `PATH` 中的路径寻找目标文件。 例如 Windows 系统中,输入 `hello` 命令就可以执行当前目录下的 `hello.exe` 。 对于 Windows 系统, **当前目录也在命令行的默认搜索范围内** 。例如 Windows 系统中,输入 `hello` 命令就可以执行当前目录下的 `hello.exe` 。 在 Linux 系统中, **当前目录并不在命令行的默认搜索范围内** ,所以执行当前目录下的 `hello` 程序的命令就变成了 `./hello` 。 ### 总结 上面介绍的用法只是命令行命令的一小部分,还有很多用法没有涉及到,可以通过帮助命令 `help` 来查询这些命令的用法。 上面介绍的用法只是命令行命令的一小部分,还有很多命令没有涉及到。在命令行里输入帮助命令 `help` ,可以查询所有命令以及它们的用途。 下面给出 Windows 系统和 Linux 系统的命令对照表,以供参考。 Loading @@ -67,15 +67,15 @@ author: StudyingFather ### 命令行编译 在命令行下输入 `g++ a.cpp` 就可以编译 `a.cpp` 这个文件了(如果您使用的是 Windows 系统,记得把编译器所在目录加入到 `PATH` 中)。 在命令行下输入 `g++ a.cpp` 就可以编译 `a.cpp` 这个文件了(Windows 系统需提前把编译器所在目录加入到 `PATH` 中)。 在编译过程中,我们可以加入一些编译选项: 编译过程中可以加入一些编译选项: - `-o <文件名>` :指定编译器输出可执行文件的文件名; - `-g` :在编译时添加调试信息(使用 gdb 调试时需要); - `-Wall` :显示所有编译警告信息; - `-O1` , `-O2` , `-O3` :对编译的程序进行优化,数字越大表示采用的优化手段越多(开启优化会影响使用 gdb 调试); - `-DDEBUG` :在编译时定义 `DEBUG` 符号(符号可以随意更换,例如 `-DONLINE_JUDGE` 定义了 `ONLINE_JUDGE` 符号); - `-o <文件名>` :指定编译器输出可执行文件的文件名。 - `-g` :在编译时添加调试信息(使用 gdb 调试时需要)。 - `-Wall` :显示所有编译警告信息。 - `-O1` , `-O2` , `-O3` :对编译的程序进行优化,数字越大表示采用的优化手段越多(开启优化会影响使用 gdb 调试)。 - `-DDEBUG` :在编译时定义 `DEBUG` 符号(符号可以随意更换,例如 `-DONLINE_JUDGE` 定义了 `ONLINE_JUDGE` 符号)。 - `-UDEBUG` :在编译时取消定义 `DEBUG` 符号。 ### 命令行调试 Loading @@ -84,7 +84,7 @@ author: StudyingFather 执行 `gdb a` 就可以调试 `a` 程序。 接下来介绍几个 gdb 调试的常用命令(大多数命令可以缩写,用命令开头的若干个字母就可以代表该命令): 以下是几个 gdb 调试的常用命令(大多数命令可以缩写,用命令开头的若干个字母就可以代表该命令): - `list` ( `l` ):列出程序源代码,如 `l main` 指定列出 `main` 函数附近的若干行代码。 - `break` ( `b` ):设置断点,如 `b main` 表示在 `main` 函数处设置断点。 Loading