1.4 Bash的命令行展開和Bash環境的配置

使用read命令來接受輸入

使用read來把輸入值分配給一個或多個shell變量
-p 指定要顯示的提示
-s 靜默輸入,一般用於密碼
-n N 指定輸入的字符長度N
-d ‘字符’ 輸入結束符
-t N TIMEOUT爲N秒
read 從標準輸入中讀取值,給每個單詞分配一個變量
所有剩餘單詞都被分配給最後一個變量
read -p “Enter a filename: “ FILE

bash如何展開命令行

1、將命令行傳入bash。

2、解析引用分割爲單個單詞:

shell中有3種引用方式:轉義、強引用和弱引用。

    反斜線轉義:使得元字符變爲普通的字面字符。但這隻能對反斜線後一個字符進行轉義。
    單引號強引用:單引號內的所有字符全部變爲字面符號符號。
    雙引號弱引用:使雙引號內所有字符變爲字面符號,但"\"、"$"、"`"除外,如果使用"!"引用歷史命令時,則感嘆號也除外

[root@CentOS7 ~]# PWD=pwd
[root@CentOS7 ~]# echo $PWD
/root
[root@CentOS7 ~]# echo '$PWD'
$PWD
[root@CentOS7 ~]# echo "$PWD"
/root
[root@CentOS7 ~]# echo "$\PWD"
$\PWD

在解析引用後,shell會把命令分割單詞,分隔符包括:空格、tab、分號、管道符號、&、&&、||、重定向符號、圓括號等。

    3、檢查命令行結構,是否有語法錯誤。

    4、將命令行中的別名展開。在腳本中無法使用別名

    5、展開聲明,將各種聲明中的語句展開並分割爲單詞。

shell對聲明的展開有規定的順序:

    1)大括號展開:操作大括號中的語句,傳遞給命令並將結果替換

    2)波浪號展開:替換爲用戶的家目錄

    3)變量擴展:即操作和替換變量值

    4))命令替換:此過程將執行命令替換中的命令,並將結果替換到單詞的對應位置處

    5)進程替換:將進程的執行結果替換到對應位置。類似於命令替換

    6)算術擴展:計算算術值,並將計算結果替換到對應位置處

    7)文件名擴展:搜索匹配通配符條件的文件。

    6、去除用於引用的引號。

    7、執行命令,並返回退出狀態值。

Bash環境的配置

$-變量
h:hashall,打開這個選項後,Shell 會將命令所在的路徑hash下來,避免每次
都要查詢。通過set +h將h選項關閉
i:interactive-comments,包含這個選項說明當前的 shell 是一個交互式的
shell。所謂的交互式shell,在腳本中,i選項是關閉的。
m:monitor,打開監控模式,就可以通過Job control來控制進程的停止、繼
續,後臺或者前臺執行等。
B:braceexpand,大括號擴展
H:history,H選項打開,可以展開歷史列表中的命令,可以通過!感嘆號來完
成,例如“!!”返回上最近的一個歷史命令,“!n”返回第 n 個歷史命令

bash的配置文件

profile類:爲交互式登錄的shell提供配置

全局:/etc/profile, /etc/profile.d/*.sh
    個人:~/.bash_profile

功能:(1) 用於定義環境變量(2) 運行命令或腳本

bashrc類:爲非交互式和交互式登錄的shell提供配置
    ```

全局:/etc/bashrc
個人:~/.bashrc

功能:(1) 定義命令別名和函數(2) 定義本地變量

配置文件在修改後,需要將其讀入內存才能生效,否則只能等待下一次重啓後生效

   讀入內存:. 或者 source 配置文件。

Bash的兩種登陸方式

交互式登錄:

    (1)直接通過終端輸入賬號密碼登錄
    (2)使用“su - UserName” 切換的用戶
    執行順序:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登錄:

    (1)su UserName
    (2)圖形界面下打開的終端
    (3)執行腳本
    (4)任何其它的bash實例
    執行順序: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章