https://missing.csail.mit.edu/
https://missing-semester-cn.g...
https://www.bilibili.com/vide...
$ 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
$ 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