shell腳本-重定向和管道符


1、重定向-tr
    程序 = 指令(命令) + 數據(變量)
    在程序中,數據如何輸入和輸出
   1) 數據輸入:鍵盤 -- 標准輸入,但是不是唯一輸入方式
        echo "123456" | passwd --stdin "username"      //輸入密碼
        ./useradd.sh< user.txt        //把user.txt中文件重定向到useradd.sh中
   2) 數據輸出:顯示器--標准輸出,但是不是惟一的輸出方式。
        ls /etc/ > a.txt
        fd文件標識符0-9:相當於給文件分類
       0:標准輸出
       1:標准輸入
       2:錯誤輸入輸出
常見重定向符號:
  1)標准輸出
    >       覆蓋重定向
    set -C  關閉覆蓋重定向的功能   set +C:恢復
    >|    強制重定向    
    >>      追加重定向
  2)標准輸入
    <     a<b   :把b交給a執行
    tr 替換文件內容(tr set1 [set2])char(字符:一個一個換)
    tr abc ABC < /etc/passwd :把etc/passwd中abc換成ABC
    << 將多行數據同時輸入
  3)錯誤輸出
    2>  2>>
    擴展:不需要輸出內容,只需要輸出狀態;
    echo $?  :判斷上一條命令是否正確(0正確,1-255其他都不正確)
2、管道符-tee
    command1|command2|command3|...... :前一個命令的執行結果交給后一個命令來執行
    free -m | grep "^Mem"|cut -d ' ' -f19
    free -m | grep "^Mem"|awk'{print$3}'
    tee /tmp/tee.out //如果沒有文件,會創建,默認如果文件存在有內容,會覆蓋;
練習:
1)將/etc/passwd文件中的前5行內容轉換為大寫后保存至/tmp/passwd.out文件中
    head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out
2)將登錄至當前系統上用戶信息匯總的后3位信息轉換為大寫后保存至/tmp/who.out文件中
    who | tail -3 | cut -d ' ' -f1 | tr [a-z] [A-Z] tee /tmp/who.out

tail 查看文件尾部多少行(10行)
     -n  tail -n /etc/passwd == 簡寫 tail -5 /etc/passwd
     -f  實時查看文件更新內容
      tail -f /var/log/meddage :實時查看日志文件
      head 查看文件頭部多少行(10行)
      -n  #  前#行,
例子: 取/etc/passwd文件中10-20行

head -20 /etc/passwd | tail -10


免責聲明!

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



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