Linux 重定向f符號


  1. Linux標准輸入輸出
    Linux標准輸入、輸出設備主要是鍵盤和顯示器,詳細介紹如下表所示。

     

    Linux標准輸入輸出
    設備 設備文件名 文件描述符 類型 符號表示
    鍵盤 /dev/stdin 0(缺省是鍵盤,為0時是文件或者其他命令的輸出) 標准輸入 < <<
    顯示器 /dev/stdout 1(缺省是屏幕,為1時是文件) 標准輸出 > >>
    顯示器 /dev/stderr 2(缺省是屏幕,為2時是文件) 標准錯誤輸出 2> 2>>

     

    注:其中一個>表示:覆蓋原文件中的內容;如果文件不存在,就創建文件;如果文件存在,就將其清空;一般我們備份清理日志文件的時候

    兩個>即>>表示:追加到原文件中的內容之后;果文件不存在,就創建文件;如果文件存在,則將新的內容追加到那個文件的末尾,該文件中的原有內容不受影響

    2、Linux輸出重定向
    輸出重定向:改變程序運行的輸入來源和輸出地點。

    主要的適用方法如下表所示:

     

    輸出重定向
    類型 符號 功能
    標准輸出重定向 命令 >文件 以覆蓋方式,把命令的正確輸出內容輸出到指定的文件或設備當中
    命令 >>文件 以追加方式,把命令的正確輸出內容輸出到指定的文件或設備當中
    標准錯誤輸出重定向 錯誤命令 2>文件 以覆蓋方式,把命令的錯誤輸出內容輸出到指定的文件或設備當中
    錯誤命令 2>>文件 以追加方式,把命令的錯誤輸出內容輸出到指定的文件或設備當中
    正確/錯誤輸出同時保存 命令 > 文件 2>&1 以覆蓋方式,把命令的正確輸出和錯誤輸出內容保存到同一個文件當中
    命令 >> 文件 2>&1 以追加方式,把命令的正確輸出和錯誤輸出內容保存到同一個文件當中
    命令 &> 文件 以覆蓋方式,把命令的正確輸出和錯誤輸出內容保存到同一個文件當中
    命令 &>> 文件 以追加方式,把命令的正確輸出和錯誤輸出內容保存到同一個文件當中
    命令 >>文件1 2>文件2 以追加方式,把命令的正確輸出保存在文件1中;以覆蓋方式,把命令的錯誤輸出內容保存到文件2中

     

    3、Linux輸入重定向

     

    輸入重定向
    類型 符號 功能
    標准輸入 命令 <文件1 命令把文件1的內容作為標准輸入
    標識符限定輸入 命令 <<標識符 命令從標准輸入中讀入內容,直到遇到“標識符”分界符位置
    輸入輸出重定向 命令 <文件1 >文件2 命令把文件1的內容作為標准輸入,把文件2作為標准輸出

     

    總結一五Linux的輸入輸出重定向:

    1、重新設置命令的默認輸入,輸出,指向到自己文件(文件,文件描述符,設備其實都是文件,因為linux就是基於設備也是文件,描述符也指向是文件)

    2、擴展自己新的描述符,對文件進行讀寫操作

實例:

1)向文件test.sh里輸入內容。
[root@slave-server opt]# cat << EOF >test.sh 
> 123123123
> 3452354345
> asdfasdfs
> EOF
[root@slave-server opt]# cat test.sh 
123123123
3452354345
asdfasdfs

追加內容
[root@slave-server opt]# cat << EOF >>test.sh 
> 7777
> 8888
> EOF
[root@slave-server opt]# cat test.sh 
123123123
3452354345
asdfasdfs
7777
8888
錯誤追加到a.txt,&>>等同於>>和2>>
[root@localhost test]# ls dasd &>> a.txt
查看執行結果
[root@localhost test]# echo $?
2
[root@localhost test]# cat a.txt 
ls: 無法訪問dasd: 沒有那個文件或目錄
123
ls: 無法訪問dasd: 沒有那個文件或目錄
[root@localhost test]# 

  

[root@localhost ~]# ps -aux | grep aux 
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ 
root 53 0.0 0.0 0 0 ? S 16:33 0:00 [ata_aux] 
root 2379 4.0 0.1 110224 1172 pts/2 R+ 22:55 0:00 ps -aux 
root 2380 0.0 0.0 103316 868 pts/2 D+ 22:55 0:00 grep aux 
查詢全部進程后輸出結果在進行過濾跟 進行中包含aux的進程。
管道符,前一個命令輸出作為后一個命令輸入

  

[root@localhost test]# head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out
[root@localhost test]# cat /tmp/passwd.out 
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
/etc/passwd的前五行小寫替換大寫到/tmp/passwd..out

  

[root@localhost test]# who |tail -1 | cut -d' ' -f1 |tr [[:lower:]] [[:upper:]] | tee /tmp/who.out
ROOT
查看登錄用戶的最后一位,寫入/tmp/who.out

  

 

[root@localhost test]# free -m |grep "^Mem" 
Mem:           3774         159        3407           8         208        3365
[root@localhost test]# free -m |grep "^Mem" |awk '{ print $3}'
158
[root@localhost test]# free -m 
              total        used        free      shared  buff/cache   available
Mem:           3774         158        3407           8         208        3365
Swap:          3967           0        3967

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM