Shell編程基礎教程3--Shell輸入與輸出

來源:互聯網
上載者:User

標籤:

3.Shell輸入與輸出
    3.1.echo
        echo命令可以顯示文本行或變數,或者把字串輸出到檔案
        echo [option] string
            -e:解析逸出字元
            -n:斷行符號不換行,linux系統預設斷行符號換行
            逸出字元:\c,\f,\t,\n……
        例子程式

#!/bin/bash#echoecho -e "This echo‘s 3 new lines\n\n\n"echo "OK"echoecho "This echo‘s 3 new lines \n\n\n"echo "This log files have all been done">mylogfile.txt

    3.2.read
        read語句可以從鍵盤或檔案的某一行文本中讀入資訊,並將其賦值給一個變數
        read varible1 varible2...
            如果只指定了一個變數,那麼read將會把所有的輸入賦值給該變數,直至遇到第一個檔案結束符或斷行符號;如果給出了多個變數,它們按順序分別被賦予不同的變數。shell將用空格作為變數之間的分隔字元
        例子程式

#!/bin/bash#readecho -n "First Name:"read firstnameecho -n "Sub Name and Last Name:"read subname lastnameecho -e "Your First Name is: ${firstname}\n"echo -e "Your Sub Name is: ${subname}\n"echo -e "Your Last Name is: ${lastname}\n"

    3.3.cat
        cat是一個簡單而通用的命令,可以用它來顯示檔案內容、建立檔案,還可以用它來顯示控制字元
        cat [options] filename1 ... filename2 ...
            -v:顯示控制字元
            使用cat命令式要注意,它不會在檔案分頁符處2停下來;它會一下顯示完整個檔案。如果希望每次顯示一頁,可以使用more命令或者把cat命令的輸出通過管道傳遞到另外一個具有分頁功能的命令(more、less)中
    3.4.管道  |
        可以通過管道把一個命令的輸出傳遞給另一個命令作為輸入。管道用豎杠|表示
        格式:命令1 | 命令2
        例子: ls -l | grep "myfile"
    3.5.tee
        tee命令把輸出的一個副本送到標準輸出,另一個副本拷貝到相應的檔案中
        tee -a files
            如果希望在看到這個輸出的同時,也將其存入一個檔案,那麼這個命令再適合不過了
            一般用於管道之後。例子:ls | tee -a ls.txt    既將ls的命令結果輸出到標準輸出,又輸出到ls.txt檔案中
    3.6.標準輸入、輸出和錯誤
        在shell中執行命令時,每個進程都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時給出了相應的檔案名稱
            輸入檔案--標準輸入:0(預設是鍵盤,也可以是檔案或其他命令的輸出)
            輸出檔案--標準輸出:1(預設是螢幕,也可以是檔案)
            錯誤輸出檔案--標準錯誤:2(預設是螢幕,也可以是檔案)
        系統中實際上有12個檔案描述符,可以任意使用檔案描述符3~9
    3.7.檔案重新導向
        改變程式啟動並執行輸入來源和輸出地點
            command > filename:把標準輸出重新導向到一個新檔案中
            command >> filename:把標準輸出重新導向到一個檔案中(追加)
            command 1> filename:把標準輸出重新導向到一個檔案中
            command > filename 2>&1:把標準輸出和標準錯誤一起重新導向到一個檔案中
            command 2> filename:把標準錯誤重新導向到一個檔案中
            command 2>> filename:把標準錯誤重新導向到一個檔案中(追加)
            command >> filename 2>&1:把標準輸出和標準錯誤一起重新導向到一個檔案中(追加)
            command < filename1 > filename2:command命令以filename1檔案作為標準輸入,以filename2作為標準輸出
            command < filename:command命令以filename檔案作為標準輸入
            command << delimiter:從標準輸入中讀入,直至遇到delimiter分解符
            command <&m:把檔案描述符m作為標準輸入
            command >&m:把標準輸出重新導向到檔案描述符m中
            command <&-:關閉標準輸入
        例子:
            cat file } sort > sort.out    將file的字串(按每行)排序,並將排序結果輸出到sort.out檔案中
            >nullfile    建立一個空檔案nullfile
            sort < name.txt > name.out    將name.txt的內容作為輸入,排好序後,將結果輸出到name.out
            cat file1 file2 1> file.txt 2> file.err    將cat file1 file2命令的標準輸出結果輸出到file.txt,將該命令的標準錯誤的輸出結果輸出到file.err,分開輸出(測試時,file1存在,file2不存在)
    3.8.合并標準輸出和標準錯誤
        合并標準輸出和標準錯誤的時候,切記shel是從左至右分析相應的命令的
        例子:grep "example" example.txt > grep.out 2>&1    在example.txt裡面尋找"example"字串的內容,標準輸出輸出到grep.out檔案,並將標準錯誤也輸出到grep.out檔案
    3.9.exec
        exec命令可以用來替代當前shell;換句話說,並沒有啟動子shell,使用這一命令時任何現有環境都將被清除,並重啟一個shell
        exec command:其中的command通常是一個shell指令碼
        對檔案描述符進行操作的時候(也只有在這個時候),它不會覆蓋你當前的shell

Shell編程基礎教程3--Shell輸入與輸出

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.