天天看點

簡單整理幾個常用Linux指令及使用案例

Linux作業系統提供了大量的指令,利用它可以有效地完成大量的工作,如磁盤操作、檔案存取、目錄操作、程序管理、檔案權限設定等。

當然,不同Linux發行版的指令數量不一樣,但Linux發行版本最少的指令也有200多個。這裡惠主機(www.idccoupon.com) 主要把比較重要和使用頻率最多的安裝登入、檔案管理指令來進行整理。

本文以Mandrake Linux 9.1(Kenrel 2.4.21)為例,介紹Linux下的安裝和登入指令。

登入安裝類

指令一:login

1.作用

login的作用是登入系統,它的使用權限是所有使用者。

2.格式

login name[-h 主機名稱]

3.主要參數

-p:通知login保持現在的環境參數。

-h:用來向遠端登入的之間傳輸使用者名。

如果選擇用指令行模式登入Linux的話,那麼看到的第一個Linux指令就是login:。

一般界面是這樣的:

Manddrake Linux release 9.1(Bamboo) for i586

kennel 2.4.21-0.13mdk on i686 / tty1

localhost login:root

password:

上面代碼中,第一行是Linux發行版本号,第二行是核心版本号和登入的虛拟控制台,在第三行輸入登入名,按“Enter”鍵在Password後輸入賬戶密碼,即可登入系統。出于安全考慮,輸入賬戶密碼時字元不會在螢幕上回顯,光标也不移動。

登入後會看到下面這個界面(以超級使用者為例):

[root@localhost root]#

last login:Tue ,Nov 18 10:00:55 on vc/1

上面顯示的是登入星期、月、日、時間和使用的虛拟控制台。

指令二:shutdown

shutdown指令的作用是關閉計算機,它的使用權限是超級使用者。

shutdown -h-k[-t]

3.重要參數

-t:在改變到其它運作級别之前,告訴init程式多久以後關機。

-k:并不真正關機,隻是送警告信号給每位登入者。

-h:關機後關閉電源。

-c:cancel current process取消目前正在執行的關機程式。是以這個選項當然沒有時間參數,但是可以輸入一個用來解釋的訊息,而這資訊将會送到每位使用者。

-F:在重新開機計算機時強迫fsck。

-time:設定關機前的時間。

-m: 将系統改為單使用者模式。

-i:關機時顯示系統資訊。

4.指令說明

shutdown指令可以安全地将系統關機。有些使用者會使用直接斷掉電源的方式來關閉Linux系統,這是十分危險的。因為Linux與Windows不同,其背景運作着許多程序,是以強制關機可能會導緻程序的資料丢失,使系統處于不穩定的狀态,甚至在有的系統中會損壞硬體裝置(硬碟)。

指令三:halt

halt指令的作用是關閉系統,它的使用權限是超級使用者。

halt [-n] [-w] [-d] [-f] [-i] [-p]

3.主要參數說明

-n:防止sync系統調用,它用在用fsck修補根分區之後,以阻止核心用老版本的超級塊覆寫修補過的超級塊。

-w:并不是真正的重新開機或關機,隻是寫wtmp(/var/log/wtmp)紀錄。

-f:沒有調用shutdown,而強制關機或重新開機。

-i:關機(或重新開機)前,關掉所有的網絡接口。

-f:強迫關機,不呼叫shutdown這個指令。

-p: 當關機的時候順便做關閉電源的動作。

-d:關閉系統,但不留下紀錄。

halt就是調用shutdown -h。halt執行時,殺死應用程序,執行sync(将存于buffer中的資料強制寫入硬碟中)系統調用,檔案系統寫操作完成後就會停止核心。若系統的運作級别為0或6,則關閉系統;否則以shutdown指令(加上-h參數)來取代。

指令四:reboot

reboot指令的作用是重新啟動計算機,它的使用權限是系統管理者。

reboot [-n] [-w] [-d] [-f] [-i]

-n: 在重開機前不做将記憶體資料寫回硬碟的動作。

-w: 并不會真的重開機,隻是把記錄寫到/var/log/wtmp檔案裡。

-d: 不把記錄寫到/var/log/wtmp檔案裡(-n這個參數包含了-d)。

-i: 在重開機之前先把所有與網絡相關的裝置停止。

指令五:install

install指令的作用是安裝或更新軟體或備份資料,它的使用權限是所有使用者。

(1)install [選項]... 來源 目的地

(2)install [選項]... 來源... 目錄

(3)install -d [選項]... 目錄...

在前兩種格式中,會将<來源>複制至<目的地>或将多個<來源>檔案複制至已存在的<目錄>,同時設定權限模式及所有者/所屬組。在第三種格式中,會建立所有指定的目錄及它們的主目錄。長選項必須用的參數在使用短選項時也是必須的。

--backup[=CONTROL]:為每個已存在的目的地檔案進行備份。

-b:類似 --backup,但不接受任何參數。

-c:(此選項不作處理)。

-d,--directory:所有參數都作為目錄處理,而且會建立指定目錄的所有主目錄。

-D:建立<目的地>前的所有主目錄,然後将<來源>複制至 <目的地>;在第一種使用格式中有用。

-g,--group=組:自行設定所屬組,而不是程序目前的所屬組。

-m,--mode=模式:自行設定權限模式 (像chmod),而不是rwxr-xr-x。

-o,--owner=所有者:自行設定所有者 (隻适用于超級使用者)。

-p,--preserve-timestamps:以<來源>檔案的通路/修改時間作為相應的目的地檔案的時間屬性。

-s,--strip:用strip指令删除symbol table,隻适用于第一及第二種使用格式。

-S,--suffix=字尾:自行指定備份檔案的<字尾>。

-v,--verbose:處理每個檔案/目錄時印出名稱。

--help:顯示此幫助資訊并離開。

--version:顯示版本資訊并離開。

指令六:mount

mount指令的作用是加載檔案系統,它的用權限是超級使用者或/etc/fstab中允許的使用者。

mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir

-h:顯示輔助資訊。

-v:顯示資訊,通常和-f用來除錯。

-a:将/etc/fstab中定義的所有檔案系統挂上。

-F:這個指令通常和-a一起使用,它會為每一個mount的動作産生一個行程負責執行。在系統需要挂上大量NFS檔案系統時可以加快加載的速度。

-f:通常用于除錯。它會使mount不執行實際挂上的動作,而是模拟整個挂上的過程,通常會和-v一起使用。

-t vfstype:顯示被加載檔案系統的類型。

-n:一般而言,mount挂上後會在/etc/mtab中寫入一筆資料,在系統中沒有可寫入檔案系統的情況下,可以用這個選項取消這個動作。

4.應用技巧

在使用mount這個指令時,至少要先知道下列三種資訊:要加載對象的檔案系統類型、要加載對象的裝置名稱及要将裝置加載到哪個目錄下。

指令七:umount

umount指令的作用是解除安裝一個檔案系統,它的使用權限是超級使用者或/etc/fstab中允許的使用者。

umount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir

3.使用說明

umount指令是mount指令的逆操作,它的參數和使用方法和mount指令是一樣的。Linux挂裝CD-ROM後,會鎖定CD—ROM,這樣就不能用CD-ROM面闆上的Eject按鈕彈出它。

但是,當不再需要CD光牒時,如果已将/cdrom作為符号連結,請使用umount/cdrom來卸裝它。僅當無使用者正在使用CD光牒時,該指令才會成功。該指令包括了将帶有目前工作目錄當作該CD光牒中的目錄的終端視窗。

指令八:chsh

chsh指令的作用是更改使用者shell設定,它的使用權限是所有使用者。

chsh [ -s ] [ -list] [ --help ] [ -v ] [ username ]

-l:顯示系統所有Shell類型。

-v:顯示Shell版本号。

指令九:exit

exit指令的作用是退出系統,它的使用權限是所有使用者。

exit

3.參數

exit指令沒有參數,運作後退出系統進入登入界面。

指令十:last

last指令的作用是顯示近期使用者或終端的登入情況,它的使用權限是所有使用者。通過last命

令檢視該程式的log,管理者可以獲知誰曾經或企圖連接配接系統。

1ast—n[-t tty] —h 節點—1[1D]

-n:指定輸出記錄的條數。

-f file:指定用檔案file作為查詢用的log檔案。

-t tty:隻顯示指定的虛拟控制台上登入情況。

-h 節點:隻顯示指定的節點上的登入情況。

-i IP:隻顯示指定的IP上登入的情況。

-1:用IP來顯示遠端位址。

-y:顯示記錄的年、月、日。

-ID:知道查詢的使用者名。

-x:顯示系統關閉、使用者登入和退出的曆史。

檔案管理類

Linux系統資訊存放在檔案裡,檔案與普通的公務檔案類似。每個檔案都有自己的名字、内容、存放位址及其它一些管理資訊,如檔案的使用者、檔案的大小等。檔案可以是一封信、一個通訊錄,或者是程式的源語句、程式的資料,甚至可以包括可執行的程式和其它非正文内容。

指令十一:file

file通過探測檔案内容判斷檔案類型,使用權限是所有使用者。

file [options] 檔案名

3.[options]主要參數

-v:在标準輸出後顯示版本資訊,并且退出。

-z:探測壓縮過的檔案類型。

-L:允許符合連接配接。

-f name:從檔案namefile中讀取要分析的檔案名清單。

4.簡單說明

使用file指令可以知道某個檔案究竟是二進制(ELF格式)的可執行檔案, 還是Shell Script檔案,或者是其它的什麼格式。file能識别的檔案類型有目錄、Shell腳本、英文文本、二進制可執行檔案、C語言源檔案、文本檔案、DOS的可執行檔案。

指令十二:mkdir

mkdir指令的作用是建立名稱為dirname的子目錄,與MS DOS下的md指令類似,它的使用權限是所有使用者。

mkdir [options] 目錄名

-m, --mode=模式:設定權限<模式>,與chmod類似。

-p, --parents:需要時建立上層目錄;如果目錄早已存在,則不當作錯誤。

-v, --verbose:每次建立新目錄都顯示資訊。

--version:顯示版本資訊後離開。

指令十三:grep

grep指令可以指定檔案中搜尋特定的内容,并将含有這些内容的行标準輸出。grep全稱是Global Regular Expression Print,表示全局正規表達式版本,它的使用權限是所有使用者。

grep [options]

[options]主要參數:

-c:隻輸出比對行的計數。

-I:不區分大小寫(隻适用于單字元)。

-h:查詢多檔案時不顯示檔案名。

-l:查詢多檔案時隻輸出包含比對字元的檔案名。

-n:顯示比對行及行号。

-s:不顯示不存在或無比對文本的錯誤資訊。

-v:顯示不包含比對文本的所有行。

pattern正規表達式主要參數:

:忽略正規表達式中特殊字元的原有含義。

^:比對正規表達式的開始行。

$: 比對正規表達式的結束行。

<:從比對正規表達式的行開始。

>:到比對正規表達式的行結束。

[ ]:單個字元,如[A]即A符合要求 。

[ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。

. :所有的單個字元。

  • :有字元,長度可以為0。

正規表達式是Linux/Unix系統中非常重要的概念。正規表達式(也稱為“regex”或“regexp”)是一個可以描述一類字元串的模式(Pattern)。如果一個字元串可以用某個正規表達式來描述,我們就說這個字元和該正規表達式比對(Match)。這和DOS中使用者可以使用通配符 “*”代表任意字元類似。在Linux系統上,正規表達式通常被用來查找文本的模式,以及對文本執行“搜尋-替換”操作和其它功能。

指令十四:dd

dd指令用來複制檔案,并根據參數将資料轉換和格式化。

dd [options]

3.[opitions]主要參數

bs=位元組:強迫 ibs=<位元組>及obs=<位元組>。

cbs=位元組:每次轉換指定的<位元組>。

conv=關鍵字:根據以逗号分隔的關鍵字表示的方式來轉換檔案。

count=塊數目:隻複制指定<塊數目>的輸入資料。

ibs=位元組:每次讀取指定的<位元組>。

if=檔案:讀取<檔案>内容,而非标準輸入的資料。

obs=位元組:每次寫入指定的<位元組>。

of=檔案:将資料寫入<檔案>,而不在标準輸出顯示。

seek=塊數目:先略過以obs為機關的指定<塊數目>的輸出資料。

skip=塊數目:先略過以ibs為機關的指定<塊數目>的輸入資料。

4.應用執行個體

dd指令常常用來制作Linux啟動盤。先找一個可引導核心,令它的根裝置指向正确的根分區,然後使用dd指令将其寫入軟碟:

$ rdev vmlinuz /dev/hda

$dd if=vmlinuz of=/dev/fd0

上面代碼說明,使用rdev指令将可引導核心vmlinuz中的根裝置指向/dev/hda,請把“hda”換成自己的根分區,接下來用dd指令将該核心寫入軟碟。

指令十五:find

find指令的作用是在目錄中搜尋檔案,它的使用權限是所有使用者。

find path[expression]

path指定目錄路徑,系統從這裡開始沿着目錄樹向下查找檔案。它是一個路徑清單,互相用空格分離,如果不寫path,那麼預設為目前目錄。

[options]參數:

-depth:使用深度級别的查找過程方式,在某層指定目錄中優先查找檔案内容。

-maxdepth levels:表示至多查找到開始目錄的第level層子目錄。level是一個非負數,如果level是0的話表示僅在目前目錄中查找。

-mindepth levels:表示至少查找到開始目錄的第level層子目錄。

-mount:不在其它檔案系統(如Msdos、Vfat等)的目錄和檔案中查找。

-version:列印版本。

[expression]是比對表達式,是find指令接受的表達式,find指令的所有操作都是針對表達式的。它的參數非常多,這裡隻介紹一些常用的參數。

—name:支援統配符*和?。

-atime n:搜尋在過去n天讀取過的檔案。

-ctime n:搜尋在過去n天修改過的檔案。

-group grpoupname:搜尋所有組為grpoupname的檔案。

-user 使用者名:搜尋所有檔案屬主為使用者名(ID或名稱)的檔案。

-size n:搜尋檔案大小是n個block的檔案。

-print:輸出搜尋結果,并且列印。

指令十六:mv

mv指令用來為檔案或目錄改名,或者将檔案由一個目錄移入另一個目錄中,它的使用權限是所有使用者。該指令如同DOS指令中的ren和move的組合。

mv[options] 源檔案或目錄 目标檔案或目錄

-i:互動方式操作。如果mv操作将導緻對已存在的目标檔案的覆寫,此時系統詢問是否重寫,要求使用者回答“y”或“n”,這樣可以避免誤覆寫檔案。

-f:禁止互動操作。mv操作要覆寫某個已有的目标檔案時不給任何訓示,指定此參數後i參數将不再起作用。

(1)将/usr/cbu中的所有檔案移到目前目錄(用“.”表示)中:

$ mv /usr/cbu/ * .

(2)将檔案cjh.txt重命名為wjz.txt:

$ mv cjh.txt wjz.txt

指令十七:ls

ls指令用于顯示目錄内容,類似DOS下的dir指令,它的使用權限是所有使用者。

ls options

3.options主要參數

-a, --all:不隐藏任何以“.” 字元開始的項目。

-A, --almost-all:列出除了“ . ”及 “.. ”以外的任何項目。

--author:印出每個檔案著作者。

-b, --escape:以八進制溢出序清單示不可列印的字元。

--block-size=大小:塊以指定<大小>的位元組為機關。

-B, --ignore-backups:不列出任何以 ~ 字元結束的項目。

-f:不進行排序,-aU參數生效,-lst參數失效。

-F, --classify:加上檔案類型的訓示符号 (*/=@| 其中一個)。

-g:like -l, but do not list owner。

-G, --no-group:inhibit display of group information。

-i, --inode:列出每個檔案的inode号。

-I, --ignore=樣式:不印出任何符合Shell萬用字元<樣式>的項目。

-k:即--block-size=1K。

-l:使用較長格式列出資訊。

-L, --dereference:當顯示符号連結的檔案資訊時,顯示符号連結所訓示的對象,而并非符号連結本身的資訊。

-m:所有項目以逗号分隔,并填滿整行行寬。

-n, --numeric-uid-gid:類似-l,但列出UID及GID号。

-N, --literal:列出未經處理的項目名稱,例如不特别處理控制字元。

-p, --file-type:加上檔案類型的訓示符号 (/=@| 其中一個)。

-Q, --quote-name:将項目名稱括上雙引号。

-r, --reverse:依相反次序排列。

-R, --recursive:同時列出所有子目錄層。

-s, --size:以塊大小為序。

4.應用舉例

ls 指令是Linux系統使用頻率最多的指令,它的參數也是Linux指令中最多的。使用ls指令時會有幾種不同的顔色,其中藍色表示是目錄,綠色表示是可執行檔案,紅色表示是壓縮檔案,淺藍色表示是連結檔案,加粗的黑色表示符号連結,灰色表示是其它格式檔案。ls最常使用的是ls- l。

指令十八:diff

diff指令用于兩個檔案之間的比較,并指出兩者的不同,它的使用權限是所有使用者。

diff [options] 源檔案 目标檔案

-a:将所有檔案當作文本檔案來處理。

-b:忽略空格造成的不同。

-B:忽略空行造成的不同。

-c:使用綱要輸出格式。

-H:利用試探法加速對大檔案的搜尋。

-I:忽略大小寫的變化。

-n --rcs:輸出RCS格式。

指令十九:cmp

cmp(“compare”的縮寫)指令用來簡要指出兩個檔案是否存在差異,它的使用權限是所有使用者。

cmp[options] 檔案名

-l: 将位元組以十進制的方式輸出,并友善将兩個檔案中不同的以八進制的方式輸出。

指令二十:cat

cat(“concatenate”的縮寫)指令用于連接配接并顯示指定的一個和多個檔案的有關資訊,它的使用權限是所有使用者。

cat [options] 檔案1 檔案2……

-n:由第一行開始對所有輸出的行數編号。

-b:和-n相似,隻不過對于空白行不編号。

-s:當遇到有連續兩行以上的空白行時,就代換為一行的空白行。

(1)cat指令一個最簡單的用處是顯示文本檔案的内容。例如,我們想在指令行看一下README檔案的内容,可以使用指令:

$ cat README

(2)有時需要将幾個檔案處理成一個檔案,并将這種處理的結果儲存到一個單獨的輸出檔案。cat指令在其輸入上接受一個或多個檔案,并将它們作為一個單獨的檔案列印到它的輸出。例如,把README和INSTALL的檔案内容加上行号(空白行不加)之後,将内容附加到一個新文本檔案File1 中:

$ cat README INSTALL File1

(3)cat還有一個重要的功能就是可以對行進行編号,見圖2所示。這種功能對于程式文檔的編制,以及法律和科學文檔的編制很友善,列印在左邊的行号使得參考文檔的某一部分變得容易,這些在程式設計、科學研究、業務報告甚至是立法工作中都是非常重要的。

對行進行編号功能有-b(隻能對非空白行進行編号)和-n(可以對所有行進行編号)兩個參數:

$ cat -b /etc/named.conf