计算机教育中缺失的一课 - MIT - L1 - 课程概览与 shell

https://missing.csail.mit.edu/
https://missing-semester-cn.g...
https://www.bilibili.com/vide...

笔记

关于重定向和 cat

$ echo hello > hello.txt
$ cat hello.txt
hello
$ cat < hello.txt
hello
$ cat < hello.txt > hello2.txt
$ cat hello2.txt
hello

本觉得 cat < hello.txt 会报错 cat: hello: No such file or directory。猜测正确工做的缘由是“参数”和“输入”的区别(未经验证或查找资料):cat 程序将输入打印在屏幕上,cat hello.txt 中的 hello.txt 是参数,将该文件的内容做为输入;而 cat < hello.txt 是输入重定向,意思也是将文件中的内容做为程序的输入,而不是将文件的内容做为参数,所以两者效果相同。git

tee 的小用处

$ cd /sys/class/backlight/thinkpad_screen
$ sudo echo 3 > brightness
An error occurred while redirecting file 'brightness'
open: Permission denied

出乎意料的是,咱们仍是获得了一个错误信息。毕竟,咱们已经使用了 sudo 命令!关于 shell,有件事咱们必需要知道。|>、和 < 是经过 shell 执行的,而不是被各个程序单独执行。 echo 等程序并不知道 | 的存在,它们只知道从本身的输入输出流中进行读写。 对于上面这种状况, shell (权限为您的当前用户) 在设置 sudo echo 前尝试打开 brightness 文件并写入,可是系统拒绝了 shell 的操做由于此时 shell 不是根用户。github

明白这一点后,咱们能够这样操做:shell

$ echo 3 | sudo tee brightness

由于打开 /sys 文件的是 tee 这个程序,而且该程序以 root 权限在运行,所以操做能够进行。bash

课后练习

szNEBq.png

szNAun.png

相关文章
相关标签/搜索