BUAA-OS-2023-Lab0-Report
BUAA-OS-2023-Lab0-Report
写这一篇的时候还没准备要开博客,所以也就没想就直接截图了
算了盒了就盒了吧
Thinking 0.1
git中的status信息提示- 工作区、暂存区与文件树
首先使用git checkout -b learnGit,在本地创建并检出一个新的分支 然后再根据Thinking中给出的要求对README.txt文件进行一系列操作,并在操作后进行提交

然后观察目录中的Untracked.txt、Stage.txt,其区别在于把README.txt移动到了暂存区,git显示的说明不同

提交后再次修改文件,最终的Modified.txt内容如下:

-
add前,README.txt文件不处于仓库跟踪范围内,在“未跟踪的文件:”分类中;add后被git追踪到修改记录,提示有修改、暂未提交
Thinking 0.2
- 常见
git指令:add、commit
-
add the file:使git开始追踪某个文件,即git add filename指令 -
stage the file:把修改过的文件加入暂存区,即git add filename指令 -
commit:提交本次暂存区里保存的内容,回到初始状态,即git commit指令
Thinking 0.3
- 使用
git rm进行工作区文件删除git checkout使得暂存区文件回退至工作区- 使用
git checkout <版本> filename进行其他版本的文件拉取
- 当本地文件被删除,但还没有提交时,可以使用
git checkout print.c指令,把暂存区中的print.c文件拉到工作区 - 执行
git rm print.c后,不仅删除了工作区的文件,还把这次删除add到了暂存区,此时工作区和暂存区都不存在需要的文件了,可以使用git restore --staged print.c再把print.c的修改拉回工作区 (如果commit了还可以使用git checkout HEAD^ <filename>从上一个提交版本处把删除前的文件拉回本地) - 执行
git rm --cached <filename>指令,可以只删去暂存区的文件内容,而不对本地的文件进行删除(与不加--cached对比)。可以使用这条指令,把文件从跟踪目录里移出

进行实验时的部分操作
Thinking 0.4
- 使用
git reset --hard进行git版本回退
- 可以回退
HEAD^^^^或HEAD~4,也可以根据已知的hash值进行任意的跳转--hard会强制把工作目录中未提交的文件数据删除,并不做保留,使用前注意暂存区、工作区内容git log信息与git reset
- 先进行三次文件修改与
commit操作:

- 记录下的
git log如下:提交3的hash值为8974e1e6e98f726886103a13cba43fcd4fa08acf

- 版本回退后查看log发现最近一次提交记录消失了:

- 使用
git reset --hard <hashcode>(hashcode填入提交“1”时的)回到了版本”1”;再把hashcode换成版本”3”的值,会切换回版本”3”

Thinking 0.5
- 重定向与管道
- 操作指令执行后显示如下:

-
echo指令向标准输出中输出后续内容,使用>可把输出定向到符号后的文件(重写);使用>>符号可把输出追加到目标文件中
Thinking 0.6
- 重定向与文件
echo指令与输出转义
-
command文件使用了echo指令将每一行指令都输出到标准输出,再使用>>把输出重定向到test文件中,文件内容如下:

使用
echo指令输出时需要注意转义字符的使用,如$、>等字符都需要转义,否则会起到错误的效果 转义字符是\,不是$(后者是取值的意思)
-
test执行后的result文件内容如下:

- 结果说明:
-
test文件中的所有没有重定向输出的echo语句都是提示性信息,并输出至控制台界面 - 文件创建了三个变量,并分别对其进行赋值(其中变量
c的值来自ab两变量的值之和) - 三个变量的值在有重定向的
echo命令下被输出到对应的文件(file1、file2、file3)中,最终结果被连接并借助file4存入result中
-
echo echo Shell Start与echo `echo Shell Start`效果是否有区别- 没有区别,效果都是向控制台输出
echo Shell Start
- 没有区别,效果都是向控制台输出
echo echo $c>file1与echo`echo $c>file1`效果是否有区别- 有区别,前者向
file1中写入了echo \$c信息;后者在控制台中输出了echo \$c>file1
- 有区别,前者向
难点分析
- 在
git上,如果只按照最简单的操作去做的话目前还能正常使用,但如果出现版本选择、文件回退等操作就会因为许多指令不易区分而犯难,之后需要把各指令意义进行划分,匹配在图中便于记忆 -
awk指令的使用,正则表达式该如何在awk中使用也是指令实现的一大难点
心得体会
在lab0的课下实验中,我不仅复习了在pre阶段学到的知识:如git、makefile、文本处理、重定向,还对它们的具体实现有了更深的了解。在刚开始的学习过程中,CLI的使用、Linux基础命令、命令行参数的选取都是学习路上的困难,也是后面lab的基础。这些点需要勤练常用才能更好地运用在之后的实验中,便利之后的实验。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 sin!






