Lab0 Report
Lab0 Report
思考题
Thinking 0.1
- Untracked.txt:
1 | 位于分支 lab0 |
- Stage.txt:
1 | 位于分支 lab0 |
- Modified.txt:
1 | 位于分支 lab0 |
- 从 Untracked 到 Stage,README 文件从未跟踪的文件变成要提交的文件,因为使用了 git add 进行跟踪,提交一次本地变更之后,再修改 README 时,README 不再是像第一次 status 中有一个新的没有跟踪的文件,而是有一个持续跟踪的发生变化的文件,所以两次 status 不一样。
Thinking 0.2
add the file: git add <file>
stage the file: add <file>
commit: git commit -m message
Thinking 0.3
git checkout -- printf.c checkout 两种用法:切换分支,撤销修改(暂存区 -> 工作区)
git reset --hard HEAD / git reset HEAD printf.c + git restore --staged printf.c
回退版本(仓库提交版本 -> 暂存区 / 工作区)
Thinking 0.4
有三次提交
```git commit ca2fac3c015bd8aded736d5f8e28a52cbc4d5bb5 (HEAD -> lab0) Author: 王子腾 21373237@buaa.edu.cn Date: Thu Mar 2 11:38:26 2023 +0800
3
commit ecc063e495bc4ec11d625f120d85e845d63a42a8 Author: 王子腾 21373237@buaa.edu.cn Date: Thu Mar 2 11:37:42 2023 +0800
2
commit c074c71ca4b2cb3b327c77807964fcc65c48ddc9 Author: 王子腾 21373237@buaa.edu.cn Date: Thu Mar 2 11:36:29 2023 +0800
1
1
2
3
4
5
6
7
8
9
10
11
12
13
- 执行命令 git reset --hard HEAD^ 后,log中最上一条说明为 3 的提交消失
- 找到提交说明为 1 的哈希值,执行命令 git reset --hard 后,log 中说明为 2 的提交消失
- 再使用说明为3 的哈希值,执行 git reset --hard ca2fac3c015bd8aded736d5f8e28a52cbc4d5bb5 之后,直接回到那一次提交
### Thinking 0.5
- echo first: 终端输出
```txt
firstecho second > output.txt: output 中内容为
1
second
echo third > output.txt: output 中内容为
1
third
echo forth >> output.txt: output 中内容为
1
2third
forth
Thinking 0.6
- command
1 | echo "echo Shell Start... |
- result
1 | 3 |
a=1, b=2, c=$[$a+$b]使得 c=3。c,b,a 三个进入 file1,2,3,最后依次存入 file4,再存到 result
执行
echo echo Shell Start
与echo 'echo Shell Start'
没有区别执行
echo echo $c>file1
与echo 'echo $c'>file1
有区别,不加引号时,$c 被认为是一个变量,但找不到值,没有显示。加引号时引号内整体被认定为字符串,全部写入 file1
难点分析
引号,小括号,中括号语法混乱,Exercise 0.4 中替换语句中不可用‘ ’,只能用“ ”,因为单引号直接输出内部字符串,不解析特殊字符;双引号内则会解析特殊字符
1
sed -i "s/$2/$3/g" $1
Exercise 0.3 中 while 循环 [] 或者 (()) 表示条件,do done 为 while 循环区间。分支语法 if elif 与最后的 fi 结尾。
参数运算语法,写自增
1
2
3
4
5
6
7
8
9
10
11
12
13a=$[$b+$c]
c="expr $a+$b"
let a++
let a+=1
((a++))
["$a" \< "$b" ] 要带转义,条件表达式要放在方括号之间,并且要有空格,必须写成 [$a == $b ]
在 [] 中使用的比较符:
-eq =
-ne !=
-gt >
-ge >=
-lt <
-le <=Exercise 0.3 中根据 awk 语法需要临时创建一个文件保存待更改格式的内容(?
Exercise 0.4 中的.c 与.h 文件分别存放在两个文件夹,在链接的时候需要用 -I 给 gcc 起始搜索目录
Exercise 0.4 中的外层 make 调用内层 make 时
实验体会
Linux 下的各种功能更为清晰直接,提供了更多可设定参数,可以灵活编程用多种方法达到目的,并且借助一些正则表达式可以编写高效脚本。但同时大量功能和参数也使初期编写时记不清可用的功能和对应语法,导致没有头绪和大量 bug...