在本篇中,我們將回顧一些系統(tǒng)管理員日常任務(wù)需要的技能,。
創(chuàng)建,、刪除、復(fù)制和移動(dòng)文件及目錄文件和目錄管理是每一個(gè)系統(tǒng)管理員都應(yīng)該掌握的必備技能,。它包括了從頭開(kāi)始的創(chuàng)建,、刪除文本文件(每個(gè)程序的核心配置)以及目錄(你用來(lái)組織文件和其它目錄),以及識(shí)別已有文件的類(lèi)型,。
touch 命令示例 你可以使用 file 命令示例 使用 rm 命令示例 對(duì)于目錄,,你可以使用 mkdir 命令示例 當(dāng)你想要去刪除目錄時(shí),在你使用
輸入輸出重定向以及管道命令行環(huán)境提供了兩個(gè)非常有用的功能:允許重定向命令的輸入和輸出為另一個(gè)文件,,以及發(fā)送命令的輸出到另一個(gè)命令,,這分別稱(chēng)為重定向和管道。 為了理解這兩個(gè)重要概念,,我們首先需要理解三個(gè)最重要的字符輸入輸出流類(lèi)型,,以 *nix 的話來(lái)說(shuō),它們實(shí)際上是特殊的文件,。
在下面的例子中,, 輸入和輸出命令實(shí)例 為了更容易識(shí)別這些特殊文件,,每個(gè)文件都被分配有一個(gè)文件描述符,,這是用于訪問(wèn)它們的抽象標(biāo)識(shí)。主要要理解的是,,這些文件就像其它的一樣,,可以被重定向。這就意味著你可以從一個(gè)文件或腳本中捕獲輸出,,并將它傳送到另一個(gè)文件,、命令或腳本中,。這樣你就可以在磁盤(pán)上存儲(chǔ)命令的輸出結(jié)果,用于稍后的分析,。 要重定向 stdin (fd 0),、 stdout (fd 1) 或 stderr (fd 2),可以使用如下操作符,。
與重定向相比,管道是通過(guò)在命令后和另外一個(gè)命令前之間添加一個(gè)豎杠 記得:
重定向和管道的使用實(shí)例例1:將一個(gè)命令的輸出到文件 有些時(shí)候,,你需要遍歷一個(gè)文件列表。要做到這樣,,你可以先將該列表保存到文件中,,然后再按行讀取該文件。雖然你可以直接遍歷ls的輸出,,不過(guò)這個(gè)例子是用來(lái)說(shuō)明重定向。
將一個(gè)命令的輸出重定向到文件 例2:重定向stdout和stderr到/dev/null 如果不想讓標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤展示在屏幕上,,我們可以把這兩個(gè)文件描述符重定向到
重定向stdout和stderr到/dev/null 例3:使用一個(gè)文件作為命令的輸入 cat 命令的經(jīng)典用法如下
您還可以使用正確的重定向操作符發(fā)送一個(gè)文件作為輸入,。
cat 命令實(shí)例 例4:發(fā)送一個(gè)命令的輸出作為另一個(gè)命令的輸入 如果你有一個(gè)較大的目錄或進(jìn)程列表,并且想快速定位,,你或許需要將列表通過(guò)管道傳送給grep,。 接下來(lái)我們會(huì)在下面的命令中使用管道,,第一個(gè)管道是查找所需的關(guān)鍵詞,第二個(gè)管道是除去產(chǎn)生的
發(fā)送一個(gè)命令的輸出作為另一個(gè)命令的輸入
歸檔,,壓縮,解包,,解壓文件如果你需要傳輸,、備份、或者通過(guò)郵件發(fā)送一組文件,,你可以使用一個(gè)存檔(或打包)工具,,如 tar,通常與gzip,,bzip2,,或 xz 等壓縮工具配合使用。 您選擇的壓縮工具每一個(gè)都有自己不同的壓縮速度和壓縮率,。這三種壓縮工具,,gzip是最古老和可以較小壓縮的工具,bzip2提供經(jīng)過(guò)改進(jìn)的壓縮,,以及xz是最新的而且壓縮最大,。通常情況下,使用這些壓縮工具壓縮的文件的擴(kuò)展名依次是.gz,、.bz2或.xz,。
例5:創(chuàng)建一個(gè)tar文件,然后使用三種壓縮工具壓縮 在決定使用這個(gè)還是那個(gè)工具之前,,您可能想比較每個(gè)工具的壓縮效率,。請(qǐng)注意壓縮小文件或幾個(gè)文件,結(jié)果可能不會(huì)有太大的差異,,但可能會(huì)給你看出它們的差異,。
tar 命令實(shí)例 例6:歸檔時(shí)同時(shí)保存原始權(quán)限和所有權(quán) 如果你正在從用戶(hù)的主目錄創(chuàng)建備份,你需要要存儲(chǔ)的個(gè)人文件與原始權(quán)限和所有權(quán),,而不是通過(guò)改變它們的用戶(hù)帳戶(hù)或守護(hù)進(jìn)程來(lái)執(zhí)行備份,。下面的命令可以在歸檔時(shí)保留文件屬性。
創(chuàng)建軟連接和硬鏈接在Linux中,,有2種類(lèi)型的鏈接文件:硬鏈接和軟(也稱(chēng)為符號(hào))鏈接,。因?yàn)橛叉溄游募皇乾F(xiàn)存文件的另一個(gè)名字,,使用相同的 inode 號(hào),它指向?qū)嶋H的數(shù)據(jù),;而符號(hào)鏈接只是指向的文件名,。 此外,硬鏈接不占用磁盤(pán)上的空間,,而符號(hào)鏈接則占用少量的空間來(lái)存儲(chǔ)的鏈接本身的文本,。硬鏈接的缺點(diǎn)就是要求它們必須在同一個(gè)文件系統(tǒng)內(nèi),因?yàn)?inode 在一個(gè)文件系統(tǒng)內(nèi)是唯一的,。而符號(hào)鏈接沒(méi)有這個(gè)限制,,它們通過(guò)文件名而不是 inode 指向其它文件或目錄,所以可以跨文件系統(tǒng),。 創(chuàng)建鏈接的基本語(yǔ)法看起來(lái)是相似的:
例7:創(chuàng)建硬鏈接和軟鏈接 沒(méi)有更好的方式來(lái)形象的說(shuō)明一個(gè)文件和一個(gè)指向它的硬鏈接或符號(hào)鏈接的關(guān)系,,而不是創(chuàng)建這些鏈接。在下面的截圖中你會(huì)看到文件和指向它的硬鏈接共享相同的inode,,都是使用了相同的466個(gè)字節(jié)的磁盤(pán),。 另一方面,在別的磁盤(pán)創(chuàng)建一個(gè)硬鏈接將占用5個(gè)字節(jié),,這并不是說(shuō)你將耗盡存儲(chǔ)容量,,而是這個(gè)例子足以說(shuō)明一個(gè)硬鏈接和軟鏈接之間的區(qū)別。 軟連接和硬鏈接之間的不同 在Linux系統(tǒng)上符號(hào)鏈接的典型用法是指向一個(gè)帶版本的文件,。假設(shè)有幾個(gè)程序需要訪問(wèn)文件fooX.Y,,但麻煩是版本經(jīng)常變化(像圖書(shū)館一樣)。每次版本更新時(shí)我們都需要更新指向 fooX.Y 的單一引用,,而更安全,、更快捷的方式是,我們可以讓程序?qū)ふ颐麨?foo 的符號(hào)鏈接,,它實(shí)際上指向 fooX.Y,。 這樣的話,當(dāng)你的X和Y發(fā)生變化后,,你只需更新符號(hào)鏈接 foo 到新的目標(biāo)文件,,而不用跟蹤每個(gè)對(duì)目標(biāo)文件的使用并更新。
總結(jié)在這篇文章中,,我們回顧了一些基本的文件和目錄管理技能,,這是每個(gè)系統(tǒng)管理員的工具集的一部分。請(qǐng)確保閱讀了本系列的其它部分,,并將這些主題與本教程所涵蓋的內(nèi)容相結(jié)合。 如果你有任何問(wèn)題或意見(jiàn),,請(qǐng)隨時(shí)告訴我們,。我們總是很高興從讀者那獲取反饋.
|
|