OS_Lab0_实验报告
PS:该实验报告作为个人感悟将同步至我的个人博客网站
一.思考题
Thinking 0.1
1 |
|
README.txt的不同:
1.用 touch 创建时,README.txt 仅仅存在于硬盘目录中。Git 知道这里多了一个文件,但 Git 尚未接管它的版本控制,因此把它标记为 Untracked files。
2.执行git add后,README.txt 的当前快照被复制到了暂存区。Git 开始追踪这个文件,并将其标记为 new file。
catModified.txt其结果和第一次执行add命令之前的status不一样,第一次显示的是Untracked files,第二次显示的是Changes not staged for commit。这种差异是由Git 的追踪机制决定的。
Thinking 0.2
add the file:git add
stage the file:git add
commit:git commit
Thinking 0.3
1.git checkout – print.c
||git restore print.c
2.git reset HEAD print.c$$
git checkout HEAD – print.c
3.git reset HEAD hello.txt
Thinking 0.4
1.第三次提交的哈希值为836a01eeb8fd9cda9fdbac333fdd91f5d6e196e5
2.git reset --hard HEAD^后只有第一次和第二次的提交
3.git reset --hard <‘hash’>后只剩第二次提交的哈希值
4.再次执行git reset --hard <‘hash’>又回到了原先版本
Thinking 0.5
1.终端上输出first
2.自动在当前目录创建output.txt文件并且往其中加入了second
3.third覆盖了second,output.txt文件中只有third
4.forth追加到了third的下一行
Thinking 0.6
command文件:
1 | #!/bin/bash |
result文件:
1 | Shell Start... |
思考题:
- echo echo Shell Start 会在屏幕上输出echo Shell Start
- ehco 'echo Shell Start’会输出Shell Start,因为反引号代表命令替换,会在一个子Shell中优先被执行
- echo echo c转移到file1文件中
- echo 'echo c的值转移到file1中,但是对file1进行echo操作会输出空行,file1的内容被修改为3
二.难点分析
lab0作为OS的起点,课下实验主要和命令行操作有关。难点主要有两个,一是Makefile的构建,二是命令的实现。
作为一个对于shell等命令行0基础的小白,在Makefile的构建部分,会感觉到无从下手,摸不清Makefile写的顺序,难以理解它运行的底层逻辑,但是,后来通过练习发现,其实Makefile主要是以倒序为主,多练还是能大致掌握它的规则,对于命令的实现,主要是很难记得不同指令的格式,像上学期的co一样,需要不断查看指导书,不断使用man指令来学习对于某个指令的使用技巧,还有就是git部分,初学其实感觉很繁琐,因为git尤其是与reset,restore相关的部分,一次操作可能会影响全局,就像下象棋一样,每走一步要想三步,git同样如此,每个操作会带来对后续操作的巨大影响。
三.实验体会
体会与难点对应,对于Makefile的体会,我认为这种功能性的文件,尤其是为便利性服务的(其实也包括bash,shell)都是以练为主,多用自然就能熟悉,就像我的某位大佬室友,将笔记本装成了Linux系统,天天写命令行,这次Lab0不到一个小时就全部写完了,所以这次实验我感觉其实不涉及到什么灵感上的问题,不涉及到智商,主要是看课下作业的完成情况,自己完成课下,那么课上exam部分肯定没问题,对命令行再理解深刻一些,便能完成extra。
还有一个惨痛的教训,指导书上的思考题一定要在第一遍看的时候就思考出答案,指导书上说读者课下自行查找的内容一定要去看,因为很可能extra就出这些内容,这一次就是awk指令,我没有自行学习,导致考试时无从下手,翻指导书也看不出来什么。哎!苦也苦也。




