天天看點

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

文本處理類指令:

    wc, tr, cut, sort, uniq, 一共 就這 幾個, 都 挺簡單 的, 不過 非常常用,

1、 wc : 這個 是 做 字元 統計 的 指令, 

    wc [選項] [檔案]...

        -l : 統計行數

        -c : 統計位元組數

        -w : 統計單詞數(這裡 的 單詞 指的是 以 空格 分隔 的 字元串)

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

2、 tr : 轉換字元 或 删除 字元, 這個 指令 主要 用于 大小寫 轉換,字元串 替換 或 删除

        -d : 表示 删除 字元 串

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

3、 cut : 剪切文本, 這裡 的 文本 都是 單行 的, 也就是 cut 一次 隻能 處理 一行 文本

        -d字元: 指定分隔符

        -f#: 指定要顯示的字段

                單個數字: 顯示一個字段

                多個數字,以 逗号 分隔: 顯示多個字段

                -: 連續字段, 如 3-5

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

4、 sort : 排序, 預設是以字元排序的,也就是ASCII碼的值排序的,不過也可以指定數值排序。

    sort [option] file...

            -f:忽略字元大小寫

            -n:比較數值大小

            -t:指定分隔符

            -k:指定分隔後進行比較的字段

            -u:重複的行,隻顯示一次

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

強調一下,sort預設是以行為機關處理檔案的。。

5、 uniq

    -c: 顯示重複的行的次數

    -d: 僅顯示重複的行

    -u: 顯示不曾重複的行

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

ok, 這裡 還是 說 兩個 練習 把, 

練習1: 統計/bin、/usr/bin、/sbin和/usr/sbin等各目錄中的檔案個數;

        # ls /bin | wc -l

練習2: 2、顯示目前系統上所有使用者的shell,要求,每種shell隻顯示一次;

        # cut -d: -f7 /etc/passwd | sort -u

重定向:

    系統 預設 是把輸出 的 資訊 顯示到 顯示器上的,不過 有些 時候 我們 希望 把 顯示 的 資訊 直接 存儲 成 一個 檔案, 這個 時候 就 需要 重定向 了。。

    輸入 和 輸出 其實 是 分為 三種 的, 這些 資訊 預設 都是 顯示 的 顯示器 上 的。。

            标準輸入: stdin :  0

            标準輸出: stdout : 1

            标準錯誤: stderr : 2

I/O 重定向:

    輸入重定向:

           < :  指令 < 檔案  : 這個 表示 指令 以 檔案 的 形式 擷取 stdin(以前是靠鍵盤輸入的。。。)

              << :   指令 << 标記字元串: 這個 叫做 Hear document, 從 stdin 中 讀入, 直到遇到 标記字元串 停止

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

輸入重定向:

            >  : 指令 > 檔案  :  将指令的 輸出 儲存至 檔案(會清空檔案的原有内容)

            >>  :  指令 >> 檔案  :  将指令的輸出 追加 到 檔案, 這個 不會 清空 原有 檔案 了。。

            set -C    :  禁止使用 > 指令, 因為 這個 指令 比較危險,

            set +C   : 允許使用 > 指令

            >|   :   當 > 指令 禁止 時 可以 用 這個, 這個 表示 強制 使用 的 意思。

      /dev/null  : 這個 是 一個 檔案, 也叫做 位桶, 無論 向 裡面 重定向 什麼 都會清空

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

這裡 把 id 指令 的 輸出 結果 重定向 進 了 位桶(感覺就是垃圾桶。。), 之後 我們 看 一下 這個 指令 是否 執行 成功。 , 成功 了 就 說明 這個 使用者 存在, 貌似 就是 這麼 用 的。

錯誤重定向:   這個 和 輸入 重定向 是 差不多 的, 

    2>  :   覆寫

    2>> :   追加

這裡 說 一下 , 一個 指令 執行 成功 的 資訊 和 執行 錯誤 的 資訊 不是 一樣 的, 是以 如果 使用 輸出 重定向, 當 檔案 執行 失敗 時, 他 還是 會 顯示 錯誤 資訊 的。。

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

輸出 和 錯誤 重定向: 這個 就是 輸出重定向 和 錯誤重定向 的 合體 了。。

    &>  : 覆寫

    &>> : 追加

管道:

這個以前 就 說過 了, |  表示 把 上一個 指令 的 執行 結果 當做 下一個 指令 的 輸入, 也 是 一直 在 用 的說。。

tee  :  将标準輸入的内容輸出到螢幕上,并且存儲到檔案中。相當于 一個 三項接口 把。。, 一個 輸入 , 兩個 輸出。。

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

這個指令 貌似 也會 覆寫 檔案 的。 

bash中的算術運算:

declare  :  定義變量 時 定義 變量 的 類型

        -i  : 整數

        -x  : 環境變量

let  var_name=算術表達式  ,  使用 let 指令 就可以 進行 算術 運算 了。。

var_name=$[算術表達式] , 算術運算 的 第二種 方法。。

((var_name=算術表達式)) , 算術表達式 的 第三種 方法。。, 坑! 就 沒有 個 唯一 方法 麼

var_name=`expr $num1 + $num2`  , 這個 是 第四種。。, 服了, bash 一直 都是 亂七八糟 的

7,文本處理、重定向、管道、bash算術運算、腳本 輸入

read 和 單步執行:

read : 輸入,讀入 的 意思。。

read I   表示 讀入 I 變量, 需要 和 使用者進行 互動, 等待 使用者 輸入

        -t    :   等待 使用者 輸入 資訊 的 時間

        -p "字元串"  : 在 讀入 時 顯示 一個 字元串。

7,文本處理、重定向、管道、bash算術運算、腳本 輸入
7,文本處理、重定向、管道、bash算術運算、腳本 輸入

單步執行   :   bash -x 腳本名

練習:  輸入 兩個 整數 A, B , 其中 A < B, 求 A 到 B 之間 所有 整數 之和。