OS_lab0
Lab0 思考题
Thinking 0.1
cat Untracked.txt
和cat Stage.txt
的两次运行结果的不同:前者是未跟踪Untracked files
,后者是要提交(暂存)Changes to be commited
README.txt位置的不同:Untracked.txt处在未跟踪状态,add之后处于暂存状态
cat Modified.txt
:结果与第一次执行add命令之前的status不一样。原因:README.txt现在是已经跟踪的状态,所以不会变成第一次add前的未跟踪状态;但是该文件经过了修改,也没有经过暂存和提交,现在正处于被修改状态,也就是 “尚未暂存以备提交的变更”
Thinking 0.2
add the file
:git add <filename>
stage the file
:git add <filename>
commit
:git commit <filename> -m <message>
Thinking 0.3
1 代码文件 print.c 被错误删除时,应当使用什么命令将其恢复?
删除了工作区的print.c文件,但是版本库里的还在;
git checkout --print.c
可以用版本库里的版本替换工作区里的版本,实现删除的恢复。
2 代码文件 print.c 被错误删除后,执行了
git rm print.c
命令,此时应当使用什么命令将其恢复?
删除了工作区的文件,然后用git rm print.c
将删除放入了暂存区,但是还没有git commit
,也就是说版本库中的文件没有删除,因此仍然可以用git checkout --print.c
来恢复
3 无关文件 hello.txt 已经被添加到暂存区时,如何在不删除此文件的前提下将其移出暂存区
git rm --cached hello.txt
和git reset HEAD --hello.txt
都可以在不删除文件的前提下将文件移出暂存区
Thinking 0.4
git log
结果:提交说明为3的哈希值为commit8230cd2cd5da14dcbd1490effe626c393c8b0610
版本回退后变成下图,变化:提交3消失了
执行
git reset --hard 40566667ae9ba9d28bfe69bcdc983be6313a8711
后,回到版本1回到最新版本
Thinking 0.5
在标准输出输出了first
、output.txt中为两行,第一行是third
第二行是forth
(因为>是覆盖,而>>是追加,third把second给覆盖掉了)
Thinking 0.6
command文件:创建test文件,把
echo ' ' >> test
中间的部分输出到test文件内部。当涉及到参数传递 $ or 重定向 > 时,用单引号''
把要打印的内容括起来,避免歧义。test文件内部:echo后面是打印到result的语句,test实现了a=1,b=2并计算了c=a+b的结果,将cba分别存储在file123后合并至file4,再将file4内容追加到result文件结尾
result文件内部:前10行是test打印的内容,后3行是从file4复制的内容
echo echo Shell Start和echo ‘echo Shell Start’(这里想打反引号但是typora会换成代码行了QAQ),效果有区别,前者输出echo Shell Start,后者输出Shell Start。原因:反引号相当于echo $(echo Shell Start),会将括号内部的echo Shell Start的输出Shell Start,替换至原处,导致语句等同于echo Shell Start。
有区别,前者在test文件里输出echo,后者在test文件中输出为空
难点
1.Bash Shell 语法
对bash shell语法使用不熟练,例如变量的使用在该用{}时没有加,等等,导致程序错误
2.不熟悉实验系统和常用报错
导致出现错误定位很慢,甚至没有办法定位到错误。
3.对指导书里面涉及的内容没有充分理解和准备
chmod在课下没有看懂但是也没有去查资料找,导致课上仍然不会使用chmod
实验体会
这次实验做的非常不好,结束之后很难过,也很迷茫,进行了深刻的反思
最后还是觉得是因为准备不够充分,没有提前看学长博客等等,把可能会考到的都准备好,可能会用到的都练习熟练,导致这次上机炸掉了
体会的话,就是之后得多花时间做充分准备了,不要存侥幸心理觉得自己已经会了