1. 程式人生 > >最近學的linux重定向命令

最近學的linux重定向命令

標準輸出命令字元 其實是 1> ,1可以省略
兩個終端連線在一臺主機上,終端分別為 1 2
假設在/data下有檔案F1.log
1:ls > 2
2:F1.log
主要是將內容重定向至檔案中,如果沒有檔案,就生成,有就覆蓋
ls > /data/f1
cat /data/f1
F1.log
ls >> /data/f1 當不想覆蓋檔案時,再加一個 >
cat /data/f1
F1.log
F1.log
f1

set -C 禁止覆蓋
| 加入| 符號,在set -C 下也可以強制覆蓋
set +C 覆蓋

2> 標準錯誤命 令字元
當錯誤資訊使用了標準輸出字元時,會清空檔案內容
[

[email protected] ~]#cat /data/ls.out
anaconda-ks.cfg
Desktop
Documents
Downloads
f1link
f1link2
file
initial-setup-ks.cfg
Music
Pictures
Public
Templates
Videos
[[email protected] ~]#errcmd > /data/ls.out
bash: errcmd: command not found...
[[email protected] ~]#cat /data/ls.out
這一段為無內容
下一段是標準錯誤的命令
[[email protected]
~]#ls > ls.out
[[email protected] ~]#cat ls.out
anaconda-ks.cfg
Desktop
Documents
Downloads
f1link
f1link2
file
initial-setup-ks.cfg
ls.out
Music
Pictures
Public
Templates
Videos
[[email protected] ~]#errcmd 2> ls.out
[[email protected] ~]#cat ls.out
bash: errcmd: command not found...
同樣,不想覆蓋檔案,多加一個> 即是 2>>

可以同時執行兩個命令
[[email protected] ~]#ls /etc/centos-release /etc/f1.out
ls: cannot access /etc/f1.out: No such file or directory
/etc/centos-release
[[email protected] ~]#ls /etc/centos-release /etc/f1.out > /data/3.log 2> /data/4.log
[[email protected] ~]#cat /data/3.log
/etc/centos-release
[[email protected] ~]#cat /data/4.log
ls: cannot access /etc/f1.out: No such file or directory

將兩個資訊放在一個檔案的兩個寫法
第一個寫法更為方便,時間比較後出現,相對較新
[[email protected] ~]#ls /etc/centos-release /etc/f1.out &> /data/all.log
[[email protected] ~]#cat /data/all.log
ls: cannot access /etc/f1.out: No such file or directory
/etc/centos-release
第二個是傳統寫法
[[email protected] ~]#ls /etc/centos-release /etc/f1.out > /data/all2.log 2>&1
[[email protected] ~]#cat /data/all2.log
ls: cannot access /etc/f1.out: No such file or directory
/etc/centos-release

tr 標準輸入的一種
tr 可以做字串轉換的命令
tr 'a-z' 'A-Z' 將輸入的字母小寫的輸出為大寫的

< 標準輸入的重定向
cat f1
abcd
tr 'a-z' 'A-Z' < f1 (即將f1的內容輸入執行前面的tr命令
ABCD (僅僅只是顯示,可以加入 > 命令將顯示內容放在檔案
tr 'a-z' 'A-Z' < f1 > f1 (這樣會清空檔案f1,應該將內容重定向至另一個檔案中f2
tr 'a-z' 'A-Z' < f1 > f2
cat f2
ABCD