shell簡介

1、shell的工作原理

       其實當一個用戶以命令行方式登錄Linux系統之後,即就進入了shell應用程序。例如:以dog用戶使用telnet登錄Linux系統之後,就會進入shell的控制。從此時起shell就隨時恭候,等待你的差遣(即等你輸入命令)併爲你保質保量的提供服務(執行輸入的命令)。如果你是以圖形界面登錄,當開啓一個終端窗口後也將進入shell應用程序的控制。跟開啓的dos窗口有些類似。

       shell的功能是將用戶輸入的命令翻譯成Linux內核能夠理解的語言,這樣Linux內核才能真正地操作計算機的硬件。簡而言之,shell就是人與計算機溝通的橋樑。

可以將shell看成用戶與Kernel之間的一個接口。shell主要是一個命令解釋器,它接受並解釋用戶輸入的命令,然後將它們傳給Kernel。最後由Kernel來執行這些命令。

2、使用type識別bash的內置命令

Linux操作系統的命令分爲兩大類,一類是內部命令即內置在bash中的命令;另一類是外部命令(即該命令不是內置在bash中的)外部命令是以可執行文件的方式存儲在Linux的文件系統中的。有時可能需要知道一個命令是內部還是外部命令,如所使用的Linux系統的PATH變量設置的問題,在執行外部命令時可能就需要給出完整的路徑。

那麼怎樣區分哪些命令是外部命令,哪些命令是內部命令呢?即可以使用type命令。

[dog@dog ~]$ man type
使用以上語句命令可以可以查看命令的類型。

type命令的語法格式如下:

type [選項] 命令名

-t:顯示文件的類型,其文件類型如下:

     file:爲外部命令

     alias:爲別名

     builtin:爲bash的內置命令

-a:列出所有包含指定命令名的命令,也包括別名(alias)

-P:顯示完整的文件名(外部命令),或者內部命令

以下是用type命令來顯示pwd命令的類型。

[dog@dog ~]$ type pwd
pwd is a shell builtin
加上選項-a之後如:
[dog@dog ~]$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
加上選項-t之後如:

[dog@dog ~]$ type -t pwd
builtin
加上選項-P之後如:

[dog@dog ~]$ type -P pwd
/bin/pwd
3、使用通配符操作文件

Linux操作系統提供瞭如下的通配符:

*:將匹配0個(即空白)或多個字符

?:將匹配任何一個字符而且只能是一個字符

[a-z]:將匹配字符a~z範圍內的所有字符

[^a-z]:將匹配所有字符但是a~z範圍內的字符除外

[xyz]:將匹配方括號中的任意一個字符

[^xyz]:將匹配不包括方括號中的字符的所有字符

例如我們創建多個文件後,可以使用ls與以上的通配符結合進行查找文件。

4、利用Tab鍵補齊命令行

5、命令行中~符號的使用

(1)如果~符號後面沒有用戶名,則該符號代表當前用戶的家目錄;

(2)如果~符號後面跟一個用戶名,則該符號代表這個用戶的家目錄。

6、history命令與操作曾經使用過的命令

輸入history命令,可以顯示之前使用過的命令,並且最左邊顯示命令編號,因而可以使用命令號重新執行所對應的命令。即輸入“!“(驚歎號)符號,後面緊跟編號即可。

bash中提供的一些快捷鍵的使用如下:

(1)利用鍵盤的上、下箭頭鍵可以在以前使用過的命令之間移動

(2)按Ctrl+R鍵在命令的歷史記錄中搜尋一個命令。當按Ctrl+R鍵之後,會出現如下的提示信息,此時即可輸入要搜尋的內容。

(reverse-i-search)`':

(3)可以使用如下的組合鍵提取上一個命令最後面的參數,即

順序地按Esc+.鍵

同時按Alt+.鍵

7、bash變量簡介及大括號{}的用法

shell變量就是內存中一個命了名的臨時存儲區。變量中所存儲的信息有以下兩種:

(1)按用戶的習慣定製shell所需的信息

(2)使一些進程正常工作所需的信息

在Linux系統中有一個名爲PATH的預定義變量,在這個變量中存放着執行一個命令時要搜尋的路徑,即如果一個命令存儲在PATH所列出的任何一個路徑中,用戶就可以輸入命令名來運行這個命令,其中每一個路徑用:隔開。

[dog@dog ~]$ echo $PATH
以上的命令就可以列出PATH變量的值

使用大括號{}可以一次建立多個文件,例如:

[dog@dog mumdog]$ touch {dog,wolf}
即建立了兩個文件dog和wolf

還可以創建多個文件的類型,例如:

[dog@dog mumdog]$ touch baby.{dog,wolf}
即創建了baby.dog文件和baby.wolf文件

8、講一個命令的輸出作爲另一個命令的參數

[dog@dog ~]$ echo "This computer system's name is 'hostname'"
This is computer system's name is dog.super.com
9、使用Linux命令進行數學運算

[dog@dog ~]$ n1=99;n2=53
[dog@dog ~]$ echo $[$n1+$n2]
[dog@dog ~]$ echo $[$n1-$n2]
[dog@dog ~]$ echo $[$n1*$n2]
[dog@dog ~]$ echo $[$n1/$n2]
[dog@dog ~]$ echo $[$n1%$n2]
10、命令中反斜線(\)的用法

在Linux命令中有些字符已經賦予了特殊的含義,如$符號表示提取一個變量的值,如果要恢復一個特殊字符的原來含義,要在這個特殊字符之前冠以反斜線(\),即\之後的特殊字符逃脫其特殊含義而恢復原來的字面意思。

例如:

[dog@dog ~]$ echo "A baby dog's price is $6839.00"
A baby dog's price is 839.00
因爲在Linux中系統將$6看成了一個shell變量。改爲如下:

[dog@dog ~]$ echo "A baby dog's price is \$6839.00"
A baby dog's price is $6839.00
即可正確顯示。

在命令行中,反斜線(\)還有另外一種用法。如果將反斜線(\)放在命令行的最後,就表示它是一個續行符號,即命令要在下一行繼續。

反斜線(\)最後一種用法是,即放在通配符前恢復其原來的含義。

11、Linux命令中引號的用法

(1)單引號('):禁止所有的命令行擴展功能

(2)雙引號(""):禁止所有的命令行擴展功能但以下特殊符號除外

  • 美元符號($)
  • 倒引號(`)   
  • 反斜線(\)
  • 驚歎號(!)      








發佈了36 篇原創文章 · 獲贊 15 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章