Bash基礎

1.Shell

要了解bash之前,我們首先要知道shell是什么。維基百科中對shell的定義如下:

In computing, a shell is a user interface for access to an operating system's services. In general, operating system shells use either a command-line interface (CLI) or graphical user interface (GUI), depending on a computer's role and particular operation. It is named a shell because it is a layer around the operating system kernel

也就是說,shell其實就是將內核中的系統調用函數包裝起來,讓我們更方便的與內核進行交流。

2.Bash

在Linux中可以使用的shell有很多很多,例如bash,csh,zsh等等。這些shell區別就像汽車有許多品牌一樣,其制作方式和內部處理過程不同,但都是為了相同的功能。而Bash是所有shell中比較常用的一個。

2.1Bash的十大特性

2.1.1 命令行展開

例如,我們需要在a文件夾下創建b文件夾和c文件夾,我們有兩種辦法:

mkdir a/b a/c

但是這種辦法有一個問題在于如果路徑名太長,那么我們創建起來很花費時間。所以這里我們可以使用命令行展開“{}”來完成:

mkdir a/{b,c}

2.1.2 別名

在bash中,我們可以對任何一個命令取別名。我們使用alias命令可以查看系統中存在的別名,如下圖:

alias命令

使用unalias可以取消命令別名

2.1.3 歷史

命令history會展示一定數量使用過的命令,如下圖所示:

history命令

!#(#代表數字) 可以使用histroy中的第#個命令

2.1.4 文件名通配符

文件名通配符

2.1.5 常用快捷鍵

常用快捷鍵

2.1.6 命令補全

2.1.7 路徑補全

2.1.8 命令hash

bash會將你使用過的命令路徑記錄在一個哈希表中,使用命令hash可以進行查看,如圖所示。

hash table.png

這樣的好處在于當你第二次使用此命令時,不用在對$PATH進行一次變量,而直接搜索內存中的哈希表,極大的提高了命令的查找速度。

hash使用方法:
1) hash 查看hash表
2) hash -d command 刪除表中的command命令
3) hash -r 清空hash表

2.1.9 變量

2.1.9.1 特點

1)所有變量都被當做字符型變量
2)在使用變量時無需聲明變量類型

2.1.9.2分類

按變量作用于的不同,我們將變量分為三類:
1)本地變量:只能作用于當前shell進程
2)環境變量:可以作用于當前shell進程和其子進程
3)局部變量:作用于代碼片段的變量

2.1.10 多命令執行

在bash中,我們有兩種方式將多個命令一起執行:
1)command1;command2;command3.....
2)使用邏輯連接符:
command1 && command2

值得注意的是,此種方式執行命令時,只有command1執行成功后才會執行command2

command1 || command2

值得注意的是,此種方式執行命令時,只有command1執行失敗后才會執行command2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Bash內置基本變量 PWD : 顯示當前的工作目錄 OLDPWD : 顯示上一次的工作目錄 ~:用戶家目錄 - ...
    魏鎮坪閱讀 1,559評論 0 6
  • bash是Unix shell的一種,在1987年由布萊恩·福克斯為了GNU計劃而編寫。1989年發布第一個正式版...
    dxldeng閱讀 370評論 0 0
  • bash基礎特性(1): 歷史命令 history為歷史命令,在bash中執行后可查看命令執行的歷史。histor...
    Near閱讀 334評論 0 2
  • 在上一篇文章《不過時的技術-Bash腳本》中,我們簡單介紹了Bash腳本,并且學會如何編寫、運行一個Bash腳本。...
    群峰閱讀 453評論 0 1
  • 概述 首先,咱們來了解一下,什么是Shell。操作系統內核給我們提供了各種接口,同時也提供了各種用戶層的庫,理論上...
    keysaim閱讀 1,404評論 0 0