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