title: missing semester notes
Day1-课程概览与 shell
使用 shell
-
打开终端时,会看到一个提示符
missing:~$
-
你的主机名是
missing
-
当前所在的位置是
~
(表示 “home”) -
$
符号表示您现在的身份不是 root 用户,root用户会是#
-
希望传递的参数中包含空格(例如一个名为 My Photos 的文件夹),您要么用使用单引号,双引号将其包裹起来,要么使用转义符号
\
进行处理(My\ Photos
)。
在shell中导航
在 Linux 和 macOS 上使用 /
分割,而在Windows上是 \
。
如果某个路径以 /
开头,那么它是一个 绝对路径,其他的都是 相对路径 。
在路径中,.
表示的是当前目录,而 ..
表示上级目录。
mv
(用于重命名或移动文件)
cp
(拷贝文件)
mkdir
(新建文件夹)
man
会接受一个程序名作为参数,然后将它的文档(用户手册)展现给您。注意,使用 q
可以退出该程序。
在程序间创建连接
最简单的重定向是 < file
和 > file
。这两个命令可以将程序的输入输出流分别重定向到文件
可以使用 >>
来向一个文件追加内容。
|
操作符允许我们将一个程序的输出和另外一个程序的输入连接起来:左边是输入流,右边是输出流。
missing:~$ echo hello > hello.txt missing:~$ cat hello.txt hello missing:~$ cat < hello.txt hello missing:~$ cat < hello.txt > hello2.txt missing:~$ cat hello2.txt hello
一个功能全面又强大的工具
根用户(root user
)几乎不受任何限制,他可以创建、读取、更新和删除系统中的任何文件。
sudo
命令的作用是让您可以以 su(super user 或 root 的简写)的身份执行一些操作。 当您遇到拒绝访问(permission denied)的错误时,通常是因为此时您必须是根用户才能操作。
day1_homework
-
本课程需要使用类Unix shell,例如 Bash 或 ZSH。如果您在 Linux 或者 MacOS 上面完成本课程的练习,则不需要做任何特殊的操作。如果您使用的是 Windows,则您不应该使用 cmd 或是 Powershell;您可以使用Windows Subsystem for Linux或者是 Linux 虚拟机。使用
echo $SHELL
命令可以查看您的 shell 是否满足要求。如果打印结果为/bin/bash
或/usr/bin/zsh
则是可以的。
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ echo $SHELL /bin/bash
-
在
/tmp
下新建一个名为missing
的文件夹。
(base) wyx@wyx-virtual-machine:~/homework/missing-semester$ mkdir missing
-
用
man
查看程序touch
的使用手册。
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ man touch
-
用
touch
在missing
文件夹中新建一个叫semester
的文件。
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ touch semester
-
将以下内容一行一行地写入
semester
文件:
#!/bin/sh curl --head --silent https://missing.csail.mit.edu
第一行可能有点棘手, #
在Bash中表示注释,而 !
即使被双引号("
)包裹也具有特殊的含义。 单引号('
)则不一样,此处利用这一点解决输入问题。更多信息请参考 Bash quoting 手册
my answer
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ echo '#!/bin/sh'>semester (base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ echo 'curl --head --silent https://missing.csail.mit.edu'>>semester (base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ vim semester
-
尝试执行这个文件。例如,将该脚本的路径(
./semester
)输入到您的shell中并回车。如果程序无法执行,请使用ls
命令来获取信息并理解其不能执行的原因。
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ ./semester bash: ./semester: 权限不够
-
查看
chmod
的手册(例如,使用man chmod
命令)
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ man chmod
-
使用
chmod
命令改变权限,使./semester
能够成功执行,不要使用sh semester
来执行该程序。您的 shell 是如何知晓这个文件需要使用sh
来解析呢?更多信息请参考:shebang
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ ./semester HTTP/2 200 server: GitHub.com content-type: text/html; charset=utf-8 last-modified: Sat, 02 Mar 2024 14:52:48 GMT access-control-allow-origin: * etag: "65e33d40-2015" expires: Thu, 14 Mar 2024 18:53:34 GMT cache-control: max-age=600 x-proxy-cache: MISS x-github-request-id: D340:3F1601:1D8D39C:1E9C5DF:65F34555 accept-ranges: bytes date: Fri, 15 Mar 2024 14:04:56 GMT via: 1.1 varnish age: 0 x-served-by: cache-tyo11968-TYO x-cache: HIT x-cache-hits: 1 x-timer: S1710511497.600772,VS0,VE176 vary: Accept-Encoding x-fastly-request-id: 4a4dfc801cdcc6d792882538f836eee1326ed412 content-length: 8213
-
使用
|
和>
,将semester
文件输出的最后更改日期信息,写入主目录下的last-modified.txt
的文件中
(base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ stat -c %y ./semester > last-modified.txt (base) wyx@wyx-virtual-machine:~/homework/missing-semester/missing$ vim last-modified.txt
-
写一段命令来从
/sys
中获取笔记本的电量信息,或者台式机 CPU 的温度。注意:macOS 并没有 sysfs,所以 Mac 用户可以跳过这一题。
作者的笔记本电脑是y9000p,配置虚拟机方式是VMware+ubuntu,但是好像没有找到笔记本的电量信息
,如果有读者知道怎么做的话欢迎联系~