Linux常用命令及使用技巧
來自: http://www.epubit.com.cn/article/412
本文重點講述Linux命令的使用,命令是學習Linux必須熟練掌握的一個部分。Linux下的命令大概有600個,而常用的命令其實只有80個左右,這些常用的命令是需要靈活掌握的。雖然Linux的各個發行版大同小異,但是常用命令基本相同,因此只要掌握了常用的Linux命令,就能融會貫通、觸類旁通各個Linux版本了。本章通過分類的方式詳細介紹常用命令的使用語法與技巧。
4.1 Linux下的shell簡介
4.1.1 什么是shell(略)
4.1.2 shell命令的語法分析
Linux下的各種shell的主要區別在于命令行的語法。對于一些普通的命令,各個shell版本的語法基本相同,只有在編寫一個shell腳本或者使用一些shell高級特性的時候,各個版本shell的差異才會顯示出來。
shell語法分析是指shell對命令的掃描處理過程,也就是,把命令或者用戶輸入的內容分解成要處理的各個部分的操作。在Linux系統下,shell語法分析包含很多內容,如重定向、文件名擴展和管道等。
本節以bash為例,介紹shell命令的語法分析。
1.shell的命令格式
用戶登錄系統后,shell命令行啟動。shell遵循一定的語法格式將用戶輸入的命令進行分析解釋并傳遞給系統內核。shell命令的一般格式為:
command [options] [arguments]
其中,
- command:表示命令的名稱。
- options:表示命令的選項。
- arguments:表示命令的參數。
根據習慣,我們一般把具有以上格式的字符串稱為命令行。命令行是用戶與shell之間對話的基本單位。
在命令行中,選項是包含一個或多個字母的代碼,主要用于改變命令的執行方式。一般在選項前面有一個“-”符號,用于區別參數。例如:
[root@WEBServer ~]#ls -a
ls命令加上-a選項后,列出當前目錄下的所有文件(包含隱藏文件)。如果ls不加“-a”選項,則僅僅顯示當前目錄下的文件名和目錄(不顯示隱藏文件)。
一般命令都有很多選項,可以單獨列出它們,也可以在“-”后面把需要的選項都列出來,例如:
ls–a –l
也可以寫成:
ls–al
很多命令都可以接受參數。參數就是在選項后面緊跟的一個或多個字符串,這些字符串指定命令的操作對象,如文件或者目錄。例如,要顯示/etc目錄下的所有文件及信息,可用以下命令。
[root@WEBServer ~]#ls –al /etc
特殊情況下,有些命令可以不帶參數,例如ls命令,而有些必須帶參數。當參數不夠時,shell就會給出錯誤提示。例如,mv命令至少需要兩個參數。
[root@WEBServer ~]#mv mylinux1.txt mylinux.txt
在shell的一個命令行中,還可以輸入多個命令,用分號將各個命令分開,例如:
[root@WEBServer ~]#ls –al;cp mylinux1.txt mylinux2.txt
相反,也可以在多行中輸入一個命令,用“\”將一個命令持續到下一行。
[root@WEBServer ~]#cp –i \ >mylinux1.txt \ >mylinux2.txt
2.shell的通配符
通配符主要是為了方便用戶對文件或者目錄的描述,例如,當用戶僅僅需要以“.sh”結尾的文件時,使用通配符就能很方便地實現。各個版本的shell都有通配符,這些通配符是一些特殊字符,用戶可以在命令行的參數中使用這些字符,進行文件名或者路徑名的匹配。shell將把與命令行中指定的匹配規則符合的所有文件名或者路徑名作為命令的參數,然后執行這個命令。
bash中常用的通配符有“*”、“?”、“[]”。
(1)“*”——匹配任意一個或多個字符
例如:
[root@WEBServer ~]#ls *.txt
這條命令列出當前目錄中所有以“.txt”結尾的文件(除去以“.”開頭的文件)。
[root@WEBServer ~]#cp doc/* /opt
這條命令表示將doc目錄下的所有文件(除去以“.”開頭的文件)復制到/opt目錄下。
[root@WEBServer ~]#ls –al /etc/*/*.conf
這條命令列出/etc目錄的子目錄下所有以“.conf”結尾的文件。在/etc目錄下以“.conf”結尾的文件將不會列出。
(2)“?”——匹配任意單一字符
例如:
[root@WEBServer ~]#ls ab?.txt
這條命令列出當前目錄下以ab開頭,隨后一個字母是任意字符,接著以“.txt”結尾的文件。
[root@WEBServer ~]#ls ab??.txt
這條命令列出當前目錄下以ab開頭,隨后的兩個字母是任意字符,接著以“.txt”結尾的文件。
(3)“[]”——匹配任何包含在方括號內的單字符
例如:
[root@WEBServer ~]#ls /dev/sda[12345] /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5
上面的命令列出了在/dev目錄下以sda開頭,第4個字符是1、2、3、4或5的所有文件。
[root@WEBServer ~]#ls /dev/sda[1-5]
在方括號中“1-5”給出了匹配的范圍,與上面一條命令完全等效。
(4)通配符的組合使用
在Linux下,通配符也可以組合使用,例如:
[root@WEBServer ~]#ls [0-9]?.conf
這條命令列出當前目錄下以數字開頭,隨后一個是任意字符,接著以“.conf”結尾的所有文件。
[root@WEBServer ~]#ls [xyz]*.txt
這條命令列出當前目錄下以x、y或z開頭,最后以“.txt”結尾的文件。
3.shell的重定向
Linux下系統打開3個文件,即標準輸入、標準輸出和標準錯誤輸出。用戶的shell將鍵盤設為默認的標準輸入,默認的標準輸出和標準錯誤輸出為屏幕。也就是,用戶從鍵盤輸入命令,然后將結果和錯誤消息輸出到屏幕。
所謂的重定向,就是不使用系統默認的標準輸入/輸出,而是重新指定,因此重定向分為輸入重定向、輸出重定向和錯誤輸出重定向。要實現重定向就需要了解重定向操作符,shell就是根據重定向操作符來決定重定向操作的。
(1)輸入重定向
輸入重定向用于改變命令的輸入源,利用輸入重定向,就可以將一個文件的內容作為命令的輸入,而不從鍵盤輸入。
用于輸入重定向的操作符有“<”和“<<”。例如:
[root@WEBServer ~]#wc</etc/shadow 40 40 1169
這里用wc命令統計輸入給它的文件/etc/inittab的行數、單詞數和字符數。
還有一種輸入重定向操作符“<<”。這種重定向告訴shell,當前命令的標準輸入為來自命令行中一對分隔號之間的內容。例如:
[root@WEBServer ~]#wc<< aa > # Default runlevel. The runlevels used by RHS are: > # 0 - halt (Do NOT set initdefault to this) > # 1 - Single user mode > # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) > # 3 - Full multiuser mode > # 4 - unused > # 5 - X11 > # 6 - reboot (Do NOT set initdefault to this) >aa 8 65 303
上面的命令將一對分隔號aa之間的內容作為wc命令的輸入。分隔號可以是任意字符。shell將在第一個分隔號后開始讀取內容,直到出現另一個分隔號讀取結束,然后將內容送給wc命令處理。
(2)輸出重定向
輸出重定向不是將命令的輸出結果在屏幕輸出,而是輸出到一個指定文件中。
在Linux下輸出重定向用得很多。例如,某個命令的輸出很長,一個屏幕無法顯示完畢,這時可以將命令的輸出指定到一個文件,然后用more命令查看這個文件,從而得到命令輸出的完整信息。
用于輸出重定向的操作符有“>”和“>>”。例如:
[root@WEBServer ~]#ps –ef >ps.txt
這條命令將ps –ef輸出的系統運行進程信息全部輸入到了ps.txt文件,而不輸出到屏幕,可以用more命令查看ps.txt文件中系統運行的進程信息。
[root@WEBServer ~]#more file1 file2 file3 >file
其中,more命令用于查看文件的內容,上面的命令是將file1、file2和file3的內容全部輸出到file文件中,類似于文件內容的合并。
如果在“>”后面指定的文件不存在,shell就會自動重建一個;如果文件存在,那么這個文件原有的內容將被覆蓋;如果不想覆蓋存在的文件,可以使用“>>”操作符。例如:
[root@WEBServer ~]#ls –al /etc/* >>/root/install.log
這條命令將/etc目錄及其子目錄下的所有文件信息追加到/root/install.log文件的后面。/root/install.log文件原來的內容仍然存在。
(3)錯誤重定向
錯誤重定向和標準輸出重定向一樣,可以使用操作符“2>”和“2>>”實現對錯誤輸出的重定向。例如:
[root@WEBServer ~]#tar zxvf text.tar.gz 2> error.txt
其中,tar是打包命令,可以在屏幕上看到tar的解壓過程。如果“text.tar.gz”是個損壞的壓縮包,就會把錯誤消息輸出到error.txt文件。
4.shell的管道
管道可以把很多命令連接起來,可以把第1個命令的輸入當作第2個命令的輸出,第2個命令的輸出當作第3個命令的輸入,依此類推。因此,管道的作用就是把一個命令的輸出當作下一個命令的輸入,而不經過任何中間文件。
通過管道符“|”可以建立管道連接,例如:
[root@WEBServer ~]#ls -al /etc/* |more
這條命令表示將/etc目錄以及子目錄下的所有文件分屏顯示。
[root@WEBServer ~]#ps -ef|grep httpd|wc –l
這個命令用于查看系統中正在運行的httpd進程,并統計httpd的進程數。
5.shell中的引用
在bash中有很多特殊字符,這些字符本身就具有特殊含義。如果在shell的參數中使用它們,就會出現問題。Linux中使用了“引用”技術來忽略這些字符的特殊含義,引用技術就是通知shell將這些特殊字符當作普通字符處理。shell中用于引用的字符有轉義字符“\”、單引號“'”、雙引號“""”。
(1)轉義字符“\”
如果將“\”放到特殊字符前面,shell就忽略這些特殊字符的原有含義,把它們當作普通字符對待,例如:
[root@WEBServer ~]#ls abc?* C:\backup [root@WEBServer ~]#mv abc\?\* abc [root@WEBServer ~]#mv C\:\\backup backup
上面是將abc?*重命名為abc,將C:\backup重命名為backup。因為文件名中包含特殊字符,所以都使用了轉義字符“\”。
(2)單引號“'”
如果將字符串放到一對單引號之間,那么字符串中所有字符的特殊含義將被忽略,例如:
[root@WEBServer ~]#mv C\:\\backup backup [root@WEBServer ~]#mv 'C:\backup' backup
上面兩條命令完全等效。
(3)雙引號“""”
雙引號的引用與單引號基本相同,包含在雙引號內的大部分特殊字符可以當作普通字符處理,但是仍有一些特殊字符即使用雙引號括起來,也仍然保留自己的特殊含義,比如“$”、“\”和“`”。
[root@WEBServer ~]#str="The \$SHELL Current shell is $SHELL" [root@WEBServer ~]#str1="\$$SHELL" [root@WEBServer ~]#echo $str The $SHELL Current shell is /bin/bash [root@WEBServer ~]#echo $str1 $/bin/bash
從上面的輸出可以看出,“$”和“\”在雙引號內仍然保留了特殊含義。
[root@WEBServer ~]# str="This hostname is `hostname`" [root@WEBServer ~]# echo $str This hostname is WEBServer
上面的輸出中,字符“`”在雙引號中也保留了自己的特殊含義。
6.shell的自動補全命令行
自動補全命令行是bash一個簡單而且實用的功能,自動補全命令行也就是在輸入命令時不必把命令輸全,shell就能智能判斷用戶所要輸入的命令。
當用戶輸入某個命令的一部分后,按Tab鍵,shell就會根據系統環境變量信息提示出與用戶輸入命令相似的所有命令和文件,例如:
[root@WEBServer ~]# if<按Tab鍵> if ifcfg ifconfig ifdown ifenslave ifnames ifrename ifup [root@WEBServer ~]# if
可以從上面看到,用戶輸入“if”后按Tab鍵,即可顯示以“if”為前綴的所有命令和文件。如果需要的是ifconfig命令,那么只須再次輸入“co”,然后按Tab鍵,shell就能補全命令。
如果我們要進入一個很深的目錄中,并且每個目錄的名字又很長,此時利用bash的自動補全功能,就再好不過了。
4.2 系統管理與維護
4.2.1 ls命令
1.功能說明
ls命令顯示指定工作目錄下的內容,列出工作目錄所含的文件及子目錄。此命令與Windows下的dir類似。另外,Linux也提供了dir命令,用戶也可以用dir命令代替ls命令。ls的語法如下。
ls [選項] [路徑或文件]
ls的選項及其說明如表4.1所示。
表4.1 ls的選項及其說明
選 項 |
說 明 |
---|---|
-a |
顯示指定目錄下的所有文件以及子目錄,包含隱藏文件(Linux下將“.”開頭的文件或者目錄視為隱藏文檔) |
-d |
只顯示目錄列表,不顯示文件 |
-l |
除文件名稱外,同時將文件或者子目錄的權限、使用者和大小等信息詳細列出 |
-s |
在每個文件名后輸出該文件的大小 |
-k |
以k字節的形式表示文件的大小 |
-u |
以文件上次被訪問的時間排序 |
-t |
以時間排序 |
-o |
顯示除組信息外的詳細信息 |
-x |
按列輸出,橫向排序 |
-r |
對目錄反向排序 |
-q |
用“?”代替不可輸出的字符 |
-m |
橫向輸出文件名,并以“,”作為分格符 |
-S |
以文件大小排序 |
-R |
列出所有子目錄下的文件 |
-pF |
在每個文件名后附上一個字符以說明該文件的類型。“*”表示可執行的普通文件,“/”表示目錄,“@”表示符號鏈接,“ | ”表示FIFO,“=”表示套接字(socket) |
-C |
按列輸出,縱向排序 |
-R |
列出所有子目錄下的文件 |
-Q |
把輸出的文件名用雙引號括起來 |
2.舉例(略)
4.2.2 pwd命令
功能說明
顯示當前的工作目錄,執行pwd指令可立刻得知目前所在的工作目錄的絕對路徑名稱,pwd命令的語法如下。
pwd
4.2.3 cd命令
1.功能說明
改變當前工作目錄,其用法與Windows下的cd類似。具體的語法格式如下。
cd [目錄名]
cd命令的選項及其說明如表4.2所示。
表4.2 cd命令的選項及其說明
選 項 |
說 明 |
---|---|
cd [目錄] |
切換到有目錄名指定的目錄下,注意,Linux下文件和目錄是區分大小寫的 |
cd 或者cd ~ |
返回當前用戶的默認工作目錄,注意,cd與“~”之間有一個空格 |
cd ~[用戶名] |
返回指定用戶的工作目錄下,注意,這里“~”和用戶名之間沒有空格 |
cd ..或者cd ../ |
返回到上級工作目錄下 |
cd / |
返回到根目錄下 |
2.舉例(略)
4.2.4 date命令
1.功能說明
顯示或者修改系統時間與日期。只有超級用戶才能用date命令設置時間,一般用戶只能用date命令顯示時間。date命令的語法如下。
date [選項] 顯示時間格式(以+開頭,后面接時間格式)
date命令的選項及其說明如下。
- -s --set:設置系統時間。
- -d --date:顯示描述的日期。
時間顯示格式如表4.3所示。
表4.3 時間顯示格式
格 式 |
表 示 含 義 |
---|---|
%H |
顯示小時,表示范圍00~23 |
%I |
顯示小時,表示范圍01~12 |
%k |
顯示小時,表示范圍0~23 |
%l |
顯示小時,表示范圍1~12 |
%M |
顯示分鐘,顯示格式為00~59 |
%S |
顯示秒鐘,顯示格式為00~59 |
%p |
顯示是AM(上午)還是PM(下午) |
%r |
顯示時間,格式為hh:mm:ss AM或PM,其中hh代表小時,mm代表分鐘,ss代表秒 |
%T |
顯示時間,格式為hh:mm:ss |
%x |
顯示年份和日期,格式為mm/dd/yyyy,這里的yyyy代表年份 |
%X |
顯示時間格式,相當于%H:%M:%S的組合 |
%a |
顯示星期幾 |
%b或%B |
顯示月份,%b是月的簡稱,%B是顯示月的全稱 |
%m |
顯示月份,表示格式為從01~12 |
%Z |
顯示時區 |
%d |
顯示一個月的第幾天 |
%D |
顯示年份和月份,格式為mm/dd/yy,這里yy代表年份的最后兩個數字 |
%Y或%y |
顯示年份,%Y顯示完整的年份,%y顯示年份的最后兩個數字 |
%c |
顯示日期和時間格式,相當于“%a %d %b %Y %r %Z”的組合 |
2.舉例(略)
4.2.5 passwd命令
1.功能說明
用于設置用戶密碼。語法格式如下。
passwd [用戶名]
2.舉例(略)
4.2.6 su命令
1.功能說明
su命令主要用于改變用戶身份,其格式如下。
su [選項] [用戶名]
su命令的選項及其說明如表4.4所示。
表4.4 su命令的選項及其說明
選 項 |
說 明 |
---|---|
- |
加載相應用戶下的環境變量 |
-l |
使目前的shell成為改變身份后用戶默認的shell |
-c |
改變身份運行一個指令后就結束 |
-m |
改變用戶身份,但是不改變環境變量 |
2.舉例(略)
4.2.7 clear命令
功能說明
clear命令用來清除屏幕信息,格式如下。
clear
4.2.8 man命令
1.功能說明
man命令用來顯示指定命令的幫助信息,其格式如下。
man [命令名稱]
2.舉例(略)
4.2.9 who命令
1.功能說明
who命令顯示目前登錄到系統的用戶,其格式如下。
who [選項] [file]
who命令的一般輸出格式如下。
名稱 [狀態] 終端 時間 [活動] [進程標識](主機名)
- 名稱:用戶的登錄名。
- 狀態:表明終端是否對用戶都是可寫的。
- 終端:類似于pts/1、pts/2等,此終端標識在/dev目錄中可找到。
- 時間:用戶登錄系統的時間。
- 活動:某個用戶在自己的終端上最后一次活動發生以來到現在的時間,如果此項是個“.”,就表示一分鐘內的終端活動;如果終端保持靜止已經超過24小時或自從系統啟動以來還沒有被使用過,那么此項標記為“old”。
- 進程標識:用戶登錄shell的進程id。
- 主機名:登錄到Linux系統上的客戶端機器標識。
who命令的選項及其說明如表4.5所示。
表4.5 who命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
列出所有信息,相當于所有選項 |
-b |
列出系統最近啟動的日期 |
-l |
列出所有可登錄的終端信息 |
-m |
僅列出關于當前終端的信息。“who –m”命令等同于“who am i”和“who am I”命令 |
-q |
列出在本地系統上的用戶和用戶數的清單 |
-r |
顯示當前系統的運行級別 |
-s |
僅顯示名稱、終端和時間字段信息。這是who默認的輸出,即“who”和“who –s”命令是等效的 |
-u |
顯示當前每個用戶的用戶名、登錄終端、登錄時間、終端活動和進程標識 |
-T或-w |
顯示tty終端的狀態,“+”表示對任何人可寫,“-”表示僅對root用戶或所有者可寫,“?”表示遇到終端故障 |
在Linux下who通常通過/var/run/utmp文件來獲取信息,如果“[file]”選項指定另一個文件,則who命令不再默認讀取/var/run/utmp文件,而是讀取指定文件來獲取信息。
2.舉例(略)
4.2.10 w命令
1.功能說明
用于顯示登錄到系統的用戶信息,其格式如下。
w [選項] [用戶]
w命令的選項及其說明如表4.6所示。
表4.6 w命令的選項及其說明
選 項 |
說 明 |
---|---|
-h |
不顯示輸出信息的標題 |
-l |
用長格式輸出 |
-s |
用短格式輸出,不顯示登錄時間、JCPU和PCPU時間 |
-V |
顯示版本信息 |
[用戶]表示當指定用戶后,只顯示該用戶的信息。
2.舉例(略)
4.2.11 uname命令
1.功能說明
uname命令用來顯示操作系統相關信息。其格式如下。
uname [選項]
uname命令的選項及其說明如表4.7所示。
表4.7 uname命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
顯示操作系統全部信息 |
-m |
顯示系統CPU類型,是32位還是64位系統 |
-n |
顯示操作系統的主機名 |
-s |
顯示操作系統類型 |
-r |
顯示操作系統內核版本 |
2.舉例(略)
4.2.12 uptime命令
1.功能說明
uptime命令用來輸出系統任務隊列信息,其格式如下。
uptime
uptime輸出當前系統時間、系統開機到現在的運行時間、目前有多少用戶在線和系統平均負載等。
2.舉例(略)
4.2.13 last命令
功能說明
列出目前與過去登入系統的用戶相關信息。當執行last指令時,它會默認讀取位于/var/log目錄下名稱為wtmp的文件,并把該給文件記錄的登入系統的用戶名單全部顯示出來。
last [選項] [-n 顯示列數]
last命令的選項及其說明如表4.8所示。
表4.8 last命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
把從何處登入系統的主機名稱或IP地址顯示在最后一行 |
-R |
不顯示登入系統的主機名稱或IP地址 |
-x |
顯示系統關機、重新開機以及執行等級的改變等信息 |
-n <顯示列數>或-<顯示列數> |
設置列出名單的顯示列數 |
-d |
將顯示的IP地址轉換成主機名稱 |
4.2.14 dmesg命令
功能說明
顯示開機信息。內核會將開機信息存儲在系統緩沖區(ring buffer)中,如果開機來不及查看相關信息,可以在開機后利用dmesg命令查看,也可以在/var/log/目錄中查看dmesg文件。其格式如下。
dmesg [選項]
dmesg命令的選項及其說明如表4.9所示。
表4.9 dmesg命令的選項及其說明
選 項 |
說 明 |
---|---|
-c |
顯示開機信息后,清除ring buffer信息 |
-s |
設置緩沖區大小,默認設置為8192 |
-n |
設置記錄信息的層級 |
4.2.15 free命令
1.功能說明
free命令用來顯示系統內存狀態,具體包括系統物理內存、虛擬內存、共享內存和系統緩存。其格式如下。
free [選項] [-s (間隔秒數)]
free命令的選項及其說明如表4.10所示。
表4.10 free命令的選項及其說明
選 項 |
說 明 |
---|---|
-b |
以字節為單位顯示內存使用情況 |
-m |
以MB為單位顯示內存使用情況 |
-K |
以KB為單位顯示內存使用情況 |
-t |
顯示內存總和列 |
-s(間隔秒數) |
根據指定的間隔秒數持續顯示內存使用情況 |
-o |
不顯示系統緩沖區列 |
2.舉例(略)
4.2.16 ps命令
1.功能說明
ps命令顯示系統進程在瞬間的運行動態,其格式如下。
ps [選項]
ps的選項非常之多,這里僅僅列出常用的選項介紹,ps命令的選項及其說明如表4.11所示。
表4.11 ps命令的選項及其說明
選 項 |
說 明 |
---|---|
a |
顯示所有用戶的進程,包含每個程序的完整路徑 |
-x |
顯示所有系統程序,包括那些沒有終端的程序 |
-u |
顯示使用者的名稱和起始時間 |
-f |
詳細顯示程序執行的路徑群 |
-c |
只顯示進程的名稱,不顯示進程的完整路徑 |
-e |
將除內核進程以外所有進程的信息寫到標準輸出 |
2.舉例(略)
4.2.17 top命令
top命令提供了對系統處理器狀態的實時監控,它能夠實時顯示系統中各個進程的資源占用狀況。該命令可以按照對CPU的使用、內存使用和執行時間對系統任務進程進行排序顯示,同時top命令還可以通過交互式命令進行設定顯示。
1.功能說明
查看即時活躍的進程,類似于Windows的任務管理器。其格式如下。
top [選項]
top的選項很多,這里列出常用的選項及其說明,如表4.12所示。
表4.12 top命令的選項及其說明
選 項 |
說 明 |
---|---|
-d |
指定每兩次屏幕信息刷新之間的時間間隔 |
-i |
不顯示閑置或者僵死的進程信息 |
-c |
顯示進程的整個命令路徑,而不是只顯示命令名稱 |
-s |
使top命令在安全模式下運行,此時top的交互式指令被取消,避免潛在危險 |
-b |
分屏顯示輸出信息,結合“-n”選項可以將屏幕信息輸出到文檔 |
-n |
top輸出信息更新的次數,完成后將退出top命令 |
除了一些選項之外,top命令還有很多交互式命令。交互式命令就是在top命令執行過程中使用的一些命令,這些命令都是單個字母,從應用來講,熟悉這些交互式命令至關重要。
表4.13所示為交互式命令及其具體說明。
表4.13 交互式命令及其說明
交互式命令 |
說 明 |
---|---|
h或? |
顯示幫助信息,給出交互式命令的一些說明總結 |
k |
終止一個進程,系統將提示用戶輸入一個需要終止進程的PID |
i |
忽略閑置進程和僵死進程,這是一個開關式命令 |
s |
改變top輸出信息兩次刷新之間的時間,系統將提示輸入新的時間,單位是秒。如果輸入小數,就換算成毫秒;如果輸入0,系統輸出將不斷刷新,默認刷新時間是5秒。需要注意的是,如果設置太短的時間,可能會引起系統不斷刷新,無法看清輸出顯示情況,而且系統負載也會加大 |
o或者O |
改變top輸出信息中顯示項的順序。按小寫的a~z鍵可以將相應的列向右移動,而按大寫的A~Z鍵可以將相應的列向左移動。最后按Enter鍵確定 |
f或者F |
從當前顯示列表中添加或者刪除項。按f鍵之后會顯示列的列表,按a~z鍵即可顯示或隱藏對應的列。最后按Enter鍵確定 |
m |
切換顯示內存信息 |
t |
切換顯示進程和CPU狀態信息 |
r |
重新設置一個進程的優先級,系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10 |
l |
切換顯示平均負載和啟動時間信息 |
q |
退出top顯示 |
c |
切換顯示完整命令行和命令名稱信息 |
M |
根據駐留內存大小進行排序輸出 |
P |
根據CPU使用百分比大小進行排序輸出 |
T |
根據時間/累計時間進行排序輸出 |
S |
切換到累計模式 |
W |
將當前top設置寫入~/.toprc文件中 |
2.舉例(略)
4.3 文件管理與編輯
4.3.1 mkdir命令
1.功能說明
mkdir命令用于創建一個目錄。mkdir是make directory的縮寫。其格式如下。
mkdir [選項] 目錄名
mkdir命令的選項及其說明如表4.14所示。
表4.14 mkdir命令的選項及其說明
選 項 |
說 明 |
---|---|
-m |
對新建目錄設置存取權限 |
-p |
可以指定一個路徑名稱。此時,若路徑中的某些目錄尚不存在,加上此選項后,系統將自動創建那些尚不存在的目錄,也就是說,一次可以創建多個目錄 |
2.舉例(略)
4.3.2 more命令
1.功能說明
如果一個文本文件比較長,一屏無法顯示完畢,就需要使用more命令。more命令讀取文本文件時,每次顯示一屏,并且在每屏后暫停,同時在屏幕底部顯示單詞“More”。如果此時按Enter鍵,more命令就會接著再顯示文本的一行,依此類推;如果按空格鍵,more命令就繼續顯示文本文件的另一屏信息。其格式如下。
more [選項] 文件名
more命令的選項及其說明如表4.15所示。
表4.15 more命令的選項及其說明
選 項 |
說 明 |
---|---|
-d |
在屏幕底部more提示符后顯示友好信息,此信息是有關使用哪些鍵繼續,哪些鍵退出,哪些鍵提供more命令幫助的 |
-s |
將輸出文件中的多個空行減少為只有一個空行輸出。以文件的第1行為準 |
-p |
先清除顯示屏以前的信息,再顯示文本信息 |
-c |
顯示文件時,每屏顯示都清除屏幕先前的信息,然后從最頂端顯示出來 |
2.舉例(略)
4.3.3 cat命令
1.功能說明
cat命令用來將文件的內容輸出到標準輸出,類似于DOS下的type命令,同時cat還可以用于連接合并文件。其格式如下。
cat [選項] 文件名
或者:
cat 文件1 文件2 >文件3
cat命令的選項及其說明如表4.16所示。
表4.16 cat命令的選項及其說明
選 項 |
說 明 |
---|---|
-A |
將文件中的制表符顯示為“^I”,同時在每行的末尾顯示一個$符號 |
-b |
將文件中的所有非空行按順序編號,編號從1開始 |
2.舉例(略)
4.3.4 diff命令
1.功能說明
diff命令用來比較文件的差異。diff以逐行的方式比較文本文件的異同,如果指定比較的是目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中的子目錄。其格式如下。
diff [選項] 文件1 文件2
diff命令的選項及其說明如表4.17所示。
表4.17 diff命令的選項及其說明
選 項 |
說 明 |
---|---|
-c |
顯示全部內容,并標出不同之處 |
-b |
忽略行尾的空格,同時字符串中的一個或多個空格都將視為相同 |
-r |
當文件1和文件2為目錄時,會比較子目錄中的文件 |
-s |
當兩個文件相同時,顯示文件的相同信息 |
2.輸出格式
通常輸出信息由如下格式組成。
n1 a n3,n4 n1,n2 d n3 n1,n2 c n3,n4
其中,字母a、d、c之前的n1和n2代表文件1的行號,字母a、d、c之后的n3和n4代表文件2的行號,字母a、d、c分別表示附加、刪除和修改操作。在上面輸出形式的每行后緊跟著兩個文件的若干不同行,其中以“<”打頭的行屬于文件1,以“>”打頭的行屬于文件2。
3.舉例(略)
4.3.5 grep命令
1.功能說明
grep命令是Linux下的文本過濾工具,grep根據指定的字符串,對文件的每一行進行搜索,如果找到了這個字符串,就輸出該行的內容。其格式如下。
grep [選項] 需要查找的字符串文件名
grep命令的選項有很多,這里列出最常使用的選項說明,如表4.18所示。
表4.18 grep命令的選項及其說明
選 項 |
說 明 |
---|---|
-A NUM |
除了列出符合條件的行外,同時列出每個符合條件行的后NUM行 |
-c |
只顯示符合條件的行數,而不顯示每行的具體信息 |
-f file |
事先將要搜索的樣式寫入一個文件中,每行一個樣式,然后以這個文件作為條件進行搜索 |
-i |
搜索時忽略大小寫 |
-n |
在搜索結果中顯示行號 |
-B |
與選項“-A”相反,除了列出符合條件的行外,同時列出每個符合條件行的前NUM行 |
2.舉例(略)
4.3.6 rm命令
功能說明
rm命令用來刪除某個目錄及其下的所有文件及子目錄。對于鏈接文件,只是斷開了鏈接,原文件保持不變。其格式如下。
rm [選項] 文件或者目錄
rm命令的選項及其說明如表4.19所示。
表4.19 rm命令的選項及其說明
選 項 |
說 明 |
---|---|
-r |
告訴rm將選項中列出的全部目錄以及子目錄還有文件均遞歸地刪除,如果在選項中不指定“-r”選項,“rm”命令將不能刪除目錄 |
-f |
忽略不存在的問題,也不給出提示 |
-i |
交互式刪除,即在刪除前進行確認 |
注意
使用rm命令要特別小心,“rm-rf”組合要慎用,因為一旦文件被刪除,就不能被恢復。Linux沒有類似于Windows的回收站。因此,為了防止文件或者目錄被誤刪除,可以使用rm的“-i”選項,來逐個確認要刪除的文件。使用“-i”選項時,如果用戶輸入“y”,文件將被刪除;如果輸入其他任何信息,文件則不被刪除。
4.3.7 touch命令
1.功能說明
touch命令用來改變指定文件的訪問時間和修改時間,若指定文件不存在則創建此文件。如果沒有指定時間,則使用當前時間。其格式如下。
touch [選項] 設定的時間文件
touch命令的選項及其說明如表4.20所示。
表4.20 touch命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
改變文件的訪問時間為系統當前時間,無須設置時間選項 |
-m |
改變文件的修改時間為系統當前時間,無須設置時間選項 |
-c |
如果文件不存在,不創建也不提示 |
-d或者-t |
使用指定的日期或時間 |
-r<參考文件或目錄> |
把指定文件或目錄的日期、時間都設成和參考文件或目錄的日期、時間相同 |
2.舉例
下面是touch命令的一個操作實例,“#”號后面的內容為命令注釋。
[root@mylinux~]# touch test.txt#創建一個文件test.txt [root@mylinux~]# ls -l#顯示文件創建時間(修改時間) total 0 -rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt [root@mylinux~]# ls –lu#顯示文件的訪問時間 total 0 -rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt [root@mylinux~]# date #顯示系統當前時間 Fri Jul 18 06:45:21 CST 2008 [root@mylinux~]# touch -a test.txt #改變文件的訪問時間為系統當前時間 [root@mylinux~]# ls -lu total 0 -rw-r--r-- 1 root root 0 Jul 18 06:45 test.txt [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt [root@mylinux~]# touch -m test.txt #改變文件的修改時間為系統當前時間 [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt [root@mylinux~]# touch linux.txt [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt [root@mylinux~]# ls -lu total 0 -rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:45 test.txt [root@mylinux~]# touch -a -r linux.txt test.txt #將test.txt文件的訪問時間修改為linux.txt文件的訪問時間 [root@mylinux~]# ls -lu total 0 -rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:47 test.txt [root@mylinux~]# touch -d "20080718 06:40" linux.txt #將linux.txt文件的修改時間設定為2008年7月18日6點40分 [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:40 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt
4.3.8 ln命令
1.功能說明
ln命令用來在文件或目錄之間創建鏈接。
Linux下的鏈接有兩種,一種是硬鏈接(Hard Link),另一種是符號鏈接(Symbolic Link),默認情況下ln命令產生的是硬鏈接。
- 硬鏈接:是指通過文件的inode來進行鏈接。在Linux的文件系統中,保存在磁盤的所有類型的文件都會分配一個編號,這個編號稱為inode號(Inode Index)。多個文件指向同一個inode在Linux系統中是允許的,這就是所謂的硬鏈接。硬鏈接的作用是允許一個文件擁有多個有效的路徑名,這樣用戶就可以對一些重要文件建立硬鏈接,以防止誤刪除操作。因為對應該文件的inode有一個以上的鏈接,所以只刪除一個鏈接并不影像inode本身和其他鏈接,只有當最后一個鏈接被刪除后,文件的數據塊及目錄的鏈接才會釋放,也就是說,此時文件才會被真正刪除。
- 符號鏈接:也叫軟鏈接,軟鏈接類似于Windows中的快捷方式,因此軟鏈接是一個指向真正的文件或者目錄位置的符號連接。
ln命令的格式如下。
ln [選項] 源文件目標鏈接名
ln命令的選項及其說明如表4.21所示。
表4.21 ln命令的選項及其說明
選 項 |
說 明 |
---|---|
-f |
如果在目標位置存在與鏈接名相同的文件,這個文件將被刪除 |
-s |
進行軟鏈接 |
-d |
允許系統管理員硬鏈接自己的目錄 |
-b |
對將在鏈接時會被覆蓋或者刪除的文件進行備份 |
2.舉例(略)
4.3.9 file命令
1.功能說明
file命令用來顯示文件的類型。對于長度為0的文件,將識別為空文件;對于符號連接文件,默認情況下將顯示符號鏈接引用的真實文件路徑。其格式如下。
file [選項] 文件名
file命令的選項及其說明如表4.22所示。
表4.22 file命令的選項及其說明
選 項 |
說 明 |
---|---|
-b |
顯示文件類型結果,不顯示對應文件名稱 |
-L |
直接顯示符號鏈接所指向文件的類型 |
-z |
顯示壓縮文件的信息 |
-i |
如果文件不是常規文件,則不進一步對文件類型進行分類 |
2.舉例(略)
4.3.10 cp命令
1.功能說明
cp命令用來將給出的文件或者目錄復制到另一個文件或者目錄中。cp與Windows下的copy命令類似,但是cp命令更加強大。其格式如下。
cp [選項] 源文件或目錄目標文件或目錄
cp命令的選項及其說明如表4.23所示。
表4.23 cp命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
在復制目錄時使用。它保留所有的信息,包含文件鏈接、文件屬性,并遞歸地復制目錄 |
-r |
若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件。此時目標文件必須為一個目錄名 |
-d |
復制時保留鏈接,這樣不會失去鏈接文件 |
-p |
保留文件的修改時間和存取權限 |
-i |
如果已經有相同文件名的目標文件,則提示用戶是否覆蓋 |
2.舉例
1)將當前目錄下的所有文件復制到/tmp目錄下,“./*”表示當前目錄下所有文件和目錄。
[root@mylinux~]#cp –r ./* /tmp
2)將/home/oracle目錄及其子目錄下的全部內容復制到/home/ixdba下。
[root@mylinux~]#cp –r /home/oracle /home/ixdba
4.3.11 find命令
1.功能說明
find命令用來在指定的路徑下查找指定的文件。其格式如下。
find path-name[-options] [-print –exec -ok命令 {} \;]
具體的選項說明如下。
- path-name:find命令查找的目錄路徑,例如,可以用“.”表示當前目錄,用“/”表示系統根目錄。
- -options:find命令的這個選項主要用來控制搜索的方式。這里列出“-options”選項常見的幾種格式,如表4.24所示。
表4.24 “-options”選項常見的格式及其說明
格 式 |
說 明 |
---|---|
-name '字符串' |
查找文件名匹配所給字符串的所有文件,字符串內可用通配符*、?、[] |
-lname '字符串' |
查找文件名匹配所給字符串的所有符號鏈接文件,字符串內可用通配符*、?、[] |
-gid n |
查找屬于ID號為n的用戶組的所有文件 |
-uid n |
查找屬于ID號為n的用戶的所有文件 |
-empty |
查找大小為0的目錄或文件 |
-path '字符串' |
查找路徑名匹配所給字符串的所有文件,字符串內可用通配符*、?、[] |
-group'字符串' |
查找屬于用戶組名為所給字符串的所有的文件 |
-depth |
在查找文件時,首先查找當前目錄下的文件,然后再查找其子目錄下的文件 |
-prune 目錄 |
指出搜索時不搜索該目錄。如果同時使用-depth選項,那么-prune將被find命令忽略 |
-size n |
查找文件長度為n塊的文件,帶有c時表示文件長度以字節計 |
-user '字符串' |
查找屬于用戶名為所給字符串的所有的文件 |
-mtime +n或-n |
按時間搜索,+n表示n天之前的,-n表示今天到n天前之間的 |
-type 文件類型 |
按指定文件類型搜索。文件類型包括b(塊設備文件)、c(字符設備文件)、f(普通文件)、l(符號鏈接)、d(目錄)、p(管道)、s(socket)文件 |
- -print:將搜索結果輸出到標準輸出。
- -exec:對搜索出符合條件的文件執行所給出的Linux命令,而不詢問用戶是否需要執行該命令。{}表示shell命令的選項即為所查找到的文件。命令的末尾必須以“;”結束。
注意
格式要正確,“-exec 命令 {} \;”,在“}”和“\”之間一定要有空格才行。
- -ok:對搜索出符合條件的文件執行所給出的Linux命令。與-exec不同的是,它會詢問用戶是否需要執行該命令。
2.舉例(略)
4.3.12 split命令
1.功能說明
split命令用來分割文檔,將一個文件分成數個。其格式如下。
split [選項] [input_file] [output_file]
split命令的選項及其說明如表4.25所示。
表4.25 split命令的選項及其說明
選 項 |
說 明 |
---|---|
-b size |
指定分割出來的文件大小,size可加入單位,b代表512字節,k代表1KB,m代表1MB |
-n |
這里“n”指定分割的每個文件的長度,默認為1000行 |
-d |
將split命令生成的文件序列以數字形式命名 |
-a |
指定split命令生成的文件序列的長度,默認長度為2 |
- input_file:需要分割的文件。
- output_file:分割出來的文件序列,split命令分割后生成的文件序列名依次為output_fileaa、output_fileab、output_fileac等。如果沒有指定output_file,系統默認以“x”作為輸出文件名。
2.舉例(略)
4.3.13 mv命令
1.功能說明
mv命令用來將文件或目錄改名或將文件由一個目錄移入另一個目錄中。如果源類型和目標類型都是文件或者目錄,mv將進行目錄重命名。如果源類型為文件,而目標類型為目錄,mv將進行文件的移動。如果源類型為目錄,則目標類型只能是目錄,不能是文件,此時完成目錄重命名。其格式如下。
mv [選項] 源文件或目錄目標文件或目錄
mv命令的選項及其說明如表4.26所示。
表4.26 mv命令的選項及其說明
選 項 |
說 明 |
---|---|
-i |
交互式操作,在對已經存在的文件或目錄覆蓋時,系統會詢問是否覆蓋,用戶輸入“y”進行覆蓋,輸入“n”則不覆蓋 |
-f |
禁止交互式操作,在mv將要覆蓋某個文件或者目錄時,不給任何提示,默認覆蓋 |
2.舉例(略)
4.4 壓縮與解壓
4.4.1 zip/unzip命令
1.功能說明
將一般的文件或者目錄進行壓縮或者解壓,默認生成以“.zip”為后綴的壓縮包。zip命令類似于Windows中的winzip壓縮程序。其格式如下。
zip [選項] 壓縮文件名需要壓縮的文檔列表 unzip [選項] 壓縮文件名
zip命令的選項及其說明如表4.27所示。
表4.27 zip命令的選項及其說明
選 項 |
說 明 |
---|---|
-r |
遞歸壓縮,將指定目錄下的所有文件以及子目錄全部壓縮 |
-d |
從壓縮文件內刪除指定的文件 |
-i "文件列表" |
只壓縮文件列表中的文件 |
-x "文件列表" |
壓縮時排除文件列表中指定的文件 |
-u |
更新文件到壓縮文件中 |
-m |
將文件加入壓縮文件壓縮后,刪除原始文件,即把文件移到壓縮文件中 |
-F |
嘗試修復損壞的壓縮文件 |
-T |
檢查壓縮文件內的每個文件是否正確無誤 |
- 壓縮級別 |
壓縮級別是1~9之間的一個數字 |
unzip命令的選項及其說明如表4.28所示。
表4.28 unzip命令的選項及其說明
選 項 |
說 明 |
---|---|
-x "文件列表" |
解壓文件,但不包含文件列表中指定的文件 |
-t |
測試壓縮文件有無損壞,并不解壓 |
-v |
查看壓縮文件的詳細信息,具體包括壓縮文件中包含的文件大小、文件名和壓縮比等,并不解壓 |
-n |
解壓時不覆蓋已經存在的文件 |
-o |
解壓時覆蓋已經存在的文件,并且不要求用戶確認 |
-d 目錄名 |
把壓縮文件解壓到指定目錄下 |
2.舉例(略)
4.4.2 gzip/gunzip命令
1.功能說明
將一般的文件進行壓縮或者解壓。壓縮文件預設的擴展名為“.gz”,其實gunzip就是gzip的硬鏈接,因此無論是壓縮或者解壓都可以通過gzip來實現。
注意
gzip只能對文件進行壓縮,不能壓縮目錄,即使指定壓縮的目錄,也只能壓縮目錄內的所有文件。
其格式如下。
gzip [選項] 壓縮(解壓縮)的文檔名
gzip命令的選項及其說明如表4.29所示。
表4.29 gzip命令的選項及其說明
選 項 |
說 明 |
---|---|
-d |
對壓縮的文件進行解壓 |
-r |
遞歸式壓縮指定目錄以及子目錄下的所有文件 |
-t |
檢查壓縮文檔的完整性 |
-v |
對于每個壓縮和解壓縮的文檔,顯示相應的文件名和壓縮比 |
-l |
顯示壓縮文件的壓縮信息,顯示字段為壓縮文檔大小、未壓縮文檔大小、壓縮比和未壓縮文檔名稱 |
-num |
用指定的數字num配置壓縮比,“-1”或“-fast”表示最低壓縮比,“-9”或“-best”表示最高壓縮比。系統默認壓縮比為6 |
2.舉例(略)
4.4.3 bzip2/bunzip2命令
1.功能說明
對文件進行壓縮與解壓縮。此命令類似于“gzip/gunzip”命令,只能對文件進行壓縮。對于目錄只能壓縮目錄下的所有文件,壓縮完成后,在目錄下生成以“.bz2”為后綴的壓縮包。bunzip2其實是bzip2的符號鏈接,即軟鏈接,因此壓縮、解壓都可以通過bzip2實現。其格式如下。
bzip2 [選項] 要壓縮或解壓的文件
bzip2命令的選項及其說明如表4.30所示。
表4.30 bzip2命令的選項及其說明
選 項 |
說 明 |
---|---|
-d |
執行解壓縮,此時選項后面跟要解壓縮的文件 |
-v |
壓縮或解壓文件時,顯示詳細信息 |
-k |
bzip2在壓縮或解壓縮后,會刪除原始文件,若要保留原始文件,可使用此選項 |
-f |
bzip2在壓縮或解壓縮時,若輸出文件與現有文件同名,預設不會覆蓋現有文件。若要覆蓋,就要使用此選項 |
-t |
測試“.bz2”壓縮文件的完整性 |
- 壓縮級別 |
壓縮級別可以從1~9中選取,數字越大,壓縮率越高 |
2.舉例(略)
4.4.4 tar命令
1.功能說明
tar是Linux下經常使用的歸檔工具,對文件或者目錄進行打包歸檔,歸檔成一個文件,但是并不進行壓縮。其格式如下。
tar [主選項+輔助選項] 文件或者目錄
tar命令的選項很多,這里列出一些經常用到的主選項,如表4.31所示。
表4.31 tar命令的主選項及其說明
主 選 項 |
說 明 |
---|---|
-c |
新建文件 |
-r |
把要歸檔的文件追加到檔案文件的末尾 |
-t |
列出檔案文件中已經歸檔的文件列表 |
-x |
從打包的檔案文件中還原出文件 |
-u |
更新檔案文件,用新建文件替換檔案中的原始文件 |
輔助選項的詳細信息如表4.32所示。
表4.32 tar命令的輔助選項及其說明
輔 助 選 項 |
說 明 |
---|---|
-z |
調用gzip命令在文件打包的過程中壓縮/解壓文件 |
-w |
在還原文件時,把所有文件的修改時間設定為現在時間 |
-j |
調用bzip2命令在文件打包的過程中壓縮/解壓文件 |
-Z |
調用compress命令過濾檔案 |
-f |
“-f”選項后面緊跟檔案文件的存儲設備,默認是磁盤,需要指定檔案文件名;如果是磁帶,只需指定磁帶設備名即可。注意,在“-f”選項之后不能再跟任何其他選項,也就是說,“-f”必須是tar命令的最后一個選項 |
-v |
指定在創建歸檔文件過程中,顯示各個歸檔文件的名稱 |
-p |
在文件歸檔的過程中,保持文件的屬性不發生變化 |
-N "yyyy/mm/dd" |
在指定日期之后的文件才會打包到檔案文件中 |
--exclude file |
在打包過程中,不將指定file文件打包 |
2.舉例(略)
4.4.5 dd命令
1.功能說明
dd命令用來轉換或復制文件,同時可以對設備進行備份。其格式如下。
dd if="input_file" of="output_file" bs="block_size" count="number"
dd命令的選項及其說明如下。
- if:就是輸入文件,可以是設備,例如,磁盤某分區或者整個磁盤。
- of:就是輸出文件,也可以是輸出設備,例如,磁盤、磁帶等。
- bs:指定一個block的大小,如果沒有指定,默認為512字節。
- count:就是“bs”的數量。
2.舉例(略)
4.4.6 cpio命令
1.功能說明
cpio命令是通過重定向的方式將文件進行打包、備份、還原、恢復的工具,它可以解壓以“.cpio”或者“.tar”結尾的文件。其格式如下。
cpio [選項] >文件名或者設備名 cpio [選項] <文件名或者設備名
cpio命令的選項及其說明如表4.33所示。
表4.33 cpio命令的選項及其說明
選 項 |
說 明 |
---|---|
-o |
將文件復制、打包成文件或者將文件輸出到設備上 |
-i |
將打包文件解壓或者將設備上的備份還原到系統中 |
-t |
查看cpio打包的文件內容或者輸出到設備上的文件內容 |
-v |
顯示打包過程中的文件名稱 |
-d |
在cpio還原文件的過程中,自動建立相應的目錄 |
-c |
一種較新的存儲方式 |
-B |
讓默認塊可以增大到5120字節,默認塊為512字節,這樣做的好處是可以加快存取速度 |
2.舉例(略)
4.5 磁盤管理與維護
4.5.1 df命令
1.功能說明
df命令用來檢查Linux系統的磁盤空間占用情況。其格式如下。
df [選項]
df命令的選項及其說明如表4.34所示。
表4.34 df命令的選項及其說明
選 項 |
說 明 |
---|---|
-h |
以容易理解的格式輸出文件系統分區占用情況,如32KB、120MB、60GB |
-k |
以KB大小為單位輸出文件系統分區占用情況 |
-m |
以MB大小為單位輸出文件系統分區占用情況 |
-a |
列出所有的文件系統分區,包含0大小的文件系統分區 |
-i |
列出文件系統分區的inode信息 |
-T |
顯示磁盤分區的文件系統類型 |
2.舉例(略)
4.5.2 du命令
1.功能說明
du命令用來顯示文件或目錄所占用的磁盤空間情況。其格式如下。
du [選項] 文件或目錄
du命令的選項及其說明如表4.35所示。
表4.35 du命令的選項及其說明
選 項 |
說 明 |
---|---|
-s |
顯示文件或者整個目錄的大小,單位為KB |
-b |
以字節為單位顯示文件大小或者顯示目錄下所有文件的大小 |
-sh |
以人性化的格式顯示文件或者目錄大小,如300MB、1.2GB等 |
-sm |
以MB為單位顯示文件或者目錄大小 |
2.舉例(略)
4.5.3 fsck命令
1.功能說明
fsck命令用來檢查文件系統并嘗試修復錯誤。其格式如下。
fsck [選項] [-t <文件系統類型>] [設備名]
fsck命令的選項及其說明如表4.36所示。
表4.36 fsck命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
自動修復文件系統,沒有任何提示 |
-r |
采取交互式的修復模式,在執行修復時進行詢問,讓用戶得以確認并決定處理方式 |
-A |
依照/etc/fstab配置文件的內容,檢查文件內所列的全部文件系統 |
-T |
執行fsck指令時,不顯示標題信息 |
-V |
顯示fsck指令的執行過程 |
-N |
不執行指令,僅列出實際執行會進行的動作 |
“-t <文件系統類型>”是指定要檢查的文件系統類型。
注意
在執行fsck命令修復某個文件系統時,這個文件系統對應的磁盤分區一定要處于卸載狀態,磁盤分區在掛載狀態下進行修復是極為不安全的,數據可能遭到破壞,也有可能損壞磁盤。
2.舉例(略)
4.5.4 sync命令
功能說明
sync命令用來強制把內存中的數據寫回硬盤,以免數據的丟失。其格式如下。
sync
需要說明的是:在Linux系統中,修改過的操作會緩存到內存中,不會馬上寫入硬盤,等待適當的時候再從內存寫入磁盤,這樣可以提高系統讀寫效率。Linux下默認每隔3秒系統自動執行一次sync操作,系統正常關機時也會執行sync操作,保證所有操作全部從內存寫入磁盤。如果非法關機,系統內存信息無法及時同步到硬盤,就會造成數據丟失或者文件損壞,由此可見,Linux系統中正常關機是非常重要的。
4.5.5 eject命令
1.功能說明
eject命令用來退出抽取式設備,如光驅或者磁帶。如果該設備已經掛載,則eject先將設備卸載,然后再退出設備。其格式如下。
eject [選項] 設備名
eject命令的選項及其說明如表4.37所示。
表4.37 eject命令的選項及其說明
選 項 |
說 明 |
---|---|
-c <光驅編號> |
如果Linux系統中有多個光驅,需要指定某個光驅 |
-d或--default |
顯示默認設備,而不是實際執行操作 |
-f或--floppy |
退出抽取式軟盤 |
-q或--tape |
退出磁帶 |
-r或--cdrom |
退出光盤 |
-t或--trayclose |
關閉光盤的托盤 |
-n或--noop |
顯示指定的設備名對應的設備文件路徑。默認顯示光盤的設備文件路徑 |
2.舉例(略)
4.5.6 mount/umount命令
1.功能說明
掛載以及卸載指定的文件系統。在第3章我們曾經講述過mount/umount命令,這里再深入講述mount/umount的使用。
mount [選項] [-L<標簽>] [-o<選項>] [-t<文件系統類型>] [設備名] [掛載點] umount [掛載點]
mount命令的選項及其說明如表4.38所示。
表4.38 mount命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
加載文件/etc/fstab中指定的所有設備 |
-n |
不將加載信息記錄在/etc/mtab文件中 |
-r |
以只讀方式加載設備 |
-w |
以可讀寫模式加載設備,屬于mount默認設置 |
-f或-v |
不加載設備,僅查看mount的掛載狀態 |
1)-L<標簽>:標簽其實就是磁盤分區標識的別名,標簽可以隨便起名,這樣便于記憶,在Linux下磁盤分區的設備名比較難記,利用標簽代替設備名,簡單易記。
2)-o<選項>:指定加載文件系統時的選項,這些選項如下。
- async:以非同步的方式執行文件系統的輸入、輸出動作。
- atime:每次存取都更新inode的存取時間,默認設置,取消選項為noatime。
- auto:必須在/etc/fstab文件中指定此選項。指定-a選項時,會加載設置為auto的設備,取消選項為noauto。
- dev:可讀文件系統上的字符或塊設備,取消選項為nodev。
- exec:可執行二進制文件,取消選項為noexec。
- noatime:每次存取時不更新inode的存取時間。
- noauto:加入此選項,就無法使用-a選項來加載。
- nodev:不讀文件系統上的字符或塊設備。
- noexec:無法執行二進制文件。
- nosuid:關閉set-user-identifier(設置用戶ID)與set-group-identifer(設置組ID)設置位。
- nouser:使用戶無法執行加載操作,默認設置。
- iocharset=XXX:指定mount分區時使用的字符集。
- codepage=XXX:指定mount分區時使用的內碼表。
- remount:重新加載設備。通常用于改變設備的設置狀態。
- ro:以只讀模式加載。
- rw:以可讀寫模式加載。
- suid:啟動set-user-identifier(設置用戶ID)與set-group-identifer(設置組ID)設置位,取消選項為nosuid。
- sync:以同步方式執行文件系統的輸入、輸出動作。
- user:可以讓一般用戶加載設備。
- defaults:使用默認選項。默認選項為rw、suid、dev、exec、anto、nouser與async。
3)-t<文件系統類型>:指定設備的文件系統類型,常用選項如下。
- ext3/ext2:Linux目前的常用文件系統。
- msdos:MS-DOS的FAT。
- vfat:Windows 95/98的VFAT。
- nfs:網絡文件系統。
- iso9660:CD-ROM光盤的標準文件系統。
- ntfs:Windows NT的文件系統。
4)設備名:硬盤分區在Linux上的設備標識,類似于/dev/sda1、/dev/hda2等。
5)掛載點:Linux系統下指定的某個目錄。
2.舉例(略)
4.6 網絡設置與維護
4.6.1 ifconfig命令
1.功能說明
ifconfig命令用來配置網絡或顯示當前網絡接口狀態。它類似于Windows下的ipconfig命令,同時ifconfig命令必須以root用戶來執行。其格式如下。
ifconfig [選項] [interface] [inet|up|down|netmask|addr|broadcast]
ifconfig命令的選項及其說明如表4.39所示。
表4.39 ifconfig命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
顯示所有的網絡接口信息,包括活動的和非活動的 |
-s |
僅顯示每個接口的摘要數據,是有關接口活動性的,每個接口顯示一行信息 |
-v |
如果某個網絡接口出現錯誤,將返回錯誤消息,以幫助發現和處理故障 |
- interface:網絡接口名,Linux下的網絡接口名類似于eth0、eth1和lo等(在CentOS 7.x版本中,網絡接口名變為類似enp0s1、enp0s2這樣的標識),分別表示第1塊網卡、第2塊網卡和回環接口。這是個可選項,如果不添加此選項,則顯示系統中所有的網卡信息;如果添加此選項,則顯示指定網卡信息。
- up:激活一個網絡接口。
- down:與up相反,使指定的網絡接口無效。
- netmask:為一個指定的網絡接口指定子網掩碼。
- addr:這里的“addr”為網絡接口指定的IP地址。
- broadcast:為指定的接口設置廣播地址。
2.舉例(略)
4.6.2 scp命令
1.功能說明
scp就是secure copy,用于將文件或者目錄從一個Linux系統復制到另一個Linux系統下。scp傳輸數據用的是SSH協議,保證了數據傳輸的安全。其格式如下。
scp 遠程用戶名@ip地址:文件的絕對路徑本地Linux系統路徑 scp 本地Linux系統文件路徑遠程用戶名@ip地址:遠程系統文件絕對路徑名
scp使用第1種格式將遠程Linux系統上的某個文件或者目錄復制到本地Linux系統上,使用第2種格式是將本地的某個文件或者目錄復制到遠程Linux系統的某個路徑下。
2.舉例(略)
4.6.3 netstat命令
1.功能說明
netstat命令用來顯示本機網絡連接、運行端口和路由表等信息。其格式如下。
netstat [選項]
netstat命令的選項及其說明如表4.40所示。
表4.40 netstat命令的選項及其說明
選 項 |
說 明 |
---|---|
-a |
顯示本機所有連接和監聽端口 |
-n |
以網絡IP地址的形式顯示當前建立的有效連接和端口 |
-r |
顯示路由表信息 |
-s |
顯示按協議的統計信息。默認情況下,將顯示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6的統計信息 |
-v |
顯示當前的有效連接,與“-n”選項類似 |
-t |
顯示所有的TCP協議連接情況 |
-u |
顯示所有的UDP協議連接情況 |
-c<秒數> |
后面跟的秒數,表示每隔幾秒就刷新顯示一次 |
-i |
顯示自動配置接口的狀態 |
-l |
僅顯示連接狀態為“LISTEN”的服務的網絡狀態 |
-p |
顯示連接對應的PID與程序名 |
2.舉例(略)
4.6.4 traceroute命令
1.功能說明
traceroute命令用來顯示網絡數據包傳輸到指定主機的路徑信息,追蹤數據傳輸路由狀況。預設數據包大小是38字節,用戶可另行設置。它與Windows下的tracert命令類似,其格式如下。
traceroute [選項] [遠程主機名或者IP地址] [數據包大小]
traceroute命令的選項及其說明如表4.41所示。
表4.41 traceroute命令的選項及其說明
選 項 |
說 明 |
---|---|
-i <網絡接口> |
使用指定的網絡接口發送數據包 |
-n |
直接使用IP地址而不使用主機名 |
-v |
詳細顯示命令的執行過程 |
-w<超時秒數> |
設置等待遠程主機回應的時間 |
-x |
開啟或者關閉對數據包的正確性檢驗 |
-s<來源ip> |
設置本地主機發送數據包的IP地址 |
-g<網關地址> |
設置來源的路由網關,最多可設置8個 |
2.舉例(略)
4.6.5 telnet命令
1.功能說明
telnet命令通過telnet協議與遠程主機通信或者獲取遠程主機對應端口的信息。它與Windows下的telnet具有相同的功能。其格式如下。
telnet 主機名或者IP地址端口
2.舉例(略)
4.6.6 wget命令
1.功能說明
wget命令用來從網絡上下載某個軟件,這個命令對于能夠連接到互聯網的Linux系統作用非常大,可以直接從網絡下載自己需要的軟件。其格式如下。
wget [要下載軟件的網址]
2.舉例(略)
4.7 文本編輯工具vi
vi是Linux下標準的文本編輯程序,也是Linux系統命令行下最經常使用的文本文件可視化編輯器,類似于DOS命令edit。那么什么是可視化呢?其實就是讓用戶在編輯文本文件的時候能夠看到它們。這聽起來似乎很普通,但是在命令行的字符界面下,可視化編輯確實起了很大的作用。
vi是Linux下默認的編輯器,幾乎所有的Linux/UNIX系統都捆綁了vi。這表示只要你學會了vi這個編輯工具,就可以在任何Linux/UNIX系統上使用它,而且vi程序非常小,只有幾百千字節大小。因此,只要熟練了vi操作,你可以做任何想做的事情。
vi編輯程序有兩種工作模式,即命令模式和文本輸入模式。在命令模式下,輸入的字符被解釋為vi命令,就是這些命令組合形成了vi的強大功能,通過vi命令可以轉換到文本輸入模式;在文本輸入模式下,輸入的字符作為正在編輯的文件的正文內容來接受,如果按Esc鍵則切換到vi命令模式。
下面通過分類的方式,逐個介紹vi的一系列命令的含義和用法。
1)Linux命令行下用vi打開文件的命令選項,其詳細說明如表4.42所示。
表4.42 用vi打開文件的命令選項及說明
vi使用的選項 |
說 明 |
---|---|
vi filename |
打開或者新建一個文件,并將光標置于第一行的首部 |
vi –r filename |
恢復上次vi打開時崩潰的文件 |
vi –R filename |
把指定的文件以只讀方式放入編輯器中 |
vi + filename |
打開文件并將光標置于最后一行的首部 |
vi +n filename |
打開文件,并將光標置于第n行的首部 |
vi +/pattern filename |
打開文件,并將光標置于第一個與pattern匹配的位置 |
vi –c command filename |
在對文件進行編輯前,先執行指定的命令 |
2)vi命令模式下的命令選項,主要分為移動光標類命令、屏幕翻滾類命令、插入與刪除文本類命令、搜索與替換類命令以及保存與退出類命令。這些分別在下面依次說明。
- 移動光標類命令及其說明如表4.43所示。
表4.43 移動光標類命令及其說明
按的鍵或者輸入的字符 |
說 明 |
---|---|
h |
光標左移一個字符 |
l |
光標右移一個字符 |
Backspace鍵 |
光標左移一個字符 |
k或Ctrl+p |
光標上移一個字符 |
j或Ctrl+n |
光標下移一個字符 |
Enter鍵 |
光標下移一行 |
w或W |
光標右移一個字到字首 |
b或B |
光標左移一個字到字首 |
e或E |
光標右移一個字到字尾 |
nG |
光標移動到第n行首部 |
n+ |
光標下移n行 |
n- |
光標上移n行 |
n$ |
相對于當前光標所在行,光標再向后移動n行到行尾 |
H |
光標移至當前屏幕的頂行 |
M |
光標移至當前屏幕的中間行 |
L |
光標移至當前屏幕的最底行 |
0 |
將光標移至當前行首 |
$ |
將光標移至當前行尾 |
:$ |
將光標移動到文件最后一行的行首 |
屏幕翻滾類命令及其說明如表4.44所示。
表4.44 屏幕翻滾類命令及其說明
按的鍵或輸入的字符 |
說 明 |
---|---|
Ctrl+u |
相對于當前屏幕,向文件首翻半屏 |
Ctrl+d |
相對于當前屏幕,向文件尾翻半屏 |
Ctrl+b |
相對于當前屏幕,向文件首翻一屏 |
Ctrl+f |
相對于當前屏幕,向文件尾翻一屏 |
nz+Enter |
將文件的第n行滾至屏幕頂部,如果不指定n值,將當前行滾至屏幕頂部 |
插入與刪除文本類命令及其說明如表4.45所示。
表4.45 插入與刪除文本類命令及其說明
按的鍵或輸入的字符 |
說 明 |
---|---|
Esc |
返回命令行模式 |
i |
在光標前輸入文字 |
a |
在光標后輸入文字 |
o |
在當前行之下新開一行 |
O |
在當前行之上新開一行 |
r |
替換光標所在字符,輸入r命令后,在鍵盤上輸入需要替換的新字符即可完成替換 |
x |
刪除光標所在的字符 |
dd |
刪除光標所在的行。刪除后的內容自動保存在剪貼板 |
yy |
將光標所在的行復制到剪貼板,如果在“yy”前加上數字,可復制多行 |
p |
將剪貼板的內容復制到光標后 |
P |
將剪貼板的內容復制到光標前 |
yw |
將光標所在的單詞復制到剪貼板 |
搜索及替換類命令及其說明如表4.46所示。
表4.46 搜索及替換類命令及其說明
按的鍵或輸入的字符 |
說 明 |
---|---|
/abc |
在文件中向前查找字符串abc |
?abc |
在文件中向后查找字符串abc |
n |
在同一方向重復上次的搜索命令 |
N |
在相反方向重復上次的搜索命令 |
:s/a1/a2/g |
將當前光標所在行中的所有a1均用a2替換 |
:n1,n2s/a1/a2/g |
將文件第n1至n2行中所有a1均用a2替換 |
:g/a1/a2/g |
將文件中所有的a1均用a2替換 |
:set nu |
給文件的每行加上行號 |
保存與退出類命令及其說明如表4.47所示。
表4.47 保存與退出類命令及其說明
按的鍵或輸入的字符 |
說 明 |
---|---|
:wq |
保存并退出vi編輯器,“:wq!”表示不保存,強制退出 |
:q |
不保存就退出vi編輯器,“:q!”表示不保存,強制退出 |
:w |
保存但是不退出vi編輯器,“:w!”表示強制保存,“:w filename”表示將修改保存到“filename”中。相當于另存文件 |
x! |
保存文件,退出vi編輯器,更通用的一個vi命令 |
本文摘自 《循序漸進Linux》
沒看過癮就收入一本。購買鏈接: