<em id="pn7p8"><acronym id="pn7p8"><u id="pn7p8"></u></acronym></em>

    <th id="pn7p8"></th>

    <button id="pn7p8"></button>

      <dd id="pn7p8"></dd>
      <progress id="pn7p8"><track id="pn7p8"></track></progress>

      Linux培訓
      達內IT學院

      400-111-8989

      bash shell 的一些主要特性

      • 發布:Linux培訓
      • 來源:Linux運維
      • 時間:2017-02-08 15:21

      bash shell 是可用于 Linux 的幾個 shell 之一,也被稱為 Bourne-again shell,是根據一個早期的 shell (/bin/sh) 的創建者 Stephen Bourne 來命名的。Bash 高度兼容 sh,但它在函數和編程功能上都提供了許多改進。它合并了來自 Korn shell (ksh) 和 C shell (csh) 的特性,想要成為一個符合 POSIX 的 shell。

      在深入了解 bash 之前,回想一下 shell是一個接受和執行命令的程序。它還支持編程結構,允許使用更小的部件構建復雜的命令。這些復雜命令或 腳本可保存為文件,獨自成為新命令。實際上,典型 Linux 系統上的許多命令 都是腳本。

      Shell 有一些 內置命令,比如 cd、break和 exec。其他命令是 外部命令。

      Shell 也使用 3 種標準 I/O 流:

      stdin是 標準輸入流,它向命令提供輸入。

      stdout是 標準輸出流,它顯示來自命令的輸出。

      stderr是 標準錯誤流,它顯示來自命令的錯誤輸出。

      輸入流向程序提供輸入,這些輸入通常來自終端擊鍵。輸出流打印文本字符,通常打印到終端。終端最初為 ASCII 打字機或顯示終端,但現在通常是圖形桌面上的窗口。有關如何重定向這些標準 I/O 流的更多細節,將會在本 系列的另一篇教程中介紹。

      命令和序列

      shell 的主要功能是解釋您的命令,以便您可以與 Linux 系統交互。在 Linux(和 UNIX?)系統上,命令有一個 命令名,然后擁有 選項和 參數。一些命令既沒有選項也沒有參數,一些命令只有其中一種。

      如果某一代碼行包含一個 # 字符,那么該行上的所有剩余字符都會被忽略。所以 # 字符既可以表示注釋,也可以表示根用戶提示符。從上下文可以明顯看出它應表示什么。

      Echo

      echo命令將其參數打印(或回送)到終端,如下所示。

      Echo 示例

      [root@opsexm ~]$ echo Word

      Word

      [root@opsexm ~]$ echo A phrase

      A phrase

      [root@opsexm ~]$ echo Where are my spaces?

      Where are my spaces?

      [root@opsexm ~]$ echo "Here are my spaces." # plus comment

      Here are my spaces.

      在 上面的第 3 個示例中,所有額外的空格在輸出中都被壓縮為單個空格。為避免這種情況,需要使用雙引號 (") 或單引號 (') 給字符串 加上引號。Bash 使用 空白(比如空格、制表符和換行符)將輸入行分割為 記號 (token),然后傳遞給命令。給字符串加上引號會保留額外的空白,使整個字符串成為一個記號。在上面的示例中,命令名后的每個記號都是一個參數,所以我們分別有 1、2、4 和 1 個參數。

      echo 命令有兩個選項。通常,echo 會在輸出的末尾處附加一個換行符。可使用 -n選項禁止此行為。可使用 -e選項讓某些經過反斜杠轉義的字符具有特殊的含義。一些字符如 下列表中所示。

      Echo 和轉義字符

      轉義字符序列 功能

      \a 警報(鬧鐘)

      \b 退格

      \c 禁止結尾的換行符(等效于 -n 選項)

      \f 換頁(清除視頻顯示器上的屏幕)

      \n 換行

      \r 回車

      \t 水平制表符

      轉義和續行

      在 bash 中使用反斜杠有一個小問題。當為給反斜杠字符 (\) 加上引號時,它可以充當一個轉義字符來告訴 bash 本身保留后面的字符的字面含義。這對特殊的 shell 元字符很有必要,我們稍后會介紹元字符。此規則有一個例外:反斜杠后跟一個換行符會導致 bash 合并兩個字符,將該序列視為一個續行請求。這樣可以很方便地分割較長的行,尤其是在 shell 腳本中。

      要讓 echo命令或其他許多使用類似轉義控制字符的命令正確處理上述序列,必須將轉義序列放在引號中,或者作為引號中的字符串的一部分,除非您使用了第二個反斜杠讓 shell 將其中一個保留給命令。下面例子給出了 \ 的各種用法的一些示例。

      更多 echo 示例

      [root@opsexm ~]$ echo -e "No new line\c"

      No new line[root@opsexm ~]$ echo "A line with a typed

      > return"

      A line with a typed

      return

      [root@opsexm ~]$ echo -e "A line with an escaped\nreturn"

      A line with an escaped

      return

      [root@opsexm ~]$ echo "A line with an escaped\nreturn but no -e option"

      A line with an escaped\nreturn but no -e option

      [root@opsexm ~]$ echo -e Doubly escaped\\n\\tmetacharacters

      Doubly escaped

      metacharacters

      [root@opsexm ~]$ echo Backslash \

      > followed by newline \

      > serves as line continuation.

      Backslash followed by newline serves as line continuation.

      請注意,當您鍵入的一行中包含不匹配的引號時,bash 會顯示一個特殊提示符 (>)。您的輸入字符串會延續到第二行,并包含換行符。

      Bash shell 元字符和控制運算符。

      Bash 有多個 元字符,在未加引號時,它們的作用是將輸入分解為單詞。除了空格之外,元字符還包括:

      |

      &

      ;

      (

      )

      <

      >

      我們將在本教程的其他部分更詳細討論其中一些元字符。但現在需要注意的是,如果想要包含元字符作為文本的一部分,則必須將它放在引號中或使用反斜杠 (\) 轉義,如 下方例子中所示。

      換行符和某些元字符或元字符對也可以用作 控制運算符。它們是:

      ||

      &&

      &

      ;

      ;;

      |

      (

      )

      這些控制運算符中的部分運算符可用于創建命令 序列或 列表。

      最簡單的命令序列是由一個分號 (;) 分開的兩個命令。每個命令按順序執行。在任何可編程環境中,命令都會返回成功或失敗指示;Linux 命令通常返回 0 值表示成功,在失敗時返回非 0 值。可以使用 && 和 || 控制運算符向列表中引入一些條件處理。如果使用控制運算符 && 將兩個命令分開,當且僅當第一個命令返回退出值 0 時,才會執行第二個命令。如果使用 || 分離這些命令,那么只在第一個命令返回非 0 的退出代碼時,才會執行第二個命令。清單 5給出了一些使用 echo 命令的命令序列。這些命令序列不是很有趣,因為 scho 返回了 0,但是在后面有更多命令可用時,您會看到更多例子。

      命令序列

      [root@opsexm ~]$ echo line 1;echo line 2; echo line 3

      line 1

      line 2

      line 3

      [root@opsexm ~]$ echo line 1&&echo line 2&&echo line 3

      line 1

      line 2

      line 3

      [root@opsexm ~]$ echo line 1||echo line 2; echo line 3

      line 1

      line 3

      Exit

      可以使用 exit命令終止 shell。可以提供一個退出代碼作為參數,此操作是可選的。如果在圖形桌面上的終端窗口中運行 shell,您的窗口將會關閉。類似地,如果使用 ssh 或 telnet(舉例而言)連接到遠程系統,您的連接將終止。在 bash shell 中,還可以按住 Ctrl鍵并按下 d鍵來退出。

      讓我們看看另一個控制運算符。如果將一個命令或命令列表放在括號中,該命令或序列會在一個子 shell 中執行,所以 exit 命令會退出子 shell,而不是退出您所在的 shell。下方例子給出了一個結合使用 &&、|| 和兩個不同的退出代碼的示例。

      子 shell 和序列

      [root@opsexm ~]$ (echo In subshell; exit 0) && echo OK || echo Bad exit

      In subshell

      OK

      [root@opsexm ~]$ (echo In subshell; exit 4) && echo OK || echo Bad exit

      In subshell

      Bad exit

      預約申請免費試聽課

      填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

      上一篇:在Linux中設置sudo的十條sudoers實用配置
      下一篇:沒有下一篇了

      如何在 Shell 腳本中跟蹤調試命令的執行

      • 掃碼領取資料

        回復關鍵字:視頻資料

        免費領取 達內課程視頻學習資料

      • 視頻學習QQ群

        添加QQ群:1143617948

        免費領取達內課程視頻學習資料

      Copyright ? 2018 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

      選擇城市和中心
      黑龍江省

      吉林省

      河北省

      湖南省

      貴州省

      云南省

      廣西省

      海南省

      高清特黄a大片,日本真人真做爰,特级做人爱C级,免费a级毛片 百度 好搜 搜狗
      <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>