Linux學習之路 4---bash特性

    Linux上可運行的Shell有很多種,例如sh、csh、ksh、bash、tcsh、zsh等,不同的Shell可能在軟件下載和部分命令上有所不同。目前大多數Linux上默認的Shell是bash。

    在bash中,用#和$區分root用戶和普通用戶:

[root@promote ~]#     //root用戶
[hadoop@promote ~]$   //普通用戶

1.bash命令行快捷鍵

有時候可能一條命令會很長,刪除和修改都會很麻煩,bash提供了一系列的快捷鍵來進行快速操作:

Ctrl+A :跳到行首
Ctrl+E :跳到行尾
Ctrl+U :刪除當前光標所在位置至行首的內容
Ctrl+K :刪除當前光標所在位置至行尾的內容
Ctrl+L :清屏
Ctrl+C :停止執行

2.命令補全

在bash中,可以使用Tab鍵進行命令補全,連續按兩次Tab鍵可以查看那些命令可以進行補全。

3.命令歷史

bash中執行過的命令會緩存到內存中,正常退出時會保存到相應的配置文件。

使用history命令查看曾執行過的命令。有幾個與命令歷史相關的環境變量:

HISTFILE :配置文件路徑
HISTSIZE :最大緩存數
HISTFILESIZE :配置文件中可保存的命令數
HISTCONTROL :命令歷史記錄設置
        ignorespace :以空白字符開頭的命令不會記錄
        ignoredups :忽略重複的命令
        ignoreboth :以上兩者都生效

history的一些選項:

    -c:清空緩存中的命令歷史
    -w: 保存緩存中的命令歷史至配置文件
    -a: 追加緩存中的命令歷史至配置文件
    -d N:刪除第N條命令
    -d N M:從地N條開始刪除M條命令

一些配合命令歷史執行的命令:

!N :執行命令歷史中的第N條
!! :執行上一條命令
!-N :執行倒數第N條命令
!STR :執行最近一條以STR開頭的命令

4.bash文件通配符

文件通配符是一些特殊的字符,可以進行文件名匹配,其不表示字面意義,每個通配符都具有特殊意義:

* :匹配任意長度的任意字符字符
? :匹配任意單個字符
[] :匹配指定範圍內的任意單個字符,如:
     a[xyz]b會匹配axb ayb azb
     [[:alpha:]] = [a-zA-Z]
     [[:digit:]] = [0-9]
     [[:lower:]] = [a-z]
     [[:upper:]] = [A-Z]
     [[:space:]] = 空白字符
     [[:alnum:]] = [a-zA-Z0-9]
     [[:punct:]] = 可打印字符
[^] :取反,例如
     [^a-z] : 不匹配小寫字母一次

5.bash變量

在bash中,變量可以分爲本地變量、環境變量、特殊變量和位置變量。

    5.1本地變量

    本地變量的作用範圍僅限與本bash,對其他bash和子bash無效。

    可以使用echo命令查看變量值:

echo $HISTSIZE
echo的幾個常用選項:
-n:不換行顯示
-e:使用轉義字符
    對於變量的類型,bash中默認全部是字符型,當需要使用不同類型的變量時,可以使用declare命令
declare [options] VAR
options:
-i:聲明變量爲整型
-r:聲明爲只讀變量 等價於 readonly VAR[=VALUE]
-n:聲明爲數組

    當然,對於一般的變量而言,可以不使用declare,直接進行賦值使用就行,即“拿來就用”。

    對於釋放變量,使用unset命令即可。

    變量的引用:${VAR},花括號一般可以省略,但有些場合下不能省。

    5.2環境變量

    環境變量的作用範圍是當前bash和其子bash。

    將本地變量聲明爲環境變量或直接聲明環境變量:

export VAR[=VALUE]

    或

declare -x VAR[=VALUE]
    查看當前bash的環境變量:printenv和export命令。
    部分系統環境變量解釋:
HOSTNAME :當前主機名
SHELL :當前用戶shell路徑
HISTFILE :配置文件路徑
HISTSIZE :最大緩存數
HISTFILESIZE :配置文件中可保存的命令數
HISTCONTROL :命令歷史記錄設置
OLPWD :上一次路徑
PWD :當前路徑
USER :當前用戶
MAIL :當前用戶郵件緩衝隊列
PATH :path中包含的文件路徑
PS1 :命令提示符顯示的東西
PS2 :續航符符號

    5.3特殊變量和位置變量

    特殊變量和位置變量大部分都與shell編程有關。

特殊變量:
$? :保存着上一條命令的執行情況,0爲成功,非零爲失敗
$# :保存shell編程中用戶輸入的參數個數
$*和$@ :參數列表
位置變量:
$1 $2 $3... 分別保存用戶輸入的第N條參數,$0保存的是當前命令的絕對路徑

    5.4bash中引號的使用

    單引號(''):表示強引用,即其中的所有內容都會被認爲是原字符串,不會進行變量替換。

    雙引號(""):弱引用,會進行變量替換。

    反引號(``):返回命令的執行結果,實現命令替換。例如:

makedir "file-`data +%T`"

    data是獲取當前時間的命令。

6.bash中的配置文件簡介

    讀取順序:

交互式:/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bahsrc --> /etc/bashrc
非交互式:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*

    profile類:與環境變量的設定和運行腳本有關

    bashrc類:與本地變量設定和設定命令別名有關

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