計算機教育中缺失的一課 - 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

相關文章
相關標籤/搜索