標準IO和管道

一.三種I/O設備

  1. 標準輸入(STDIN) -0?? 默認接受來自鍵盤的輸入
  2. 標準輸出(STDOUT) -1? 默認輸出到終端窗口
  3. 標準錯誤(STDERR) -2?? 默認輸出到終端窗口

程序:指令加數據

每個文件打開都有一個文件描述符(fd)

ll /proc/$$/fd????? //可以查看文件的描述符

exec 8<>/data/hosts?? //自己指定一個文件的描述符(數字)

I/O重定向:改變默認位置

ls? >? /dev/pts/5??? 重定向到其他窗口顯示

ls? >? /data/ls.out????? 重定向到指定文件

cmd? 2>? /data/err.log???? 重定向錯誤信息到指定文件

>??? 實現功能相當于覆蓋

>|????? 實現強行覆蓋

>>???? 相當于追加,保留文件原內容

set? -C?? 禁止覆蓋

set?? +C?? 允許覆蓋

ls?? /error? /data?? >f1?? 2>f2??? //實現標準輸出和錯誤各保存在一個文件中

ls?? /error? /data? >all.log?? 2>&1?? //將標準輸出和錯誤都放在同一個文件中

ls?? /error? /data? &>all.log???? 或(ls?? /error? /data?? 2>&1 )? >all.log

多條命令的輸出重定向:例如(ls;pwd)? >? all.log

/dev/null??? 用來吸收消化不想輸出的內容

>>??? 創建空文件(比touch更安全)

>??? 軟鏈接文件??? //清空原文件

<???? 標準輸入重定向

echo redhat |passwd –stdin user???? //實現修改用戶user的口令

cat <f1 >f1??? //將f1 文件清空

 

tr命令:?? 轉換和刪除字符

-c?? 取字符集的補集

-d?? 刪除所有屬于第一字符集的字符

-s???? 將連續重復的字符以單獨一個顯示

-t????? 將第一個字符集對應字符轉化為第二個字符集對應的字符

 

cat?? >f1??? //創建一個空文件

aaaa?? 后回車?? 實現單行重定向

 

使用<<EOF或<<END? 實現多行重定向 (指定結束詞后,文本結束必有結束詞)

 

dos2unix????? //將Windows文件格式轉換為Linux文件格式

unix2dos????? //將linux文件格式轉化為Windows文件格式

 

mail??? 命令:? 發/收郵件

mail? -s? ‘hello’? user???? //給用戶user發郵件標題為hello

mail? -s? ‘hello’? user? <<END??? //可手動輸入多行郵件內容(可引用變量和命令)

mail? -s? ‘hello’? user? <mail.txt?? //將文件內容作為郵件的內容來發送

mail??? 收郵件

 

二.管道:用于連接命令

命令1? |??? 命令2?????? 命令1的標準輸出作為命令2 的標準輸入

hostname | tr ‘a-z’ ‘A-Z’??? ?//輸出大寫的主機名

cat?? mail.txt?? |? mail? -s? ‘hello’? user????? //將文件內容作為郵件的內容來發送

|&???? 可實現將錯誤信息轉化為正確信息傳給下個命令(舊版本不支持)

echo {1..100} | tr ‘ ‘ ‘+’ |bc???? //實現1到100加和(或seq -s + 100 |bc)

 

tar 命令:打包文件

tar –cvf? –? /home? |? tar? -xvf? –???? //打包文件后解包該文件

 

tee?? 重定向到多個目標

-a??? 追加

三.命令補充

mktemp?? xxxx.log??? //創建臨時的文件或目錄(名字隨機)

touch?f$[RANDOM%20]???用這條就行

systemctl enable autofs???? //啟用autofs功能

systemctl? autofs????? //開啟autofs功能后才可以掛載光盤

lsb_release?? -a??? //?? 查看操作系統版本信息(centos6中)

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94700

(0)
qljqlj
上一篇 2018-04-02 15:07
下一篇 2018-04-02

相關推薦

欧美性久久久久