shell簡介
英文單詞shell可直譯爲“貝殼”。“貝殼”是動物作爲外在保護的一種工具。Linux中的shell就是Linux內核的一個外層保護工具,並負責完成用戶與內核之間的交互。
命令是用戶向系統內核發出控制請求,與之交互的文本流。
shell是一個命令行解釋器,將用戶命令解析爲操作系統所能理解的指令,實現用戶與操作系統的交互。
當需要重複執行若干命令,可以將這些命令集合起來,加入一定的控制語句,編輯成爲shell腳本文件,交給shell批量執行。
選擇shell
目前流行的shell主要有幾種:
-
Bourne Shell(簡稱sh)
-
C Shell(簡稱csh)
-
Korn Shell(簡稱ksh)
-
Bourne Again Shell:能夠提供環境變量以配置用戶shell環境,支持歷史記錄,內置算術功能,支持通配符表達式,將常用命令內置簡化。
shell命令格式
username@hostname:direction$
username:用戶名,顯示當前登錄用戶的賬戶名;
hostname:主機名,顯示登錄主機名;
direction:目錄名,顯示當前所處的路徑,當在根目錄下顯示"/",當前在用戶主目錄下顯示爲“~”;
一條命令的三要素之間用空格隔開;
若將多個命令在一行書寫,用分號(;)將命令隔開;
如果一條命令不能在一行書寫完,在行尾使用反斜槓(\)標明該條命令結束;
使用Tab鍵補全命令
查詢命令歷史
history [numberline]
顯然history只能記錄有限條的歷史命令,默認保留500條命令
Bash Shell 將歷史命令容量保存在環境變量HISTSIZE中。
echo $HISTSIZE
顯示歷史命令容量
HISTSIZE=number
修改歷史命令容量
通配符
當需要命令處理一組文件,用戶不必一一輸入文件名,可以使用shell通配符。
通配符 | 含義 | 實例 |
---|---|---|
* | 匹配任意長度的字符串 | 1*.txt代表12.txt,1344.txt等 |
? | 匹配一個長度的字符 | 1?.txt代表12.txt ,13.txt等 |
[…] | 匹配其中指定的一個字符 | 1[ort].txt代表1o.txt,1r.txt,1t.txt |
[-] | 匹配指定的一個字符範圍 | 1[a-z].txt代表1a.txt,1b.txt到1z.txt |
[^…] | 除了其中指定的字符,均可匹配 | 1[^otr].txt 除了1r.txt,1o.txt,1t.txt外 |
管道
管道可以把一系列命令連接起來,意味着第一個命令的輸出將作爲第二個命令的輸入,通過管道傳遞給第二個命令,第二個命令的輸出又將作爲第三個命令的輸入,以此類推。就像通過使用“|”符連成一個管道。
輸入/輸出重定向
輸入/輸出重定向是改變shell命令或程序的標準輸入/輸出目標,重新定向到新的目標。
linux中默認的標準輸入定義爲鍵盤,標準輸出定義爲終端窗口。
用戶可以爲當前操作改變輸入或輸出,迫使某個特定命令的輸入或輸出來源爲外部文件。
重定向符 | 含義 |
---|---|
>file | 將file文件重定向爲輸出源,新建模式 |
>>file | 將file文件重定向爲輸出源,追加模式 |
<file | 將file文件重定向爲輸入源 |
2>/&> | 將由命令產生的錯誤信息輸入到文件中 |
命令置換
命令置換是將一個命令的輸出作爲另一個命令的參數
command1 `command2`
其中,命令2的輸出將作爲命令1的參數。
echo
echo命令用於在標準輸出———顯示器上顯示一段文字,一般起到提示作用。echo命令的一般語法格式:echo [-n] information
選項-n表示輸出文字後不換行。提示信息字符串可以加引號,也可以不加。
/etc/passwd文件
/etc/passwd文件是系統能夠識別的用戶清單。當用戶登錄時,系統查詢這個文件,確定用戶的 UID並驗證用戶口令
/etc/group文件
包含了UNIX組的名稱和每個組中成員列表
每一行代表一個組,包含4個字段;
adduser配置文件
/etc/adduser.conf
pstree
將所有行程以樹狀圖顯示,樹狀圖將會以pid(如果有指定)或是以init這個基本進程爲根,如果有指定使用者id,則樹狀圖會只顯示該使用者所擁有的進程。
文件系統類型
磁盤文件類型:指本地主機中實際可以訪問到的文件系統
網絡文件系統:是可以遠程訪問的文件系統
專有/虛擬文件系統:不駐留在磁盤上的文件系統
目前Ext4是Linux系統廣泛使用的一種文件格式。在Ext3基礎上,對有效性保護、數據完整性、數據訪問速度、向下兼容性等方面做了改進。
最大特點是日誌文件系統:可將整個磁盤的寫入動作完整地記錄在磁盤的某個區域上,以便在必要時回溯追蹤。
SCSI與IDE設備命名
sata硬盤的設備名稱是“/dev/sda”
IDE硬盤的設備名稱是“/dev/hda”
如果很在意系統的高性能和穩定性,應該使用SCSI硬盤
Linux分區的命名方式
字母和數字相結合
前兩個字母表示設備類型
-
hd 代表IDE硬盤
-
sd 代表SCSI或SATA硬盤
第三個字母說明具體的設備
a表示第一個硬盤
b表示第二個硬盤
交換分區
將內存中的內容寫入硬盤或從硬盤中讀出,稱爲內存交換
交換分區最小必須等於計算機的內存
可以創建多於一個的交換分區
儘量把交換分區放在硬盤分區的起始位置
鏈接文件
硬鏈接:是利用Linux中爲每個文件分配的物理編號————inode建立鏈接。因此,硬鏈接不能跨越文件系統
軟鏈接:是利用文件的路徑名建立鏈接。通常建立軟鏈接使用絕對路徑而不是相對路徑,以最大限度增加可移植性。
需要注意的是,如果是修改硬鏈接的目標文件名,鏈接依然有效;如果修改軟鏈接的目標文件名,則鏈接將斷開;對於一個已存在的鏈接文件執行移動或刪除操作,有可能導致鏈接的斷開。假如刪除目標文件後,重新創建一個同名文件,軟鏈接將恢復,硬鏈接不再有效,因爲文件的inode已經改變。
配置IP地址
配置IP地址的方法有兩種:
-
配置靜態IP:在主機進入網絡之前,事先爲主機設置固定的IP地址;
-
配置動態IP:選擇DHCP網絡服務,在主機進入網絡之後,動態隨機獲取IP地址。
動態IP地址獲取
sudo dhclient
動態IP的獲取過程
-
客戶端尋找DHCP服務器
-
服務器提供可分配的IP地址
-
客戶端接受IP地址租借
-
服務器確認租借IP
網絡重啓
sudo /etc/init.d/networking restart
IP地址存放地點
interfaces配置文件:/etc/network/interfaces
DNS客戶端配置文件
resolv.conf配置文件:/etc/resolv.conf中