Skip to content

Commit 61301c6

Browse files
authored
Merge pull request #11 from FDUCSLG/feature/basic-command-line
feat: add basic cmdline literacy
2 parents 9c53761 + 5d85252 commit 61301c6

File tree

3 files changed

+109
-14
lines changed

3 files changed

+109
-14
lines changed

docs/.vitepress/config/zh.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,14 @@ function sidebarGuide(): DefaultTheme.Sidebar {
8080
{ text: "Make 入门", link: "/tools/intro-make" },
8181
],
8282
},
83-
// {
84-
// text: "Linux & Shell",
85-
// collapsible: true,
86-
// collapsed: false,
87-
// items: [
88-
// { text: "Linux & Shell", link: "/linux-and-shell/linux-and-shell" },
89-
// ],
90-
// },
83+
{
84+
text: "Linux & Shell",
85+
collapsible: true,
86+
collapsed: false,
87+
items: [
88+
{ text: "基本命令行常识", link: "/linux-and-shell/basic-command-line" },
89+
],
90+
},
9191
{ text: "关于 COMP101 项目", link: "/project" },
9292
{ text: "关于我们", link: "/team" },
9393
]
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
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 试图补全路径或者命令。这在路径比较长的时候很有用。

docs/tools/intro-make.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Make 入门
22
> [!note]
33
> 学习这一篇的内容,需要你对以下技能有基本的了解:
4-
> * 命令行的基本运用
4+
> * 命令行的基本运用(请参考[这篇文档](../linux-and-shell/basic-command-line)
55
66

77
随着学习的深入,同学们编写的代码会逐渐需要多个文件的协同工作。而本文介绍的 Make 便是多文件编译的事实标准。它通过一套基于规则匹配的机制,可以允许我们方便地定义一系列编译规则。Make 程序会根据这些规则,自动地找出哪些文件需要重新编译,大大节省编译时间。
@@ -147,33 +147,33 @@ main: main.o utils.o
147147
示例:
148148
```makefile
149149
%.o: %.c
150-
gcc -c $< -o $@
150+
gcc -c $< -o $@
151151
```
152152
等价于:
153153
```makefile
154154
main.o: main.c
155-
gcc -c main.c -o main.o
155+
gcc -c main.c -o main.o
156156
```
157157
#### $^ (所有依赖项)
158158
代表当前规则的**所有**依赖文件,用空格分隔。适用于链接多个对象文件。
159159

160160
示例:
161161
```makefile
162162
main: main.o utils.o
163-
gcc -o $@ $^
163+
gcc -o $@ $^
164164
```
165165
等价于:
166166
```makefile
167167
main: main.o utils.o
168-
gcc -o main main.o utils.o
168+
gcc -o main main.o utils.o
169169
```
170170
#### $* (匹配模式的主干部分)
171171
代表模式匹配的**通配符**部分,即 `%` 所匹配的内容。通常用于处理不同扩展名的文件。
172172

173173
示例:
174174
```makefile
175175
%.o: %.c
176-
gcc -c $< -o $@
176+
gcc -c $< -o $@
177177
```
178178
如果执行 `make main.o`,则这里我们有:
179179

0 commit comments

Comments
 (0)