计算机教育中缺失的一课 课后习题1
20231124
链接:计算机教育中缺失的一课
1.本课程需要使用类Unix shell,例如 Bash 或 ZSH。如果您在 Linux 或者 MacOS 上面完成本课程的练习,则不需要做任何特殊的操作。如果您使用的是 Windows,则您不应该使用 cmd 或是 Powershell;您可以使用Windows Subsystem for Linux或者是 Linux 虚拟机。使用echo $SHELL
命令可以查看您的 shell 是否满足要求。如果打印结果为/bin/bash
或/usr/bin/zsh
则是可以的。
2. 在 /tmp
下新建一个名为 missing
的文件夹。
Username:~$ cd tmp
Username:~/tmp$ mkdir missing
Username:~/tmp$ ls
missing
3. 用 man
查看程序 touch
的使用手册。
Username:~/tmp$ man touch
4. 用 touch
在 missing
文件夹中新建一个叫 semester
的文件。
Username:~/tmp$ cd missing
Username:~/tmp/missing$ touch semester
Username:~/tmp/missing$ ls
semester
5. 将以下内容一行一行地写入 semester
文件:
#!/bin/sh
curl --head --silent https://missing.csail.mit.edu
第一行可能有点棘手, #
在Bash中表示注释,而 !
即使被双引号("
)包裹也具有特殊的含义。 单引号('
)则不一样,此处利用这一点解决输入问题。更多信息请参考 Bash quoting 手册
Username:~/tmp/missing$ echo \#'!'/bin/sh > semester
Username:~/tmp/missing$ echo curl --head --silent https://missing.csail.mit.edu >> semester
6. 尝试执行这个文件。例如,将该脚本的路径(./semester
)输入到您的shell中并回车。如果程序无法执行,请使用 ls
命令来获取信息并理解其不能执行的原因。
Username:~/tmp/missing$ ./semester
-bash: ./semester: Permission denied
Username:~/tmp/missing$ ls -l
total 4
-rw-rw-r-- 1 whm whm 61 11月 24 16:27 semester
如上,很明显没有权限x
执行。
7. 查看 chmod
的手册(例如,使用 man chmod
命令)
Username:~/tmp/missing$ man chmod
8. 使用 chmod
命令改变权限,使 ./semester
能够成功执行,不要使用 sh semester
来执行该程序。您的 shell 是如何知晓这个文件需要使用 sh
来解析呢?更多信息请参考:shebang
Username:~/tmp/missing$ chmod 777 semester
Username:~/tmp/missing$ ./semester
HTTP/2 200
server: GitHub.com
content-type: text/html; charset=utf-8
......
9. 使用 |
和 >
,将 semester
文件输出的最后更改日期信息,写入主目录下的 last-modified.txt
的文件中
Username:~/tmp/missing$ ./semester | grep -i "last-modified" > /home/last-modified.txt
10. 写一段命令来从 /sys
中获取笔记本的电量信息,或者台式机 CPU 的温度。注意:macOS 并没有 sysfs,所以 Mac 用户可以跳过这一题。
Username:~/tmp/missing$ cat /sys/class/power_supply/BAT1/capacity