OS-Lab0总结
Linux 存活指南
若想使用课程组的 web 终端进行工作,则必须学会一些基础的 linux 命令行指令。
很多同学(包括我)在此之前都没怎么接触过命令行。稍稍总结了一下能帮助我们在命令行中活下去的指令:
- cd:进入工作目录。
- grep:在文件中查找字符串。我通常的使用方法是
grep -r "要寻找的内容" .
,会递归地查找当前目录下所有文件。 - find:在指定目录下查找文件和目录。我通常的使用方法是
find -name 要寻找的名字
。 - mkdir:创建文件夹。
- touch:更新文件时间戳。不过一般地用法是使用此指令来创建文件。
- rm:删除文件。删除目录时要加上
-r
参数。 - ls:列出当前目录下所有文件。
- cp:复制文件。
- mv:移动文件。
以上应当是最常用的几条指令了。记住这几条指令可以初步拥有在命令行中工作的能力。
每条指令都可以附带额外的参数来实现相应的功能。若想查看一条指令的详细使用方法,可以输入 man 指令
或 指令 --help
。
此外使用 TAB 键可以快速补全指令(文件名),当可以补全的选项不唯一时,快速双击 TAB 可以查看候补的补全项。
使用上下键可以快速切换历史指令。
注意,在命令行中使用鼠标拖动选择文本时会自动复制文本。
在命令行中一些 ctrl + ...
的行为有特殊的含义:
ctrl + C
:终止当前程序。跑出很恐怖的循环时直接毙掉就行了。ctrl + Z
:挂起当前程序。一开始会习惯性按撤回按出ctrl + Z
挂起当前程序。在挂起时会提供挂起编号。在误挂时使用fg n
即可恢复程序(n
即为挂起编号)。ctrl + D
:终止输入。可以简单地理解为EOF
。ctrl + L
:清屏。这个真的很好用!
vim 存活指南
常用的编辑器是 vim。一开始用着很不习惯,但是在逐渐适应了之后编辑效率直线上升。
使用 vim 打开文件: vim 文件名
或 vi 文件名
。
在刚进入文件时,处于 Normal
模式。在 Normal
模式下各个按键都有其独特的涵义。
常用的控制指令:
i
:进入插入模式。在插入模式下按ESC
回到Normal
模式。a
:进入插入模式,不过是在光标之后进行插入。x
:删除当前光标处的字符。:wq
:保存并退出。(:w
是保存,:q
是退出)dd
:删除当前行,并将删除的行保存到剪切板。yy
:复制一行内容到剪切板。p
:粘贴剪切板(在当前位置之后)。P
:粘贴剪切板(在当前位置之前)。G
:移动至最后一行。gg
:移动至第一行。hjkl
:移动光标,和←↓↑→
一样。
以上这些足够让你在 vim
中挣扎着活下去了。但是这远远没有发挥出 vim
的威力。
以下是一些进阶命令:
o
:在当前行后插入一个新行。O
:在当前行前插入一个新行。0
:移动光标到行首。^
:移动光标到本行第一个非空白字符的位置。$
:移动光标到本行行尾。g_
:移动光标到本行最后一个非空白字符的位置。/匹配内容
:在文件内部搜索匹配的内容,高亮显示匹配到的内容并将光标移动到匹配的地方。若有多个匹配,则可以按n
来切换到下一个匹配到内容的地方。。u
:撤销一次操作。ctrl + r
:撤销一次撤销操作。
一些简单的进阶操作:
使用数字键来快速编辑文本:
可以在命令前添加数字键代表执行该命令多少次。
例如:
输入 5yy
代表粘贴 5 行到剪切板。
输入 10dd
代表删除十行内容。等等。
如果你希望学习更多、更详细有关 vim
的知识,我推荐以下网站:简明 VIM 练级攻略
使用GCC
gcc 是编译 C 语言文件的不二之选。
C 语言的编译过程包括四步:预处理、编译、汇编、链接。
预处理自不多说。编译是将代码转换为汇编代码的过程。汇编是将汇编代码转换为机器码的过程。链接是将多个汇编文件以及所需的库文件链接成最终的可执行文件。
gcc 的用法:gcc [options] file...
。
常用的参数如下所示:
-E
:只进行预处理,不进行编译、汇编、链接。-S
:只编译,而不汇编和链接。这将产生一个可阅读的汇编代码。-c
;只编译、汇编,而不链接。-o <name>
:指定输出文件的名字。-I<path>
:将路径添加到头文件搜索路径中。-Wall
:意思是warn all
,产生尽可能多的警告信息。-Werror
:将所有警告当做错误处理。这有助于你不得不消除所有警告。
比如说,我们想编译 hello.c
文件和 world.c
文件,将输出文件命名为 hello_world
,需要用的指令可能是:gcc -Wall -o hello_world hello.c world.c
MAKEFILE 生存指南
简易生存指南:
Makefile
的格式如下:
1 | target: dependencies |
在运行 target
的指令前会先构建依赖(先执行 dependencies
中的 target
)。之后依次运行 command1, command2, ...
。
在命令行中输入 make target
即可运行对应的命令。
当在命令行中输入 make
不附带参数时,会默认构建第一个 target
。
git 生存指南
git 是神!我将为你介绍我们的道标和救助:git 先生:
git 是我们进行版本控制的利器。
存活的三条最低限度指令:git add .
,git commit -m "comment"
,git push
在 git 中,分为工作区、暂存区和 Git 目录。
基本的 git 工作流程如下:
- 在工作区中修改文件。
- 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
- 提交更新,找到暂存区的文件,将修改永久性存储到 Git 目录。
git add .
的意思是将当前目录的所有修改添加到暂存区。这通常不是个好习惯,不过对于新手而言是很容易上手的。
git commit
的含义是将暂存区内容添加到本地仓库。
git push
的意思是将本地分支推送至远程仓库。
学习更详细的 git
操作:Git Book
赞美 git!