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编程代码,要通过实践来检验自我,提高编程速度。