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)雙引號(""):禁止所有的命令行擴展功能但以下特殊符號除外
- 美元符號($)
- 倒引號(`)
- 反斜線(\)
- 驚歎號(!)