实验报告
思考题
Thinking 0.1
文本内容如下图:
-
刚刚创建文件后,文件处于未跟踪状态,即
Untracked
。 -
文件被
git add
之后,被建立跟踪并且进入Staged
状态。 -
当文件被
git commit
后,进入未修改状态Unmodified
,若增加修改,则变为Modified
状态。
因此结果并不一样。因为第一次add之前,文件尚未被跟踪,文件作出修改也仍会处于Untracked
状态。
而在add与commit之后,文件被跟踪,提交过后的修改会被记录为Modified
。
Thinking 0.2
add the file
对应git add
(第一次add文件)
stage the file
对应git add
(已跟踪的文件经过修改后进行的add,添加到暂存区)
commit
对应git commit
(把暂存区里的内容commit)
Thinking 0.3
代码文件print.c被错误删除时,应当使用什么命令将其恢复?
应当使用git restore print.c
print.c仍然在暂存区,只是在工作区被删除,只需将工作区恢复到暂存区状态即可。
代码文件print.c被错误删除后,执行了
git rm print.c
命令,此时应当 使用什么命令将其恢复?
应当先后使用git reset HEAD print.c
与git restore print.c
因为执行了git rm print.c
,暂存区已被改动,所以需要先恢复暂存区的内容。
无关文件hello.txt已经被添加到暂存区时,如何在不删除此文件的前提下 将其移出暂存区?
应当使用git rm -cached hello.txt
Thinking 0.4
git log
结果如下图:
版本回退后git log
结果如下图:
版本切换的结果:
可以看出git reset --hard HEAD^
执行后,git log
结果并不是1-2-3-2,而是直接变为1-2
git reset --hard <hash>
对于版本的控制也并不改变目录树,而是在原有的目录树上切换结点。
Thinking 0.5
运行结果如下:
>
的重定向是覆盖,而>>
的重定向是追加。
Thinking 0.6
command内容为:
result内容为:
解释说明:
为了原样输出test,command每一行的内容为:
echo ’ Content
’ » test (第一行是>)
其中单引号的目的是保证原样输出,不触发文本中的任何$符号与>符号
result的内容有两部分,
一是test运行的输出结果会重定向到result,
二是test文件本身也有重定向到result的代码
思考问题:
若把echo echo Shell Start
的echo Shell Start
用反引号引起来
则会将反引号内指令的运算结果变为一个字符串"Shell Start"
最终整条指令结果为Shell Start
而echo echo Shell Start
的结果是echo Shell Start
echo echo $c>file1
则同理,加上反引号后指令会输出3
而不加反引号应输出echo $c>file1,结果不同。
难点分析
Lab0作为大家走向OS的过渡课程,其思维难度不高,重难点在于对各种指令的运用。
如sed awk grep等方法的运用,单引号、双引号与反引号的灵活使用等等
实验体会
目前尚未进行上机的限时测试,而日常实验的训练,很像我第一次搭建OO评测机时,一点点探索与学习的过程。
感性的话不必多说,但是to be honest,
OS的lab0相较于CO的P0-P2以及OO的U1,已然是非常温和了。