linux基礎知識1
一、Linux的磁碟分割槽及目錄
Linux的配置是通過修改配置檔案來完成。
1.1、Linux磁碟分割槽
Linux可以將磁碟分為多個分割槽,每個分割槽可以被當做一個獨立的磁碟使用,磁碟型別:主分割槽、擴充套件分割槽、邏輯分割槽。
主分割槽標記為活動,用於作業系統的引導,一塊磁碟最多劃分4個主分割槽,主分割槽存放作業系統的檔案或使用者資料。
擴充套件分割槽:主分割槽小於4個時才可以劃分擴充套件分割槽,一塊磁碟最多有一個擴充套件分割槽,擴充套件分割槽不能儲存任何資料,必須在擴充套件分割槽中進一步劃分邏輯分割槽,使用者資料只能儲存在邏輯分割槽中。
邏輯分割槽:擴充套件分割槽中可以建立多個邏輯分割槽。
Linux中大多數硬體都是以檔案的方式進行管理,這些硬體裝置被對映到"/dev"目錄下對應的檔案中,在‘/dev’目錄下每個磁碟分割槽對映為一個檔案,這些檔案採用字母加資料的形式,如:
/dev/xxyN
其中的xx表示區名所在磁碟的裝置型別,一般hd代表IDE介面的磁碟,sd代表SCSI或SATA即可的磁碟(光碟驅動器及U盤),fd代表軟盤驅動器,tty是一種字元型的終端裝置ttySn是串列埠裝置。“y”表示分割槽所在的磁碟是當前介面的第幾個裝置比如第一個SCSI硬碟就是“/dev/sda”,第二個SCSI硬碟就是“/dev/sdb”。“N”表示分割槽的序號,前四個分割槽(主分割槽或擴充套件分割槽)使用1-4表示,邏輯分割槽從5開始。
分割槽完成後,使用者並不能直接使用這些分割槽,需要格式化後再通過 mount命令掛載後才能使用,如使用mount命令將“/dev/sdb2”掛載到“/mnt/disk”目錄,所有儲存到/mnt/disk目錄下的資料就會被儲存到/dev/sdb2分割槽中。
1.2、Linux檔案系統及目錄結構
檔案系統是一種儲存和組織計算機檔案及資料的方法,檔案系統通常使用硬碟和光碟的儲存裝置,並維護裝置中的物理位置。
Linux作業系統預設操作FAT、FAT32兩種檔案系統,預設情況下不支援NTFS系統,推薦使用ext3(第三版的擴充套件檔案系統)檔案系統。ext3是一種日誌檔案系統,在對系統資料進行寫操作前,會把寫操作內容寫入一個日誌檔案中,一旦操作被意外中止,系統能夠在重新啟動時根據日誌完成該寫操作。
Linux檔案系統中,檔案是儲存資訊的基本結構。檔案、目錄、硬體裝置都以檔案的形式表示,檔名可以由字元、資料、原點、下劃線組成,長度不超過256個字元。Linux中通過圓點區分檔名和副檔名幫助使用者區分檔案型別,使用者可以根據自己需要隨意假如自己的副檔名。Linux中有4種檔案型別:普通檔案,如文字檔案、圖片檔案、視訊檔案、shell指令碼檔案;目錄檔案:特殊的檔案;連結檔案;特殊檔案;
檔案系統採用樹形的結構。
Linux中每個使用者有個家目錄,如果是管理員(root使用者)家目錄是/root,若是普通使用者家目錄是/home。路徑,從一個目錄到另一個目錄或檔案的道路被稱為路徑,“.”表示當前目錄,“..”當前目錄的父目錄,“~”當前使用者的家目錄,“-”上一個目錄。
二、常用命令
poweroff:關閉系統 reboot:重啟計算機 clear:清除終端顯示 pwd
:顯示當前目錄 cd:改變當前目錄 . :表示當前目錄 .. : 表示當前目錄的父目錄 ~“”表示home目錄
- 上一個工作目錄
mv :移動命令 cp:複製命令 rm:刪除命令 mount:掛載命令
chamod:改變許可權命令
cat:列印命令 mkdir:新建資料夾 lsmod:查詢裝置
netstate -nl :檢視網路狀態 netstate -nlu :檢視UDP狀態
ifconfig 檢視網路配置 ifconfig -a:所有的網絡卡 ifconfig eth0 up/down 開啟或關閉eth0裝置 ifconfig 可以用來配置IP和網路掩碼。 ping:檢視網路是否通 date:查詢時間 date -s :修改系統時間 cal:日曆
man 命令:檢視命令的使用方法。 kill 程序號:結束一個程序
2.1、vim命令
命令模式,啟動後預設處於該模式,其他模式用ESC鍵或者Ctrl+C切換到命令模式。
插入模式,和txt文件編輯一樣編輯,在命令模式下用i、o、a命令進入該模式。
可視模式,該模式下可用方向鍵進行內容選擇,然後進行復制、貼上和其他操作,在命令模式下使用v進入該 模式。
塊操作模式,該模式下可用方向鍵進行內容選擇,選擇時可模擬滑鼠選擇的方式。在命令模式下使用ctrl+v進入該模式
修改模式,該模式下,類似於其他軟體用insert鍵來完成切換。命令模式下用R進入該模式。
擴充套件命令模式,該模式下可以執行一些擴充套件命令。命令模式下使用‘:’進入該模式。
vim幾種操作選擇:“o” 可以只讀方式開啟該檔案,“e”可正常編輯,使用該方式注意確定其他使用者沒有正在編 輯這個檔案,“r”從臨時交換檔案中回覆,“q”退出編輯該檔案,“a”放棄並同時撤銷後續命令的執行,“d”刪除臨時交換檔案。
檔案編輯完成,希望關閉需要首先切換到命令模式,擊中退出方式::q 直接退出,:q!強行退出,如果檔案內容發生改變則不儲存,:wq儲存並退出,:wq!強行儲存並退出,一般用於檔案是隻讀的情況下,但是檔案的擁有者是當前使用者。
2.2、Vim常用的操作鍵
命令模式常用的操作鍵:
G:移動到檔案的最後一行
nG:n為數字,移動到檔案的第n行。
/word: 向下查詢關鍵字word
?word: 向上查詢關鍵字word
n:重複前一個查詢
N:反覆重複前一個查詢
:n,$s/a/b: 替換第n行開始到最後一行中每一行的第一個a為b。
:n$s/a/b/g: 替換第h開始到最後一行每一行所有的a為b,n位數字,若n為.表示從當前行開始到最後一行
d$: 刪除游標所在位置到該行最後一個字元。
dd: 剪切當前行。
yy: 複製所選內容
nyy: 複製從游標開始n行內容
p: 將已經複製的內容貼上到游標下一行。
P: 將已經複製的內容貼上奧游標上一行。
u: 復原上一個操作。
ctrl+R: 重複前一個操作。
o: 當前下插入空行,並進入插入模式。
O: 當前下插入空行,並進入插入模式。
. : 重複前一個動作。
i : 進入插入模式,從當前游標所在位置插入。
I : 插入模式,從當前行第一個非空格處插入。
r : 插入模式,替換游標所在字元。
R: 進入修改模式。
ESC鍵:返回命令模式。
(2) 擴充套件命令模式常用操作鍵
:w ---- 儲存。
:w! ---- 檔案為只讀時強制儲存,不過能否儲存還要看檔案的許可權。
:q ---- 離開vim。
:q! ----- 強制退出。
:wq ------- 儲存後離開。
:x ------ 儲存後離開。
:w[檔名] ----- 另存為新檔案。
v ---------- 進入可視模式。
ctrl+V ------ 進入塊操作模式。
:r[檔名] ----- 將檔名的檔案讀到游標後面。
n1,n2 w[檔名] ----- 將n1到n2另存為新檔案
:new ----- 新增水平視窗
:new filename --- 新增水平視窗,並在新增的視窗載入filename檔案。
:v new ----- 新增垂直視窗。
:v filename ----- 新增垂直視窗,並在新增視窗載入filename檔案。
ctrl+W+方向鍵 ---- 切換視窗。
:only ---- 緊保留目前的視窗。
:set nu ----- 顯示行號
:set nonu ---- 不顯示行號
:set readonly ----- 檔案只讀,除非使用!可寫。
:set ic ---- 查詢是忽略大小寫。
:set noic ---- 查詢時不忽略大小寫。
三、桌面環境
Linux的桌面圖形介面有很多種,GNOME KDE Fluxbox Xfce FVWM sawflish WindowMaker等,最常用的是GNOME和KDE兩種。
3.1、遠端管理
Telnet協議是Internet遠端登入服務的標準協議,提供了在本地計算機上完成遠端主機工作的能力,使用者可以在Telnet程式中輸入命令,這些命令會在遠端伺服器上執行。傳統的Telnet安全性差,許多伺服器會將Telnet服務關閉,使用更安全的SSH。
ubuntu 開啟Telnet服務步驟, http://www.linuxdiyf.com/linux/17355.html
SSH是Secure Shell 的縮寫,為建立在應用層和傳輸層上的安全協議,SSh對所傳資料進行加密保證了資料的安全而且資料是經過壓縮的提高了傳輸速度。SSH可以代替Telnet,又可以為TFP、POP提供一個安全通道。
Linux及windows客戶端通過SSH連結到伺服器的方法:
(1) Linux客戶端
Linux客戶訪問SSH伺服器通過以下幾個命令完成:
① ssh [-CflRv] [使用者名稱@] SSH伺服器 [命令] ,
SSH伺服器指定要連結的伺服器,可以使用FQDN或IP地址。
使用者名稱@:指定連結SSH伺服器的使用者名稱,不指定使用者時預設以root使用者連結。
命令:使用ssh命令可以連結到伺服器,有時需要在SSH伺服器上執行一個命令時,可以直接通過此 引數指定需要執行的命令。
-C:啟用壓縮功能
-f: 在詢問密碼之後且在執行[命令]之前,將ssh轉到後臺執行。
-L:將本地系統中的某個埠轉發到遠端系統。
-R: 將遠端系統 的某個埠轉發到本地埠
-v: 顯示與連線和傳送有關的除錯資訊。
例如: ssh 192.168.159.11 通過ssh連線到遠端計算機,預設使用root使用者。如果是第一次連線到遠 程計算機,本地主機的使用者需要生成連線遠端主機的RSA公鑰,在此出現的警告輸入yes。退出遠端 連線伺服器,輸入exit。
② SCP命令可以使用SSH的方式在遠端主機和本地主機複製檔案或目錄,語法如下,
scp [-Cpqrv] [[使用者名稱@]複製源主機:]複製原始檔[[使用者名稱@]複製目標主機:][複製目標檔案]
如果是windows客戶端,可以用putty。
(2) RDP
在Windows中可通過“遠端桌面”功能連線到遠端的計算機進行管理。
四、Linux命令基礎
4.1、Linux命令分類
Linux作業系統中,命令分為兩種:Shell內部命令、Shell外部命令。
Shell內部命令:shell內部命令是一些較為簡單的又常用的命令,如cd、mkdir、rm等,這些命令在shell啟動時載入記憶體。
Shell外部命令:Linux中大多數命令屬於外部命令,每一個shell外部命令都一個獨立的可執行程式,也就是shell的外部命令是一些實用工具程式,管理員可以獨立的在shell環境下安裝或解除安裝這些shell外部命令。
Linux的內部命令可以在任何目錄任何時間執行,而外部命令在執行時,Linux必須找到對應的可執行程式。Shell中一個名為PATH的環境變數,該變數包括一些路徑用於shell自動搜尋。
cat /etc/shells 來檢視系統中的shell種類。
Shell中的引號分為三種:單引號,雙引號,反引號
由單引號引起來的符號都作為普通字元出現。特殊字元用單引號引起來後,失去原來的意義,變為普通字元解釋。
雙引號的作用與單引號類似,區別在於沒那麼嚴格,單引號忽略所有的特殊字元,雙引號中的3中特殊字元不被忽略 $ \ '。
反引號· 位於鍵盤的左上角,被反引號引起來的被shell解釋為 命令列
用#做註釋。
4.2、Linux命令格式
Shell直譯器在使用者和核心之間相當於一個翻譯的角色,負責解釋使用者輸入的命令。shell是作業系統和使用者進行互動的介面。命令的基本格式:
命令 [選項] [引數]
命令是需要執行的操作,選項是對命令的要求,引數用於描述命令的作用物件。比如 ls -l /root ,命令是ls,選項-l表示要以長格式顯示檔案資訊,/root 是 ls的命令引數,表示ls命令作用的物件是 /root目錄。
五、Linux的目錄及檔案管理
5.1、Linux的主要目錄
/ :根目錄,一臺計算機只有一個根目錄,所有內容都是從跟目錄開始。如/etc ,先從根目錄開始在進入etc目錄
/root:系統管理員的家目錄。
/bin:存放了標準的Linux工具,如ls、cp、rm等。該目錄已經包含在PATH中,使用該目錄程式無需使用路徑
/boot:用於載入程式的檔案。
/proc:作業系統執行時,程序資訊及核心資訊,如果CPU、硬碟分割槽、記憶體資訊等存放在該目錄。
/etc:存放系統的配置方面的檔案,如在系統安裝vsftpd這個軟體,你想要修改vstpd配置檔案的時候,vstpd的配置檔案就在/etc/vstpd目錄下。
/etc/init.d 存放系統或以system V模式啟動的服務指令碼。
/etc/xinetd.d: 如果服務是通過xinetd模式執行的,服務的指令碼要放在這個目錄下。
/etc/rc.d : 存放BSD方式啟動指令碼,如定義網絡卡開啟指令碼等。
/etc/X11:存放X-Windows相關的配置檔案
/dev :主要存放與裝置(包括外設)有關的檔案。
/home :存放每個使用者的家目錄。每個使用者的設定檔案,桌面資料夾、使用者資料都放在這裡。
/tmp :臨時目錄。
/bin、/usr/bin:大部分系統命令都是二進位制檔案形式儲存。一般使用者使用的命令都在這兩個目錄,系統核心命令工具,如cd、ls、cp、等都在/bin目錄。如Web瀏覽器為於/usr/bin目錄,可以與其他使用者共享使用。
/sbin、/usr/sbin :存放root使用者的命令檔案。
/usr/local :用於存放手動安裝的軟體。
/usr/share:存放系統共用的檔案。
/usr/src:存放核心原始碼的目錄。
/var :存放一些經常變化的檔案。
/var/log:存放系統的日誌。
/opt:存放那些可選的程式。
/lib:系統的庫檔案
/lost+found:在檔案系統中,系統意外崩潰或意外關機時,產生的一些檔案碎片放在該目錄。
/mnt : 存放掛在儲存裝置的掛載目錄。
/meia:有些發行版使用這個目錄來掛載那些USB介面的行動硬碟,CD/DVD驅動器等。
5.2目錄結構及操作命令
Linux系統中,以.開頭的檔案名錶示該檔案是隱藏檔案, ls命令用於顯示指定目錄的內容,語法:
ls [-anruhtFS1R] --time=<atime|ctime> --color<=使用時機> [目錄...]
[目錄...]:指定要顯示內容的目錄或目錄縮寫,如果需要顯示多個目錄,可在目錄名之間使用空格
-a:顯示包括影藏檔案在內的所有檔案及目錄。
-n:使用UID和GID代替使用者名稱顯示檔案或目錄所有者和擁有者。
-r:反向排序。
-u:以最後存取時間排序,顯示檔案和目錄。
-h:使用k、M、G為單位,提高資訊可讀性。
-t:根據檔案和目錄最後修改時間的順序顯示檔案和目錄。
mkdir 建立目錄,語法如下
mkdir [-p] [-m<目錄屬性>] 目錄名稱...
目錄名稱:需要建立的目錄,若需建立多個目錄,可在目錄名之間使用空格分隔。
-p:如果要建立的目錄父目錄沒建立,則一起建立父級目錄。
-m:建立目錄時,同時設定目錄許可權,許可權設定方法與chmod命令相同。
5.3、檔案操作命令
建立目錄是為了有效分類管理檔案。
touch:改變檔案或目錄時間
file:識別檔案型別。 Linux系統檔案的副檔名只是為了方便使用者識別檔案型別,對系統本身沒有任何意義。file命令可以識別檔案型別,語法如下
file [-bcLz] {-f<檔名>}檔案|目錄
cp:複製檔案或目錄。將目錄或檔案複製到另一個目錄,語法如下:
cp [-abdfilprsuv] [-S<備份字串>] 原始檔或目錄 目標檔案或目錄
rm:刪除檔案或目錄,語法如下:
rm [-filrv] 檔案或目錄
mv:移動或更名現有的檔案或目錄
mv [-fiub] [-S<備份字串>] 源目錄或檔案 目標目錄或檔案
ln:連結檔案或目錄,語法如下:
ln [-bdfis] [-S<備份字串>] 原始檔或目錄 [連結檔案]
locate:查詢檔案或目錄,語法如下
locate 查詢內容
該命令只會在儲存檔案和目錄名稱的資料苦衷查詢。查詢內容使用*表示任意字元,?表示任何一個字元。例如tony*zhang ,locate命令會查詢以tony開始以zhang結尾的檔案或目錄。
which:查詢檔案,語法如下:
which [檔案]
該命令只會在PATH環境變數中定義的 路徑及命令別名中查詢。
whereis:查詢檔案,語法如下:
whereis [-bu] [-B<目錄>] [-M<目錄>] [-S<目錄>] [檔案...]
find :查詢檔案或目錄
gzip:壓縮檔案,語法如下:
gzip [-cdf1Nnqtvr] [-壓縮比] [--bast|--fast] [-S<壓縮字尾字串>] 要壓縮的檔案
bzip2:壓縮檔案,語法如下:
bzip2 [-cdfktvz] [-壓縮比] 要壓縮的檔案
tar:壓縮備份,可以將多個檔案合併為一個檔案,打包後文件的副檔名為.tar,預設情況下不壓縮tar檔案,可以通過選項在打包同時進行壓縮。
zip/uzip:ZIP檔案壓縮與解壓。
不同檔案的壓縮和解壓縮:
.zip
解壓:unzip filename.zip
壓縮:zip filename.zip dirname
.rar
解壓:rar -x filename,rar
壓縮:rar -a filename.rar dirname
.tar.gz或tgz
解壓:tar -zxvf filename.tar.gz
壓縮:tar -zcvf
5.4、文字檢視命令
cat:顯示檔案內容,語法如下
cat [-bEsT] [檔案..]
head:顯示檔案內容的最前部分。如法如下:
head [-qv] [-c<顯示數目>] [-[n]<顯示行數>] [檔案...]
tail:顯示檔案內容的末尾部分
tail [-fqv] [-c<顯示數目>] [-[n]<顯示行數>][檔案..]
more :逐頁顯示檔案內容
grep 查詢並顯示符合條件的內容,語法如下:
grep [-aciInqvwxE][-顯示行數][-e<範本樣式>][-f<範本樣式>][-d<進行操作>][範本樣式][檔案或目錄]
六、使用者及組管理方式
使用者組有兩種:初始組、額外組。每個使用者必須屬於一個初始組,可以同時加入多個額外組。Linux將每個使用者看做一個32位的整數,這個整數就是UID。Linux內部運作大部分都是使用UID,給人看時才會把UID轉換為使用者名稱。有三種使用者型別:一般使用者、超級使用者(root)、系統使用者。
每個使用者對應一個UID,每個組對應一個UID,建立使用者時預設建立一個與使用者名稱相同名稱的組,組的GID和使用者UID相同。
Linux中所有資訊都是通過配置檔案的方式儲存,使用者及組也是。
七、軟體的安裝及管理
7.1、常見軟體安裝方式
綠色軟體:無需安裝直接可以使用。
提供安裝程式的軟體包:在軟體包內提供了install.sh、setup.sh等安裝程式或以.bin格式單個執行檔案提供 deb方式:deb是Debian軟體格式包,副檔名.deb,經gzip和tar打包而成,處理這些包的經典程式是dpkg,通過apt來執行。
RPM格式:RPM是在Linux洗廣泛使用的軟體管理器,RPM僅適用於安裝用RPM來打包的軟體。
原始碼方式:使用原始碼自己通過自己編譯生成二進位制檔案的軟體安裝方式。
八、Shell指令碼
bash Shell 支援在互動模式中一次提交多個命令執行,有三種方法:使用分號隔開、&& 條件隔開,只有前一個命令成功執行時才執行下一個命令、||條件隔開,只有在上一個命令執行失敗後才執行下一個命令。
8.1、標準輸出重定向
(1) 使用>將輸出寫入檔案,如果指定檔案已存在將會刪除檔案中原來的內容。如:ls /boot > boot.txt
(2) 使用>> 將輸出追加到檔案,如果指定的檔案已存在將會把輸出附加到檔案中。
8.2、標準錯誤重定向
(1) 使用2> 將輸出寫入檔案,如果指定的檔案已經存在將會刪除檔案中原來的內容。
(2) 使用2> 將輸出追加到檔案
8.3、Shell指令碼
指令碼是為了縮短傳統的“預處理-編譯-彙編-連結-執行”過程而建立的計算機程式語言。指令碼通常是解釋執行而非編譯。Shell指令碼是按行解釋的,每個Shell指令碼對系統來說就是一個文字檔案,在有相應許可權下可以使用文字編輯器建立修改Shell指令碼檔案。
雖然在Linux中副檔名並沒有實際作用,但是為了閱讀方便,指令碼檔案一般用sh作為副檔名。
一行中“#”之後的內容表示是註釋,註釋在執行過程中被忽略。
Shell指令碼檔案的第一行應該指定向哪個直譯器傳送指令,“#!/bin/sh”
在執行已編好的指令碼時可以使用兩種方式:對於有執行許可權的指令碼檔案可以使用“./<檔名>”的方式執行,對於沒有執行許可權的指令碼可以使用“sh<檔名>”的方式執行。
Linux系統中每個程序都是有壽命的,所有程序都是應另個程序的請求而啟動,發出請求的程序成為父程序,新啟動的程序成為子程序。子程序完成自身任務退出,子程序退出後會返回一個資訊給父程序,叫做返回值或退出狀態,返回值是一個0~244之間的整數,程序返回0表示執行成功,任何非0都表示某種形式的失敗。shell 中把上一個命令的返回值儲存在一個名為“$?”的特殊變數中。可以使用“echo $?”顯示上一個命令是否執行成功。
8.3.1、變數
變數就是會變化的量,Shell允許使用者設定和引用shell變數,shell 變數可以用在命令和指令碼中,也可以被其他程式作為配置選項而引用。Shell變數有兩種型別:環境變數和區域性變數。環境變數由子shell繼承,區域性變數只存在於建立的shell中。每個變數都有一個名稱,變數的名稱可以是字母字元及下劃線組成不能以數字開頭。Shell在使用變數錢不需要專門的語句進行定義也不對變數區分資料型別,本質上所有的shell變數都是字串,shell也執行比較和算術操作。
(1) 區域性變數
區域性變數的建立和賦值直接使用“變數名=變數值”的 方式。例如變數名strA,值為ctu
strA=ctu
變數賦值可以使用雙引號單不是必須的: strA=“ctu”
變數定義之後,使用者在不登出的情況下任何時間都可以使用已定義的變數,在使用時必須在變數名前加一個$.例如顯示區域性變數:echo $strA.
(2)、環境變數
Linux中允許全體程序使用“變數名=變數值”的方式定義被稱為環境變數的變數。環境變數是儲存在核心程序中的一部分,無論何時開啟一個程序,子程序都會繼承環境變數。使用者也可以建立環境變數,環境變數的建立分兩步,首先定義一個區域性變數,然後使用“export”命令將區域性變數提升為環境變數。
set命令顯示已經定義的變數
env命令顯示已定義的環境變數
“unset<變數名>”清除變數 unset strA
8.4、向指令碼傳遞引數
指令碼中可以使用“$1”接收傳遞給指令碼的第一個引數,“$2”接收第二個引數,可以使用“$*”接收所有的引數,使用“$0”獲得當前指令碼的名稱、使用“$#”獲取傳遞給指令碼的引數個數,使用“$$”獲得當前指令碼的PID。
8.5、流程控制
程式語言一般都是從上向下執行程式碼,shell通過判斷和迴圈改變指令碼的順序執行。
(1)、判斷結構
if、then、else語句提供測試條件,語法如下:
if<條件>; then
#條件為真時執行的內容
fi
if<條件>;then
#條件為真時執行的內容。
else
#條件為假時執行的內容。
fi
if<條件1>;then
#條件為真時執行的條件
elif<條件2>;then
#條件2為真時執行的內容。
else
#前兩個條件都為假時執行的內容。
fi。
if語句都必須以fi終止,elif、else是可選的。
(2) case判斷結構
case 值 in
模式1)
# 符合模式1時執行的內容
;;
模式 2)
#符合模式2時執行的內容
; ;
esac
其中;;相當於C語言中的break。如果無匹配模式使用星號*匹配該值,再接收其他輸入,相當於default。*表示任意字元,?表示任意單字元。
迴圈結構
bash shell 支援三總型別的迴圈:for迴圈一次處理迴圈體內容直到迴圈耗盡,until迴圈直到條件為真前一次執行迴圈體內的內容,while迴圈直到條件為假前一次執行迴圈體內的內容。
while[條件]
do
迴圈體
done
until [條件]
do
迴圈體
done
for((初始值;限制值;步長))
do
迴圈體
done。
有兩種方法退出或路過迴圈:(1)break 用於跳出迴圈,break直接跳出迴圈,執行迴圈後邊的,如果是迴圈巢狀使用break預設是跳出當前迴圈,也可以指定跳出迴圈的個數break 2 跳出兩套迴圈。(2)continue 跳出本次迴圈,執行新一輪的迴圈。
8.6、函式
function 函式名
{
#函式內容
}
函式可以放在同一個檔案中作為一段程式碼,也可以放在只包含函式的單獨檔案中,使用函式時像執行指令碼一樣傳入引數。在函式體內容也可以用$1 $2的方式傳入引數。
九、Linux引導及程序管理
10.1、載入載入程式
BIOS自檢最後一步中BIOS把磁碟的第一個資料塊(MBR,Master Boot Record)裝入記憶體,並把執行傳遞這個區域,分為兩個階段執行
(1) 第一階段,載入程式很小,唯一任務就是定位、裝載並把控制權傳遞給第二階段的載入程式,這段程式在MBR中所以在檔案系統中找不到。
(2)第二階段,載入程式本身,能夠讀取有關預設裝置的配置資訊。第二階段應道程式通常是檔案系統中可識別的二進位制檔案,完成以下任務:編寫合適核心命令列,用於引用正確的根分割槽;裝載合適的初始虛擬磁碟;裝載合適的Linux核心並將控制權交給核心。
Ubuntu使用的載入程式是GRUB,GRUB是GNU專案的作業系統載入程式,在/boot/guab目錄下,主要配置檔案是/boot/grub/grub.conf檔案。
GRUB載入核心引數並把控制權交給核心後,Linux核心將完成以下操作:(1) 執行init程序,Linux核心啟動的第一個程序就是/sbin/init,這個命令是系統啟動時由核心執行的,因此其程序ID(PID)永遠是1,只要系統執行init程序就會一直執行,init程序也是系統中最後一個被終止的程序,該程序不接收SIGKILL 訊號。init程序功能是啟動、停止、監控其他程序。init啟動時會讀取配置檔案/etc/inittab.
inittab檔案開機是執行,如果改變過了該檔案需要重啟。用runlevel檢視執行級別。
啟動時登入shell首先讀取指令碼檔案/etc/profile,該指令碼初始化各種環境變數如PATH、HOSTNAME。
10.2、Linux核心模組
核心是作業系統的核心組成部分,主要兩個功能:一是充當資源管理器,向程序透明分配記憶體、CPU訪問等資源;二是充當直譯器,在程序和硬體之間專遞資訊。
核心一般使用模組和硬體裝置交流,每個模組程式碼都單獨放在一個目標檔案中,可以根據需要載入和刪除核心模組,核心模組位於/lib/modules/$(uname -r) 目錄中,用ls /lib/modules/$(uname -r)檢視和管理模組。
lsmod 命令顯示當前載入到核心的模組。
modprobe 裝載核心模組
rmmod 從記憶體中刪除核心模組
10.3、/proc 目錄
proc檔案系統是一個偽檔案系統,只存在記憶體中,不佔用硬碟空間。
10.4、程序的狀態:可執行、自願休眠、非自願休眠、掛起的程序、殭屍程序。
free 檢視記憶體狀態。
ps 檢視程序。
pstree 以樹狀檢視程序
top 顯示、管理執行中的程式。
十一、網路管理
Linux核心可以檢測出所有連結的PCI裝置,可以使用lspci命令驗證計算機上的pci裝置是否被核心檢測到。Linux核心不允許使用者以檔案的形式訪問網絡卡,也就是在/dev目錄下無直接關聯網絡卡的裝置節點。Linux通過網路介面訪問網絡卡,並以類似eth0的方式命令,其中字母表示資料連線技術,eth(乙太網)、ppp(ppp協議的串列埠裝置)、fddi。
ifconfig命令可以檢驗所有已識別的網路介面命令。
ifconfig eth0 可以只顯示網路介面0的網路資訊。
ifconfig eth0 down 禁用乙太網0介面
ifconfig eth0 up 啟用乙太網0介面
11.1、靜態路由配置
IP協議以使用路由器連線在一起的機器構成的網路為基礎,所有連線到單一IP網路上的機器都有相似的IP地址,並通常使用相同的網路交換機。
每個Linux核心都會有個路由表,路由表從來確定對於一個傳送出的資料包,核心使用哪種方法傳遞資料包,路由表定義了哪個網路介面與本地網路的關係,以及本地網路上充當連結外邊網路的機器的身份標識。“Flags”列有G的表示的是閘道器。
route 命令檢視路由表
route -n 路由表按IP地址來顯示。
route add default gw IP ,增加新的閘道器
route del default gw IP ,刪除閘道器
11.2、ARP配置
ARP協議(地址解析協議),基本功能是通過目標的IP地址,查詢目標的MAC地址,ARP是IPv4網路層中不可缺少的,IPv6中不再適用。
arp 檢視arp
11.3、網路測試
ping測試兩臺主機之間底層IP聯通性
ping IP 直接pingIP地址。
nsloopup 檢查DNS查詢結果
網路抓包工具wireshark
十二、DHCP
DHCP(動態主機配置協議),是一種網路管理員能夠集中管理和自動分配IP網路地址的通訊協議。
十三、GCC編譯器和GDB偵錯程式
GCC編譯器是GNU開源組織釋出的Linux下多平臺編譯器,將多種語言編寫的源程式編譯、連結成可執行檔案,GDB是偵錯程式。
13.1、連結庫
函式庫實際上是一些標頭檔案(.h)或者庫檔案(.so或者.a)的集合。Linux下大多數標頭檔案的預設路徑是/usr/include,庫檔案預設路徑是/usr/lib/,有時候使用GCC編譯時需要為其指定所需要的標頭檔案和庫檔案的路徑。
GCC採用搜尋目錄的方法查詢所