lab0-实验报告
Thinking
Thinking 0.1
Q: 对于README.txt
文件,在初次创建并提交后与再次修改之后git status
的状态的不同
A: 二者git status
之后的结果不同。第一次add之前显示的是未跟踪的文件
,属于Untractked
状态,原因是我们的文件没有被add过,没有提交到暂存区过。而commit之后再做修改,显示尚未暂存以备提交的变更
,属于Modified
状态,原因是我们已经commit到暂存区且之后又做了修改。
Thinking 0.2
Q: Add the file
、 statge the file
与commit
分别对应哪条命令?
A: Add the file
对应 git add <文件>
命令
stage the file
对应的也是git add <文件>
命令
commit
对应是 git commit -m "comment"
Thinking 0.3
Q1: 代码文件print.c被错误删除时,应当使用什么命令将其恢复?
A1: git checkout -- print.c
Q2: 代码文件print.c被错误删除后,执行了git rm print.c
命令,此时应当
使用什么命令将其恢复?
A2: 先执行git reset HEAD print.c
,再执行git checkout -- print.c
Q3: 无关文件hello.txt已经被添加到暂存区时,如何在不删除此文件的前提下将其移出暂存区?
A3: git rm --cached hello.txt
Thingking 0.4
Q: 对于git reset --hard
的用法理解
A:使用git reset --hard
指令,我们可以将当前仓库状态变为任意一次commit
之后的状态,可以实现版本回退,也可回到最新。主要有以下两种用法:
- 利用
HEAD
,git reset --hard HEAD^
回退到上个版本,git reset --hard HEAD^^
回退到上上个版本,回退到前num个版本,可以使用git reset --hard HEAD~num
,num为合法数字 - 利用
hash
值,git reset --hard <hash>
可以切换到任意版本,hash值可以通过git log
查看
注意 :添加--hard
选项之后命令效果无法撤销
Thinking 0.5
Q:执行如下命令,并查看结果
1 | - echo first |
A:执行结果如下:
>
是将输出重定向到文件中,如果该文件存在,则原内容被覆盖,否则新建文件>>
是将输出追加到源文件内容之后
Thinking 0.6
Q 使用你知道的方法(包括重定向)创建下图内容的文件(文件命名为test),将创建该文件的命令序列保存在command文件中,并将test文件作为批处理文件运行,将运行结果输出至result文件中。给出command文件和result文件的内容,并对最后的结果进行解释说明(可以从test文件的内容入手). 具体实现的过程中思考下列问题: echo echo Shell Start
与 echo
echo Shell Start
效果是否有区别; echo echo $c>file1与echo echo $c>file1
效果是否有区别
A command文件的内容如下
result文件内容如下
结果说明 在test中将 a,b依次赋值为1和2,然后令c=a+b,此时c为3,接着将c,a,b依次写入file1,file2,file3
,然后将file1,file2,file3
依次追加写入file4
,将file4的内容又写入了result
echo echo Shell Start
与echo 'echo Shell Start'
没有区别;但是echo echo $c>file1
与echo 'echo $c>file1
由区别,前者将echo $c
重定向到file1,但是后者会在终端显示echo $c>file1
字符串。
实验难点
Linux命令
cp [选项] 源文件 目标路径
&&mv [选项] 源文件 目标路径
前者为将源文件(或者为目录)复制为目标路径对应的文件(如果目标路径是文件)或者复制到目标路径(如果目标路径是目录),后者是移动(也可以实现重命名)
注意目标路径是目录还是文件的判断
- 查找命令
grep
与find
find -name <文件名>
grep [选项] pattern [file/dictionary]
(选项:-n
:显示行号-r
: 从目录递归查找)
注意:如果是在目录中查找,需要加上-r
选项
不加目录或者文件参数时,默认在当前目录查找,此时不要忘记加-n
如果模式串中含有空格,最好用引号引起来
Shell编程中括号的使用
$()
或者将括号改为反引号:运行括号中的命令并将其返回(())
双小括号用于数值计算,前面加上$
符号表示将值返回。此外,(())
也用于整数大小的判断,例如if (( $1 > $2 ))
$var_name
或者${var_name}
一般表示取变量的值[]
用于判断条件是否成立[[]]
用于判断条件是否成立,同时可以在条件间进行逻辑运算
Git使用与理解
git status
与文件的四种状态
熟练使用git status
命令与git log
查看文件状态和提交日志Git
三棵树–工作区、暂存区、HEAD
- Git版本回退以及分支
其他
ctags
使用
对于通过#include "filename"
定义变量,在命令行中执行命令ctags-R *
,便可以建立映射表tags,将光标定位到调用处,使用ctrl+]
便可以定位到定义处,按下ctrl + T
或者ctrl + O
便可以回到跳转前位置
实验体会与感想
lab0 主要学习了如何在Linux终端进行文件以及目录的操作,实验整体难度不大。主要的不适应可能来源于从图形化界面转为命令行界面,不过这可以通过多加练习来习惯。此外,各种命令的正确使用可能也存在一点难度,例如参数以及选项的正确设置等。