Linux學習筆記10——管道和重定義
地址總線:內存尋址
數據總線:傳輸數據
控制總結:控制指令
寄存器:CPU暫時存儲器
程序在運行時要從輸入設備獲取指令,通過輸出設備輸出作為人機交互。那麽系統在什麽地方獲取輸入輸出鍵盤鼠標硬盤還是哪裏?那麽系統就需要設定默認的輸入輸出。
系統設定
- 默認輸出設備:標準輸出,STDOUT, 1(1為描述符號)
- 默認輸入設備:標準輸入, STDIN, 0
- 標準錯誤輸出:STDERR, 2
標準輸入:鍵盤
標準輸出和錯誤輸出:顯示器(廉價,不像打印機)
I/O重定向(輸入輸出重定向):改變數據的輸入來源,改變數據的輸出來源。
輸出重定向
一個大於號> : 覆蓋輸出
兩個大於號>> :追加輸出
比如:ls /etc 將etc的目錄輸出到屏幕,輸出重定向:ls /etc > /tmp/etc.out 將etc的文件目錄輸出到文件中
如果在生產中輸出的時候不小心用到了覆蓋輸出可以用 set -C來設置。
set -C: 禁止對已經存在文件使用覆蓋重定向;
在-C的情況下如果想強制覆蓋輸出,則使用 >|
set +C: 關閉上述功能
如果輸出重定向的時候使用了錯誤的輸出,同時也想將錯誤的輸出輸出到文件中,那麽如何使用?
2>: 重定向錯誤輸出
既想定向標準輸出,也想定向錯誤輸出:
ls /varr > /tmp/var.out 2> /tmp/war.errout (如果命令正確,將標準輸出輸出到/tmp/var.out 。如果命令錯誤,將錯誤命令輸出到/tmp/var.errout)同時也可以定向到同一個文件中。
&>: 重定向標準輸出或錯誤輸出至同一個文件
ls /varr &> /tmp/var.out
輸入重定向
<:輸入重定向
例如:tr ‘a-z‘ ‘A-Z‘ < /etc/fstab(將/etc/fatab這個文件的所有小寫換成大寫)
<<:Here Document(在此處生成文檔)
打印一些數據
END結尾會輸出這些數據
例如:cat >>/tmp/myfile.txt << END
the first line
the seconf line
cat /tmp/myfile.txt
the first line
the seconf line
管道:前一個命令的輸出,作為後一個命令的輸入
Linux的重要哲學思想:組合小命令完成復雜任務
命令1 | 命令2 | 命令3 | ...
例如echo "hello world" | tr ‘a-z‘ ‘A-Z‘
HELLO WORLD
echo "redhat" |passwd --stdin user(將user用戶的密碼改為redhat)
cut -d : -f3 /etc/passwd |sort -n
Linux學習筆記10——管道和重定義