一.三種I/O設備
- 標準輸入(STDIN) -0?? 默認接受來自鍵盤的輸入
- 標準輸出(STDOUT) -1? 默認輸出到終端窗口
- 標準錯誤(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