I/O(IN Out)重定向(本來位置被改到別處位置):
指的改變默認輸入輸出的位置
程序:數據+指令 IO
可用于輸入的設備:文件
鍵盤設備,文件系統上的常規文件,網卡等
可用于輸出的設備:文件
顯示器,文件系統上的常規文件,網卡等;
程序的數據流有三種:
輸入的數據流:<— 標準輸入(stdin),鍵盤;
輸出的數據流:—> 標準輸出(stdout),顯示器;
錯誤輸出流: —> 錯誤輸出(stderr),顯示器;
標準輸出重定向:> 特性:覆蓋輸出
~]# date > date.log
~]# cat date.log
Tue Mar 28 01:30:46 CST 2017
標準輸出追加重定向: >> 特性:追加輸出
Set: 控制bash的特性
set -C 禁止將內容覆蓋到已經有的文件 特殊保護機制
此時可使用強制覆蓋輸出: >
set +C 關閉上述輸出:
標準錯誤輸出重定向:2>, 2>>
~]# fdfdfdfd > date.log
bash: fdfdfdfd: command not found…
~]# fdfdfdfd 2> date.log
~]# cat date.log
bash: fdfdfdfd: command not found…
~]# fdfdfdfd 2>> date.log
~]# fdfdfdfd 2>> date.log
~]# cat date.log
bash: fdfdfdfd: command not found…
bash: fdfdfdfd: command not found…
合并正常輸出流和錯誤輸出流:
(1) &>, &>>
(2) COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
~]# date &> date.log
~]# cat date.log
Tue Mar 28 01:33:55 CST 2017
~]# datefdfd &> date.log
~]# cat date.log
bash: datefdfd: command not found…
特殊設備: /dev/null
[root@MFX2 ~]#ls /var &> /dev/null
[root@MFX2 ~]#echo $?
0 (狀態值) 表示成功即目錄存在
[root@MFX2 ~]#ls /varr &> /dev/null
[root@MFX2 ~]#echo $?
2 表示失敗即目錄不存在
標準輸出重定向到date.log 標準錯誤輸出重定向到date2.log
~]# date22 > date.log 2> date2.log
&> &>> 將標準輸出和標準錯誤輸出(覆蓋|追加)同一個文件
~]# date &> date.log
~]# cat date.log
Tue Mar 28 01:40:48 CST 2017
~]# date &>> date.log
~t]# cat date.log
Tue Mar 28 01:40:48 CST 2017
Tue Mar 28 01:41:14 CST 2017
~]# datefdfd &>> date.log
~]# cat date.log
Tue Mar 28 01:40:48 CST 2017
Tue Mar 28 01:41:14 CST 2017
bash: datefdfd: command not found…
標準輸入重定向: <
tr [OPTION]… SET1 [SET2]
把輸入的數據當中的字符,凡是在SET1定義范圍出現的,通通對位換為SET2出現的字符;
用法1:
tr SET1 SET2 < /PATH/FROM/SOMEFILE
用法2:
tr -d SET1 < /PATH/FROM/SOMEFILE
注意: 不修改原文件
~]#tr ‘a-z’ ‘A-Z’ < /etc/issue > issue.log
~]#cat issue.log
CENTOS RELEASE 6.8 (FINAL)
KERNEL \R ON AN \M
-c 取指定字符的補集
~]# tr -d -c ‘0-9’ < /etc/fstab
tr -d ‘0-9’ < ./fstab > ./fstab 是不會成功的
-s “s“ 對重復字符去重
Here document(此處創建文檔): <<
cat << EOF
cat > /PATH/FROM/SOMEFILE <<EOF
cat >> shanghai.log << ‘EOF’
where are you from,I’m from $SHELL
EOF
加引號與不加引號的區別
加引號(雙引號和單引號)輸入內容里面的變量是不會被替換
不加引號的話 輸入的內容里面變量會被替換
結束符不一定要使用EOF,可以使用其他任意字符。
寫一個腳本 腳本定義個配置文件,執行腳本的時候自動生成自定義的配置文件
#!/bin/bash
cat >> my.cnf << EOF 或者 ‘EAD’
a=b
b=c
EAD
…
原創文章,作者:MFX,如若轉載,請注明出處:http://www.www58058.com/72470
總結了bash的一些特性,和linux下的一些基礎的命令,內容寫的很好,排版上可以再往好的弄弄