1. 程式人生 > >標準I/O和管道

標準I/O和管道

eas 命令 git 文件 .sh user 輸出 一行 源碼安裝

一部分:標準I/O和管道


1:Linux給程序提供三種I/O設備
?標準輸入(STDIN)-0 默認接受來自鍵盤的輸入
?標準輸出(STDOUT)-1 默認輸出到終端窗口
?標準錯誤(STDERR)-2 默認輸出到終端窗口

文件內容會被覆蓋
set –C 禁止將內容覆蓋已有文件,但可追加
| file 強制覆蓋
set +C 允許覆蓋
覆蓋要謹慎哦例如:
echo " " > /etc/rc.local 就會清空一般源碼安裝的自啟動。
實用技巧: 如果一個內容很大的文件刪除之前可以
echo " " > /file 這樣在刪除就能立刻釋放空間。

> 原有內容基礎上,追加內容

&> 所有的內容:配合/dev/null 在腳本中常用。
例如: for i in seq 1 3
do
useradd fang$i &>/dve/null
echo 123 | passwd --stdin fang$i &>/dev/null
done
綜合:來個某公司的面試題:那一個選項的結果不同於其他三個。(B)
A app.sh > f1.log 2>&1
B app.sh 2>&1 > f1.log
C app.sh 2>f1.log 1>&2
D app.sh &>f1.log


2:tr 轉換和刪除字符 :

-d cat /etc/centos-release | tr -d centos 刪除指定字符
實例1:用tr命令計算1到100的和
echo {1..100} | tr ‘ ‘ ‘+‘ | bc
計算1到100偶數的和
echo {1..100..2} | tr ‘ ‘ ‘+‘ | bc
計算1到100奇數的和
echo {2..100..2} | tr ‘ ‘ ‘+‘ | bc
實例2:將/root/下文件列表,顯示成一行,並文件名之間用空格隔開
ls -a /root | tr ‘\n‘ ‘ ‘
實例3:處理字符串“xt.,l 1 jr#!$mn 2 c/fe 3 uz 4”,只保留其中的數字和空格
echo xt.,l 1 jr#4mn 2 c
/fe 3 uz 4 | tr -d ‘[:punct:][:alpha:]‘
實例4:將PATH變量每個目錄顯示在獨立的一行
echo $PATH | tr ‘:‘ ‘\n‘
實例4:將文件/etc/centos-release中每個單詞(由字母組成)顯示在獨立的一行,並無空行
cat /etc/centos-release | tr ‘ ‘ ‘\n‘ | tr -d ‘[:digit:][:space:]‘


3: 管道:前一個命令的結果作為後一個命令的標準輸入
echo ‘hello world‘ | mail -s ‘test‘ root


第二部分


標準I/O和管道