IO重定向

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

(0)
MFXMFX
上一篇 2017-04-03
下一篇 2017-04-03

相關推薦

  • Linux基礎知識(五)-文件查找命令find

    對grep 和 find 命令的操作 1、顯示當前系統上root、fedora或user1用戶的默認shell; 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); 3、使用echo命令輸出一個路徑,使用grep取出其基名; 4、找出ifconfig命令結果中的1-255之間數字; 5、寫一個…

    Linux干貨 2016-10-24
  • 端口轉發實例

    什么是端口轉發?      端口轉發(Port forwarding),有時被叫做隧道,是安全殼(SSH) 為網絡安全通信使用的一種方法。端口轉發是轉發一個網絡端口從一個網絡節點到另一個網絡節點的行為,其使一個外部用戶從外部經過一個被激活的NAT路由器到達一個在私有內部IP地址(局域網內部)上的一個端口。 為什么需要端口轉發? …

    2017-04-13
  • 8.1作業

    8月1日作業 創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser [root@localhost ~]# useradd -u 1234 -g bin -G root,ftp&…

    Linux干貨 2016-08-04
  • 使用haproxy代理LAMP、LNMP 實現WordPress發布

    haproxy簡介 HAProxy是專業的反向代理軟件,它可以支持4層和7層代理服務。其配置包含一下幾個配置段: global:全局設置,通常與操作系統有關 defaults:配置默認參數,可以被frontend、backend、listen組件利用 frontend:接收親請求的前虛擬節點 backend:后端服務集群的配置,一個backend可以對應多個…

    2017-05-17
  • Linux命令格式及常用命令詳解

    Linux命令格式及常用命令詳解 Linux的命令格式 COMMAND OPTIONS ARGUMENTS COMMAND 表示要執行的命令 OPTIONS 表示命令的運行特性 RGUMENTS 命令的作用對象,有時可以包含多個對象,空格隔開 常用命令詳解 ifconfig 功能描述:獲取網絡接口配置信息或配置網絡接口 命令格式: ifconfig [-a]…

    Linux干貨 2017-07-02
  • CentOS程序包管理

    對于Linux系統而言,其能執行的程序為二進制格式,而對于程序開發者而言,直接利用二進制開發程序是不太現實的,所以一般都是利用高級語言來進行軟件開發,其程序也即稱為源代碼;那么我們在對一個程序進行安裝、升級、卸載、 查詢、校驗等操作時,需要對每個源代碼進行編譯成為二進制程序,那么顯然是不太現實的。所以在各Linux發行版中一般都帶有程序包管理器。 所謂程序包…

    Linux干貨 2016-08-25

評論列表(1條)

  • renjin
    renjin 2017-04-05 14:57

    總結了bash的一些特性,和linux下的一些基礎的命令,內容寫的很好,排版上可以再往好的弄弄

欧美性久久久久