OS_Lab0_实验报告
Lab0 实验报告
一、思考题
Thinking 0.1
执行命令 cat Untracked.txt 和 cat Stage.txt,对比两次运行的结果,体会 README.txt 两次所处位置的不同
git add
之后README.txt
添加到了暂存区执行命令 cat Modified.txt,观察其结果和第一次执行 add 命令之前的 status 是 否一样,并思考原因。
这两个status不一样,
Untracked.txt
中显示README.txt
是未跟踪的文件(Untracked
).Modified.txt
中显示此时README.txt
是尚未暂存以备提交的变更(Modified
)原因:第一次add以前,新建的
README.txt
不在暂存区,是Untracked
状态.。而随后进行了git add
后变为Staged
状态,git commit
后变为Unmodified
状态,修改后就变为Modified
状态,修改后尚未加入提交。
Thinking 0.2
add the file
对应git add <filename>
文件状态从未跟踪到已暂存,表示将新建文件加入暂存区
stage the file
对应git add <filename>
文件状态从已修改到已暂存,表示将工作区修改后的文件加入暂存区
commit
对应git commit
文件状态从已暂存到未修改,表示将暂存区文件加入本地版本库
Thinking 0.3
git checkout -- print.c
,因为没有将此修改git add
- 首先
git reset HEAD printf.c
将文件在暂存区恢复,再git checkout -- print.c
git rm --cached hello.txt
Thinking 0.4
执行git reset --hard HEAD^
后执行git log
回到版本2
执行git reset --hard <hash1>
后执行git log
回到版本1
执行git reset --hard <hash3>
后执行git log
回到版本3,三个版本重新出现
Thinking 0.5
结果如下图
Thinking 0.6
comand文件内容如下图
result文件内容如下图
test将a赋值1、b赋值2、c赋值a+b为3 后,把c、b、a的值依次存到file1、2、3之中,file1、2、3的内容依次写入file4(“>”是覆盖。”>>”是追加),最后将file4内容写入result。所以result的内容是3、2、1
echo echo Shell Start与echo ‘echo Shell Start’没有区别
echo echo $c>file1与echo ‘echo $c>file1’有区别
前者将’echo $c’字符串重定向到file1文件
后者将’echo $c>file1’字符串输出到终端
二、难点分析
三、实验体会
Lab0实验的学习让我深刻意识到,OS课程的学习不能只对指导书囫囵吞枣,而是应该对Linux、Git、
make等基础知识了熟于心。看似填空形式的实验难度不高,但要想高质量的完成并有所收获,应该做到
以下三点。
- 注重细节
if [ $# -eq 2 ] 的中括号两侧要有空格, sed -n “${n}p” 的$n要用{}确定范围
这些小小的细节如果不主动关注,上机时就会对着报错百思不得其解T_T - 持续自学
指导书中关于Linux命令的介绍由于篇幅限制十分笼统,要想将这些指令运用得出神入化,不仅要
依靠 man 指令,更离不开互联网信息检索。
这次课下实验中嵌套执行Makefile和GCC搜索头文件的实现都离不开自学。 - 加强实践
不能只是对着指导书意念运行shell编程代码,要通过实践来检验自我,提高编程速度。