MIT 6.NULL The Missing Semester of Your CS Education(1)

前言

本科前三年,我在学习程序设计语言,算法与数据结构,组成原理等等的课程的时候,往往学到了课程的主要内容,但是实践的时候会发现自己缺少一些实用的工具来帮助自己完成一些繁琐的工作。以我日常的经验为例,在windows下配置Visual Studio的opencv环境时需要将某个目录下的lib文件的文件名输入项目属性表,这个时候如果手动一个个输入会很麻烦,一般做法时用一个bat脚本将文件名提取出来放到一个文本中,这样就提高了我们的工作效率,再比如再linux下写代码时使用vim编辑器的快捷键将会提升我们的编码速度。MIT 6.NULL这门实验课主要针对shell和脚本、编辑器、数据整理、命令行环境、Git、调试及性能分析、元编程、安全和密码学等主题为我们介绍一些计算机常用的生产力工具,写这篇博客主要记录在完成MIT 6.NULL实验中的收获。

使用Shell

本课程需要使用类Unix shell,例如 Bash 或 ZSH。如果您在 Linux 或者 MacOS 上面完成本课程的练习,则不需要做任何特殊的操作。如果您使用的是 Windows,则您不应该使用 cmd 或是 Powershell;您可以使用Windows Subsystem for Linux或者是 Linux 虚拟机。使用echo $SHELL命令可以查看您的 shell 是否满足要求。如果打印结果为/bin/bash或/usr/bin/zsh则是可以的。

输出结果表明shell使用的是zsh

  1. 在 /tmp 下新建一个名为 missing 的文件夹。

在根目录/ 下使用mkdir 命令创建一个名为 missing的文件夹
使用ls命令查看tmp目录下是否由missing文件夹

  1. 用 man 查看程序 touch 的使用手册。

输入man touch即可查看touch命令的含义,根据解释可以看出touch命令的意义是更新access time和modification time,如果没有文件就会首先创建文件,并且根据输入参数的不同决定touch修改的时哪个time。

  1. 用 touch 在 missing 文件夹中新建一个叫 semester 的文件。
    ​​

  2. 将以下内容一行一行地写入 semester 文件:

#!/bin/sh
curl --head --silent https://missing.csail.mit.edu


在这一段shell脚本中,#代表的是注释,但是注释中包含了逻辑运算符!,在其他一些语言中对于关键字的输出一般要使用转义字符等操作,为了将这一段话作为一个整体,需要把这行代码加上单引号’',并且使用echo输出到semester文件中。

Tips1: shell输出字符串时既可以双引号也可以单引号也可以不加引号,双引号与单引号的区别在于双引号内可以使用转义字符,而单引号会全部当作字符串处理。

Tips2:shell定义变量时,=前后不能有空格,切记!

第一次尝试时会发现两个命令用>输出重定向到semester时后者将前者覆盖,查阅资料后知道>>是追加,所以第二条命令应该使用>>。
​​

  1. 查看 chmod 的手册
    ​​

  2. 尝试执行这个文件。即,将该脚本的路径(./semester)输入到您的shell中并回车。如果程序无法执行,请使用 ls 命令来获取信息并理解其不能执行的原因。
    ​​

当执行semester脚本时发现没有执行权限,于是使用ls -l 或者是 ll命令查看文件的属性以及文件所属的用户和组
第一个字符-表示这是一个文件,剩下三个连续的字符分别代表属主、属组和其他用户的权限,可以看到三种情况都没有执行的权限(x)。

  1. 使用 chmod 命令改变权限,使./semester能够成功执行,不要使用 sh semester 来执行该程序。您的 shell 是如何知晓这个文件需要使用 sh 来解析呢?
    ​​

使用chmod命令赋予属主、属组、其他用户读写执行的权限。.

When a text file with a shebang is used as if it is an executable in aUnix-likeoperating system, theprogram loadermechanism parses the rest of the file’s initial line as aninterpreter directive. ——wikipedia_shebang
为了使Linux系统知道该文件是Shell脚本,该文件必须以shebang构造开头。

  1. 使用|和>,将 semester 文件输出的最后更改日期信息,写入主目录下的last-modified.txt的文件中
    ​​

这个题目提示我们使用|(管道)和>(重定向),管道的作用是是一系列将标准输入输出链接起来的进程,其中每一个进程的输出被直接作为下一个进程的输入,重定向则是把结果输出到指定的文件中。
所以首先执行脚本命令

#!/bin/sh
curl --head --silent https://missing.csail.mit.edu

将访问https://missing.csail.mit.edu的文档信息打印,然后将得到的输出使用管道|作为下一个grep命令的输入。
grep命令用于查找内容包含指定的范本样式的文件,本文要求的是最后更改日期信息(last-modified),所以grep last-modified选择包含最后更改日期的字符串。
最后使用>将结果重定向到主目录下的last-modified.txt。

  1. 写一段命令来从 /sys 中获取笔记本的电量信息,或者台式机 CPU 的温度。注意:macOS 并没有 sysfs,所以 Mac 用户可以跳过这一题。 Windows用户可以按以下命令查询:/sys/class$ cd ./power_supply/BAT1 利用ls -l指令观察信息,可用xdg-open指令查询满电电量energy_full与当前电量energy_now。
    ​​

输入命令

cat /sys/class/power_supply/BAT0/capacity #我的是BAT0,解析中是BAT1

总结
本次实验使用了一些简单的shell脚本,我之前用过这些命令,但是对于具体的细节记不清楚,所以还得多用才能熟练掌握shell的用法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alfred young

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值