Bash腳本編程(1)——基礎特性

@(Bash)[基礎特性]


1. 命令別名(alias)

1.1 alias命令實現

  • (1) alias
    顯示當前shell進程所有可用的命令別名;
  • (2) alias NAME='VALUE'
    定義別名NAME,其相當于執行命令VALUE;

注意:在命令行中定義的別名,僅對當前shell進程有效;如果想永久有效,要定義在配置文件中。
僅對當前用戶:~/.bashrc,對所有用戶有效:/etc/bashrc

Note: 編輯配置給出的新配置不會立即生效;

bash進程重新讀取配置文件:

  • source /path/to/config_file
  • . /path/to/config_file

1.2 撤消別名unalias

unalias [-a] name [name ...]

Note: 如果別名同原命令的名稱,則如果要執行原命令,可使用"\COMMAND"。

2. glob

bash中用于實現文件名“通配”

2.1 通配符

  • (1) *
    任意長度的任意字符
    a*b

  • (2) ?
    任意單個字符
    a?b

  • (3) []
    匹配指定范圍內的任意單個字符
    [0-9]
    [a-z]:不區分字符大小寫

  • (4) [^]
    匹配指定范圍外的任意單個字符
    [^0-9]

2.2 專用字符集合

  • [:digit:]
    任意數字,相當于0-9
  • [:lower:]
    任意小寫字母
  • [:upper:]
    任意大寫字母
  • [:alpha:]
    任意大小寫字母
  • [:alnum:]
    任意數字或字母
  • [:space:]
    空格符號
  • [:punct:]
    標點符號

實戰練習:

1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄;
# ls -d /var/l*[0-9]*[[:lower:]]

2、顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄;
# ls -d /etc/[0-9]*[^0-9]

3、顯示/etc/目錄下,以非字母開頭,后面跟了一個字母及其它任意長度任意字符的文件或目錄;
# ls /etc/[^[:alpha:]][[:alpha:]]*

3. Bash的快捷鍵

  • Ctrl+l
    清屏,相當于clear命令
  • Ctrl+a
    跳轉至命令開始處
  • Ctrl+e
    跳轉至命令結尾處
  • Ctrl+c
    取消命令的執行
  • Ctrl+u
    刪除命令行首至光村所在處的所有內容
  • Ctrl+k
    刪除光標所在處至命令行尾部的所有內容

4. Bash的的I/O重定向及管道

打開的文件都有一個 fd : file descriptor (文件描述符),及用來用來描述一個文件的標示符號,其中存放著一些特性信息。

重定向分類:

  • 標準輸入:keyborad, 0
  • 標準輸出:monitor, 1
  • 標準錯誤輸出:monitor, 2

4.1 輸出重定向

格式: COMMAND > NEW_POS, COMMAND >> NEW_POS

相關標示:

  • >:覆蓋重定向,目標文件中的原有內容會被清除;

  • >>: 追加重定向,新內容會追加至目標文件尾部;

  • set -C: 禁止將內容覆蓋輸出至已有文件中;強制覆蓋:>|

  • set +C: 打開

  • 2>: 覆蓋重定向錯誤輸出數據流;

  • 2>>: 追加重定向錯誤輸出數據流;

標準輸出和錯誤輸出各自定向至不同位置

  • COMMAND > /path/to/file.out 2> /path/to/error.out

合并標準輸出和錯誤輸出為同一個數據流進行重定向

  • &>:覆蓋重定向

  • &>>:追加重定向

  • COMMAND > /path/to/file.out 2> &1

  • COMMAND >> /path/to/file.out 2>> &1

4.2 輸入重定向

cat << EOF
cat > /path/to/somefile << EOF

4.3 管道、tr命令和tee命令

管道
COMMAND1 | COMMAND2 | COMMAND3 |...

Note:最后一個命令會在當前shell進程的子shell進程中執行

tr命令:轉換或刪除字符
tr [OPTION]... SET1 [SET2]

tee命令
tee [OPTION]... [FILE]...

將登錄至將前系統上用戶信息中的后3行的信息轉換為大寫后保存至/tmp/who.out文件中;
# who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out

5 文本處理工具

5.1 wc命令

格式:wc [OPTION]... [FILE]...

參數選項:

  • -l
    lines
  • -w
    words
  • -c
    characters

5.2 cut命令

格式:cut [OPTION]... [FILE]...

參數選項:

  • -d DELIMITER
    指明分隔符
  • -f FILEDS
  • #: 第#個字段
  • #,#[,#]:離散的多個字段,例如1,3,6
  • #-#:連續的多個字段, 例如1-6
  • 混合使用:1-3,7

5.3 sort命令

格式:sort [OPTION]... [FILE]...

參數選項:

  • -f
    忽略字符大小寫
  • -r
    逆序
  • -t DELIMITER
    字段分隔符
  • -k #
    以指定字段為標準排序
  • -n
    以數值大小進行排序
  • -u
    排序后去重

5.4 uniq命令

格式:uniq [OPTION]... [FILE]...

參數選項:

  • -c
    顯示每行重復出現的次數;
  • -d
    僅顯示重復過的行;
  • -u
    僅顯示不曾重復的行;

Note: 連續且完全相同方為重復

留給你一個練習:

以冒號分隔,取出/etc/passwd文件的第6至第10行,并將這些信息按第3個字段的數值大小進行排序,最后僅顯示的各自的第1個字段

6. 思維導圖

基礎特性
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容