思考题

Thinking 0.1

  • thinking 1-1
  • thinking 1-2
  • git commit -m "22373347"
  • thinking 1-3
  • thinking 1-4
  • 不一样,第一次执行命令之前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

image-20240313163539979

Thinking 0.6

  • command.sh:

thinking 6-1

  • result:

thinking 6-2

  • 思考:echo echo Shell Startecho 'echo Shell Start'没有区别,echo echo $c>file1echo 'echo $c>file1'有区别。''会使其中内容变为字符串,因此前者没有区别,而后者$c有特殊含义,如果不加''直接执行就会报错。

难点分析

本次实验中,我所遇到的难点主要是三点:git指令的应用,sedawk指令的多种处理文件的用法,嵌套层的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等),这些命令加上各种选项后种类繁多,令人眼花缭乱。

终端操作和之前进行的在可视化界面上的操作不同,看起来更加繁琐,更加抽象,更加多而杂,但也更加”帅气“。总的来说,命令行的学习让我遇到了不小的困难,但一番学习下来之后也让我感到很充实。