Linux中BASH的特性
Shell本身是應用程序,是用戶與操作系統之間完成交互式操作的一個接口程序,為用戶提供簡化的操作。
Bourne Again Shell,簡稱bash,是Linux系統中默認的shell程序。
Bash的特性:
一、命令的別名(自定義命令)
alias(內嵌命令),定義或顯示別名
使用\COMMAND ,將使用原本的命令而不是自定義後的命令
註意:如果alias命令不帶任何選項和參數,則表示顯示所有已經定義並生效的別名設置
# alias ALIAS=‘COMMAND [OPTION]...[ARGUMENT]...‘
unalias,從別名定義列表中刪除一個名字
-a,刪除所有別名定義
註意:無論使用alias還是unalias,其功能都會立即生效;但是這兩個命令的生命周期等於當前shell的生命周期,一旦註銷此次登錄,相當於關閉了bash,則使用alias命令定義的別名或使用unalias命令刪除的別名會立即失效。每個用戶有一個私有bash文件在用戶家目錄中,文件名為.bashrc,修改後重新啟動bash程序或者source命令或"."才會生效,
二、bash的快捷鍵:
C:表示ctrl鍵
M:表示Alt鍵
E:表示ESC鍵
DEL:表示backspace鍵
常用:
C-l:清屏
C-a:把光標跳轉到行首
C-e:把光標跳轉到行尾
C-k:刪除光標所在位置至行尾的內容
C-u:刪除光標所在位置至行首的內容
C-c:結束前臺進程
M-.:引用上一個命令當中的最後一個參數(在Xshell中不能使用)
E,.:功能同M-.
三、命令歷史:
Bash進程會保存其繪畫中的用戶曾經執行過的命令,以方便用戶重復執行某個操作;
命令歷史包括兩個方面:
1.用戶曾經執行過的命令
2.用戶曾經執行過的命令的路徑
在Bash中有一個內置的變量--PATH,PATH變量的值為當前系統中所有的命令的文件所在的路徑的集合
命令如何被shell執行的?
Bash會將命令行的內容按照空白字符進行切片,判斷第一個切片的內容是內部命令還是外部命令,如果是內部命令則直接運行,
使用hash命令查看被記住的命令文件的路徑
-r,清空哈希表
使用history命令查看被記住的命令的命令行參數;
-c,清空歷史緩沖區的命令歷史記錄
-d OFFSET,刪除指定行命令
重復使用歷史緩沖區的命令
!OFFSET,直接調用history中對應行的命令
!STRING,以STRING開頭的最後的一次命令
!?STRING,包含了STRING的最後一次命令
!-NUMBER,倒數第NUMBER次的命令
C-r,查找命令
!$,在歷史緩沖區中調用最後一個命令的最後一個參數
!^,最後一個命令的第一個參數
!:NUMBER,在歷史緩沖區中調用最後一個命令的第NUMBER位置的參數
!SEQUENCE:NUMBER,調用第SEQUENCE行的命令的第NUMBER位置的參數
在bash中與命令歷史相關的內置變量
HISTSIZE,歷史緩沖區能保存的最大條目數量,默認是1000
HISTFILESIZE,~/.bash_history文件中能夠保存的命令歷史最大條目數,默認1000
HISTTIMEFORMAT,在命令歷史緩沖區中記錄命令時同時記錄命令執行的時間戳,可以使用date命令的FORMAT來表示時間的記錄格式,默認值為空
HISTCONTROL,控制命令歷史的記錄方式,當為以下值時
ignoredups,忽略連續且相同的命令,為默認值
ignorespace,忽略以空白字符開頭的命令
ignoreboth,以上兩種情況都不會被記錄
四、命令補全
1.構成命令字符串的補全
參考PATH變量中的路徑,對命令進行補全(tab鍵)。如果給出的字符串在PATH變量對應的路徑中是唯一的,則直接補全命令,如果給出的字符串在PATH變量對應的路徑不唯一,則bash給出提示(兩下Tab鍵)
2.命令中參數所對應的字符串的補全
根據給出的路徑進行補全
五、命令行展開
1.~,bash會自動將其展開為當前登錄用戶的家目錄
~STRING,bash會自動將其展開為以STRING為用戶名的家目錄
~+,調用bash的內置變量"PWD"的值
~-,調用bash的內置變量"OLDPWD"的值
2.{},
在"{}"中,可以填充一個以","分隔的路徑填充的列表,bash會將其展開為單獨的命令
1.txt{,.bak} == 1.txt 1.txt.bak
六、命令的執行結果
在bash中命令的執行結果有兩種
1.執行命令的輸出結果
命令引用或命令替換
``或$(),引用命令的輸出結果
2.執行命令的狀態返回值
表示此前的一個命令是否成功執行
bash使用 $? 變量來保存其內容,其取值範圍為0到255,其中0表示命令執行成功,1-255表示命令執行失敗
1,2,127是bash內置的命令執行失敗的狀態返回值
1一般表示一些小問題
2表示嚴重問題
127表示命令本身出現問題
其余數字用戶可以自定義錯誤信息
七、引用功能
強引用‘‘,bash在處理時,引用的內容全部視為普通字符,但單引號本身除外
弱引用"",有些特殊字符仍然會保留特殊含義,如$、 \、 ""
八、轉義功能
\,bash所定義的轉義字符,只能夠將其後面一個字符轉義
\COMMAND,取消定義過的命令別名,使用原本的功能
九、Globbing——文件名通配符,簡稱為glob
*,匹配任意長度的任意字符或者字符串,某些特殊位置的. 字符不能匹配
?,匹配任意單個字符,某些特殊位置的. 字符不能匹配
[],匹配指定範圍內的任意單個字符,必須且只能匹配一個字符
指定範圍的方法:
1.枚舉法,列出所有有效字符
2.範圍指定,
[0-9],表示所有單個十進制數字
[a-z],a,A,b,B,...,y,Y,z
[A-Z],A,b,B,c,...,Y,z,Z
3.bash內建字符集
[:lower:],所有小寫字母
[:upper:],所有大寫字母
[:alpha:],所有字母
[:digit:],所有一位數字
[:alnum:],所有字母數字
[:punct:],所有的符號
[:space:],表示空白字符,包括空格和制表符
4.反向匹配 ^
實例: #ls a[^[:dight:]]??
十、管道
|,通常用來連接多個命令,將管道符號前面的命令輸出結果作為後一個命令的參數
wc,統計文件或字符串的字節、行、字數
-c,僅顯示文件中的字節數
-m,僅顯示文件中有效字符的數量
-l,僅顯示文件的行數
-w,僅顯示文件中字的數量
十一、輸入輸出重定向
在使用計算機的時候,實現某個功能的主體是程序
程序=指令+數據
數據是至關重要的
在Linux系統中,能夠完成輸入和輸出功能的實體:文件
可以用於輸入的設備:文件
鍵盤設備、文件系統中的常規文件、網卡設備、聲卡設備、磁盤設備等;
可以用於輸出的設備:文件
顯示器、文件系統中的常規文件、網卡設備、聲卡設備,磁盤設備
在內存中使用文件的方式是定義文件描述符,一個文件描述符對應一個文件
0,表示標準輸入,鍵盤輸入的數據流
1,表示標準輸出,到顯示器的輸出數據流
2,表示標準錯誤,到顯示器的錯誤數據流
輸入輸出重定向(IO重定向):采用非標準設備文件實現的IO操作
輸入重定向
<,大多時候可省略
輸出重定向
>,覆蓋輸出重定向
~]# set -C 開啟防止以外覆蓋源文件開關,可以使用">|"符號完成覆蓋重定向輸出的操作,而無需關心是否開啟此開關
~]# set +C 關閉防止以外覆蓋源文件開關
>>,追加輸出重定向
錯誤重定向
2>
2>>
合並標準輸出和標準錯誤的重定向
1.COMMAND {>|>>} /PATH/TO/SOMEFILE 2>&1
2.&>、 &>>
特殊的設備文件
/dev/null 位桶
/dev/zero 泡泡機,吐零機
bash中的特殊符號
<<,此處文檔,結束標記
<<< ,此處字符串,結束標記
Linux中BASH的特性