Linux 文件命令精通指南(一)(轉(zhuǎn)載)
雖然 GUI 桌面(如 KDE 和 GNOME)能夠幫助用戶利用 Linux 特性,而無(wú)需關(guān)于命令行接口的功能知識(shí),但還是經(jīng)常會(huì)需要更多的功能和靈活性。而且,基本熟悉這些命令對(duì)于在 shell 腳本中正確地使某些功能自動(dòng)化仍然是必需的。
這篇文章是關(guān)于 Linux 文件命令的一個(gè)“速成教程”,它是為那些剛接觸這個(gè)操作系統(tǒng)或者只是需要補(bǔ)充這方面知識(shí)的用戶提供的。它包含了對(duì)一些更有用的命令的一個(gè)簡(jiǎn)明的概述以及關(guān)于它們的最強(qiáng)大的應(yīng)用的指導(dǎo)。下面包含的信息 — 結(jié)合一些實(shí)驗(yàn) — 將使您能夠容易地掌握這些基本的命令。(注意:當(dāng)涉及到一個(gè)與 Oracle 集群文件系統(tǒng) (OCFS) 結(jié)合的內(nèi)核時(shí),這些命令中的某些命令的行為可能會(huì)稍微有所不同。在此情況下,Oracle 提供了一個(gè) OCFS 工具集,該工具集可以為文件命令應(yīng)用提供一個(gè)更好的選擇。)
注意,這里包含的所有示例都在 SUSE Linux 8.0 Professional 上進(jìn)行了測(cè)試。雖然沒(méi)有理由相信它們?cè)谄渌南到y(tǒng)上將不能工作,但如果出現(xiàn)問(wèn)題,您應(yīng)當(dāng)查看您的文檔,以了解可能的變化。
背景概念
在深入研究規(guī)范之前,讓我們回顧一些基礎(chǔ)知識(shí)。
文件和命令
在 Linux/UNIX 操作系統(tǒng)中,所有事物都被當(dāng)作文件來(lái)處理:硬件設(shè)備(包括鍵盤(pán)和終端)、目錄、命令本身,當(dāng)然還有文件。這個(gè)奇怪的慣例實(shí)際上是 Linux/UNIX 的能力和靈活性的基礎(chǔ)。
大多數(shù)(幾乎是全部)的命令形式如下:
command [option] [source file(s)] [target file]
獲取幫助
最有用的命令之一是那些提供幫助的命令(特別是對(duì)那些學(xué)習(xí) Linux 的人而言)。Linux 中的兩個(gè)重要的信息來(lái)源是聯(lián)機(jī)參考手冊(cè),或 man 頁(yè)面和 whatis 工具。您可以用 whatis 命令來(lái)訪問(wèn)一個(gè)不熟悉的命令的 man 頁(yè)面。
$ whatis echo
要了解關(guān)于這個(gè)命令的更多信息,可以使用:
$ man echo
如果您不知道某個(gè)特殊任務(wù)所需的命令,您可以用 man -k (也稱(chēng)為 apropos)和一個(gè)主題來(lái)生成可能的命令。例如:
$ man -k files
一個(gè)很有用但常常被忽視的命令可以提供關(guān)于使用 man 本身的信息:
$ man man
您可以用 SPACEBAR 來(lái)瀏覽任意的 man 頁(yè)面;UP ARROW 將向上翻滾文件。.要退出,則輸入 q,!,或 CTRL-Z。
用戶類(lèi)別
記得那句名言“所有動(dòng)物一例平等但有些動(dòng)物比其他動(dòng)物更加平等”嗎?在 Linux 世界中,根用戶掌管一切。
根用戶可以以另一個(gè)用戶名 su (源自 "superuser")登錄。要執(zhí)行諸如添加一個(gè)新用戶、打印機(jī)或文件系統(tǒng)之類(lèi)的任務(wù),必須作為根用戶登錄或者用 su 命令和根用戶密碼切換到超級(jí)用戶。系統(tǒng)文件(包括控制初始化過(guò)程的系統(tǒng)文件)歸根用戶所有。雖然可能允許普通用戶對(duì)它們進(jìn)行讀操作,但出于系統(tǒng)安全性的原因,編輯的權(quán)利將留給根用戶。
BASH shell
雖然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默認(rèn) shell。它結(jié)合了與它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。
BASH 內(nèi)置的命令 history 默認(rèn)記錄最后輸入的 500 條命令。可以通過(guò)在命令提示符下輸入 history 來(lái)查看它們。要檢索某個(gè)特定的命令,可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在歷史列表中輸入它的編號(hào),并在編號(hào)前面加上 "!",例如:
$ !49
您還可以通過(guò)一條命令在歷史列表中離位置最靠前的項(xiàng)目的距離來(lái)執(zhí)行該命令:如果在歷史列表中有 53 個(gè)事件,$ !-3 將執(zhí)行事件號(hào) 51。
像 UNIX/Linux 世界的其它 shell 一樣,BASH 使用了特殊的環(huán)境變量來(lái)方便系統(tǒng)管理。例如:
HOME,用戶主目錄
PATH,Linux 用來(lái)搜索您輸入的命令的可執(zhí)行鏡像的搜索路徑
HISTSIZE,系統(tǒng)保存的歷史事件的數(shù)量
除了這些保留的關(guān)鍵字之外,您還可以定義您自己的環(huán)境變量。例如,Oracle 使用 ORACLE_HOME (還有其它一些變量),要使 Oracle 安裝成功完成,必須在您的環(huán)境中設(shè)置這些變量。
可以在提示符下臨時(shí)設(shè)置變量:
$HISTSIZE=100
或者,在 /etc/profile (需要根用戶權(quán)限)中進(jìn)行系統(tǒng)范圍的永久設(shè)置,或在 .profile 中進(jìn)行局部永久設(shè)置。
可以通過(guò) echo 命令,并用一個(gè) $ 符號(hào)來(lái)訪問(wèn)一個(gè)環(huán)境變量的值,進(jìn)而查看該值。
$ echo $HOME
/home/bluher
可以用 env 命令來(lái)查看當(dāng)前所有的環(huán)境變量。
正則表達(dá)式和通配符
許多 Linux 命令使用通配符 * 和 ? 來(lái)匹配任意數(shù)量的字符或分別匹配任意的單個(gè)字符;正則模式匹配表達(dá)式利用一個(gè)句點(diǎn) (.) 來(lái)匹配除“換行符”之外的任意單個(gè)字符。這兩種情況下都使用方括號(hào) ([ ]) 來(lái)匹配除“*”號(hào)之外的字符組。不過(guò),* 號(hào)在各種情況下有類(lèi)似但不同的意義:雖然它在 shell 中將匹配一個(gè)或更多的字符,但在正則表達(dá)式中,它匹配上述字符的零個(gè)或更多的實(shí)例。一些命令(如 egrep 和 awk)使用了一組更廣泛的特殊字符來(lái)進(jìn)行模式匹配。
這篇文章是關(guān)于 Linux 文件命令的一個(gè)“速成教程”,它是為那些剛接觸這個(gè)操作系統(tǒng)或者只是需要補(bǔ)充這方面知識(shí)的用戶提供的。它包含了對(duì)一些更有用的命令的一個(gè)簡(jiǎn)明的概述以及關(guān)于它們的最強(qiáng)大的應(yīng)用的指導(dǎo)。下面包含的信息 — 結(jié)合一些實(shí)驗(yàn) — 將使您能夠容易地掌握這些基本的命令。(注意:當(dāng)涉及到一個(gè)與 Oracle 集群文件系統(tǒng) (OCFS) 結(jié)合的內(nèi)核時(shí),這些命令中的某些命令的行為可能會(huì)稍微有所不同。在此情況下,Oracle 提供了一個(gè) OCFS 工具集,該工具集可以為文件命令應(yīng)用提供一個(gè)更好的選擇。)
注意,這里包含的所有示例都在 SUSE Linux 8.0 Professional 上進(jìn)行了測(cè)試。雖然沒(méi)有理由相信它們?cè)谄渌南到y(tǒng)上將不能工作,但如果出現(xiàn)問(wèn)題,您應(yīng)當(dāng)查看您的文檔,以了解可能的變化。
背景概念
在深入研究規(guī)范之前,讓我們回顧一些基礎(chǔ)知識(shí)。
文件和命令
在 Linux/UNIX 操作系統(tǒng)中,所有事物都被當(dāng)作文件來(lái)處理:硬件設(shè)備(包括鍵盤(pán)和終端)、目錄、命令本身,當(dāng)然還有文件。這個(gè)奇怪的慣例實(shí)際上是 Linux/UNIX 的能力和靈活性的基礎(chǔ)。
大多數(shù)(幾乎是全部)的命令形式如下:
command [option] [source file(s)] [target file]
獲取幫助
最有用的命令之一是那些提供幫助的命令(特別是對(duì)那些學(xué)習(xí) Linux 的人而言)。Linux 中的兩個(gè)重要的信息來(lái)源是聯(lián)機(jī)參考手冊(cè),或 man 頁(yè)面和 whatis 工具。您可以用 whatis 命令來(lái)訪問(wèn)一個(gè)不熟悉的命令的 man 頁(yè)面。
$ whatis echo
要了解關(guān)于這個(gè)命令的更多信息,可以使用:
$ man echo
如果您不知道某個(gè)特殊任務(wù)所需的命令,您可以用 man -k (也稱(chēng)為 apropos)和一個(gè)主題來(lái)生成可能的命令。例如:
$ man -k files
一個(gè)很有用但常常被忽視的命令可以提供關(guān)于使用 man 本身的信息:
$ man man
您可以用 SPACEBAR 來(lái)瀏覽任意的 man 頁(yè)面;UP ARROW 將向上翻滾文件。.要退出,則輸入 q,!,或 CTRL-Z。
用戶類(lèi)別
記得那句名言“所有動(dòng)物一例平等但有些動(dòng)物比其他動(dòng)物更加平等”嗎?在 Linux 世界中,根用戶掌管一切。
根用戶可以以另一個(gè)用戶名 su (源自 "superuser")登錄。要執(zhí)行諸如添加一個(gè)新用戶、打印機(jī)或文件系統(tǒng)之類(lèi)的任務(wù),必須作為根用戶登錄或者用 su 命令和根用戶密碼切換到超級(jí)用戶。系統(tǒng)文件(包括控制初始化過(guò)程的系統(tǒng)文件)歸根用戶所有。雖然可能允許普通用戶對(duì)它們進(jìn)行讀操作,但出于系統(tǒng)安全性的原因,編輯的權(quán)利將留給根用戶。
BASH shell
雖然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默認(rèn) shell。它結(jié)合了與它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。
BASH 內(nèi)置的命令 history 默認(rèn)記錄最后輸入的 500 條命令。可以通過(guò)在命令提示符下輸入 history 來(lái)查看它們。要檢索某個(gè)特定的命令,可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在歷史列表中輸入它的編號(hào),并在編號(hào)前面加上 "!",例如:
$ !49
您還可以通過(guò)一條命令在歷史列表中離位置最靠前的項(xiàng)目的距離來(lái)執(zhí)行該命令:如果在歷史列表中有 53 個(gè)事件,$ !-3 將執(zhí)行事件號(hào) 51。
像 UNIX/Linux 世界的其它 shell 一樣,BASH 使用了特殊的環(huán)境變量來(lái)方便系統(tǒng)管理。例如:
HOME,用戶主目錄
PATH,Linux 用來(lái)搜索您輸入的命令的可執(zhí)行鏡像的搜索路徑
HISTSIZE,系統(tǒng)保存的歷史事件的數(shù)量
除了這些保留的關(guān)鍵字之外,您還可以定義您自己的環(huán)境變量。例如,Oracle 使用 ORACLE_HOME (還有其它一些變量),要使 Oracle 安裝成功完成,必須在您的環(huán)境中設(shè)置這些變量。
可以在提示符下臨時(shí)設(shè)置變量:
$HISTSIZE=100
或者,在 /etc/profile (需要根用戶權(quán)限)中進(jìn)行系統(tǒng)范圍的永久設(shè)置,或在 .profile 中進(jìn)行局部永久設(shè)置。
可以通過(guò) echo 命令,并用一個(gè) $ 符號(hào)來(lái)訪問(wèn)一個(gè)環(huán)境變量的值,進(jìn)而查看該值。
$ echo $HOME
/home/bluher
可以用 env 命令來(lái)查看當(dāng)前所有的環(huán)境變量。
正則表達(dá)式和通配符
許多 Linux 命令使用通配符 * 和 ? 來(lái)匹配任意數(shù)量的字符或分別匹配任意的單個(gè)字符;正則模式匹配表達(dá)式利用一個(gè)句點(diǎn) (.) 來(lái)匹配除“換行符”之外的任意單個(gè)字符。這兩種情況下都使用方括號(hào) ([ ]) 來(lái)匹配除“*”號(hào)之外的字符組。不過(guò),* 號(hào)在各種情況下有類(lèi)似但不同的意義:雖然它在 shell 中將匹配一個(gè)或更多的字符,但在正則表達(dá)式中,它匹配上述字符的零個(gè)或更多的實(shí)例。一些命令(如 egrep 和 awk)使用了一組更廣泛的特殊字符來(lái)進(jìn)行模式匹配。
posted on 2007-01-18 15:05 liaojiyong 閱讀(579) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Linux