Lab0实验报告
思考题
Thinking 0.1
git commit -m "22373347"
- 不一样,第一次执行命令之前README.txt文件是新增文件,执行之后暂存区以含有该文件,所以再次执行会显示为修改后文件。
Thinking 0.2
add the file
对应git add
stage the file
对应git add
commit
对应git commit
Thinking 0.3
git checkout -- print.c
git reset HEAD print.c
+git checkout -- print.c
git rm --cached hello.txt
Thinking 0.4
git reset --hard HEAD^
和git reset --hard <hash>
两条命令都可以进行回溯,其中HEAD^
会回溯到上一条提交记录,<hash>
会回溯到哈希值所指的提交记录;使用哈希值可以回溯到老版本,也可以在回溯到老版本之后重新回溯到新版本。
Thinking 0.5
Thinking 0.6
- command.sh:
- result:
- 思考:
echo echo Shell Start
与echo 'echo Shell Start'
没有区别,echo echo $c>file1
与echo 'echo $c>file1'
有区别。''
会使其中内容变为字符串,因此前者没有区别,而后者$c
有特殊含义,如果不加''
直接执行就会报错。
难点分析
本次实验中,我所遇到的难点主要是三点:git
指令的应用,sed
、awk
指令的多种处理文件的用法,嵌套层的Makefile
文件编写。
git:版本管理 (git [选项] ’命令‘ 文件)
- git fetch:抓取库
- git checkout branch:查找跳转分支
- git add file:添加文件
- git commit -m “info”:提交文件
- git push:推送文件
- git checkout — file:恢复修改还未提交至暂存区的文件
- git reset —hard HEAD^/
:回溯提交记录 - git log:查看提交记录
awk:处理文本(awk [选项] ‘命令’ 文件)
- awk ‘pattern action’ file:按照条件pattern进行动作action(其中$n代表分割后的第n项,默认以空格切分)
- awk -F’char’ ‘action’ file:按照字符分割文件中每一行字符串,并进行操作(其中$n代表分割后的第n项)
sed:处理文本,数据替换、删除、新增、选取等功能(sed [选项] ‘命令’ 文件)
- -n:安静模式,仅显示更改的内容
- -i:直接修改文件内容,否则只修改不保存并输出到屏幕
- [行号]a[内容]:在对应行后新增内容,不加行号时在每一行后都新加内容(最后一行用$表示)
- [行号]c[内容]:用当前内容取代对应行内容
- [行号]i[内容]:在对应行之前插入内容
- [行号]d:删除对应行
- [行号]p:输出对应行,多与-n合用
- s/re/string/g:按照正则表达式将所有re替换为string(单引号将所有字符认为为字符,双引号可引入外部输入变量)
实验体会
Lab0主要让我们学习如何使用Linux控制终端来进行基础命令行操作和文件操作,作为这方面的萌新,确实耗费了我不少时间,主要还是对于各种命令的不熟悉和对于脚本初接触。因为指导书所提供的学习内容比较局限,在一些常用的命令介绍上也需要自行查阅(例如awk,sed等),这些命令加上各种选项后种类繁多,令人眼花缭乱。
终端操作和之前进行的在可视化界面上的操作不同,看起来更加繁琐,更加抽象,更加多而杂,但也更加”帅气“。总的来说,命令行的学习让我遇到了不小的困难,但一番学习下来之后也让我感到很充实。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ENIGMA!