成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

UNIX 新手指南,第 1 部分: 文件維護工具

瀏覽:7日期:2024-06-13 15:57:36

開始之前

了解本教程中包含的內(nèi)容以及如何最好地利用本教程。

關(guān)于本系列

這個由四部分組成的文章系列將從用戶的角度出發(fā),介紹 Unix® 的基本知識。對于很久沒有使用類 UNIX 操作系統(tǒng)的用戶來說,這個初始的教程是個很好的溫習(xí)。對于具有 Windows® 使用經(jīng)驗的新的 UNIX 用戶來說,它也很有價值,因為其中引用了 Windows,并將兩者進(jìn)行了比較。本系列中后續(xù)的教程將詳細(xì)介紹一些特定的應(yīng)用程序(例如,vi),并討論 Shell 的訣竅與技巧。

關(guān)于本教程

系統(tǒng)管理員可以在命令行中使用各種程序來維護 UNIX 系統(tǒng)中的文件。除了這里演示的基本程序外,還有更多的程序可供使用,但這里介紹的程序都是 UNIX 系統(tǒng)中的基本組成部分。您可以使用 mv 命令對文件和目錄進(jìn)行移動和重命名。cp 命令可以用來復(fù)制一個或多個文件或目錄。有一個稱為 tar 的應(yīng)用程序,它可以快速地將文件聚集在一起形成一個存檔。本教程還將討論如何遍歷文件系統(tǒng)、處理文件權(quán)限和簡單的輸入/輸出,以便為新的 UNIX 用戶順利地使用系統(tǒng)而打下基礎(chǔ)。

目標(biāo)

本教程的目標(biāo)是讓新的 UNIX 用戶能夠熟練地使用命令行遍歷系統(tǒng)和處理文件。它重點關(guān)注于用來操作文件的一些常用命令行實用程序,但同時也討論了關(guān)于文件權(quán)限和輸入/輸出的內(nèi)容,以便向您完整地介紹日常工作中需要使用的命令。

先決條件

要學(xué)習(xí)本教程,您需要對計算機和文件有基本的認(rèn)識,但并不一定需要具備使用類 UNIX 操作系統(tǒng)的經(jīng)驗。您應(yīng)該知道什么是目錄(文件夾)和文件,并能夠使用您的帳戶登錄到類 UNIX 操作系統(tǒng)中。如果您對 Dos 或 Microsoft® Windows 命令行比較熟悉,那么您將發(fā)現(xiàn)其中一些相似之處,但對于從未使用過這些命令行的用戶來說,也可以順利地學(xué)習(xí)本教程。

系統(tǒng)要求

在任何運行類 Unix 操作系統(tǒng)的計算機上擁有您自己的帳戶,這是完成本教程所需的要求。類 UNIX 操作系統(tǒng)包括 IBM AIX® 操作系統(tǒng)、Linux®、Berkeley Software Distribution (BSD) 和 Mac OS® X(通過終端來訪問命令行),以及其他一些系統(tǒng)。

開始學(xué)習(xí)之前

在開始學(xué)習(xí)之前,有一點需要注意:目前可以獲得許多不同的類 UNIX 分發(fā)版,從商業(yè)分發(fā)版(如 AIX)到免費的分發(fā)版(如 BSD 和 Linux)。本教程重點關(guān)注于所有分發(fā)版中都提供的一些命令和命令行選項,如果您發(fā)現(xiàn)與自己的分發(fā)版相比存在差異,那么請查看您的 man 頁面(稍后將會進(jìn)行描述)。

請根據(jù)您的選擇,登錄到相應(yīng)的類 UNIX 操作系統(tǒng),以便開始學(xué)習(xí)。在登錄之后,您應(yīng)該自動地開始于您的用戶 home 目錄中。本教程中的示例使用 tuser(測試用戶)用戶名。

man

在開始使用特定的命令之前,需要了解關(guān)于 man 的內(nèi)容。man 表示手冊 (manual),對于那些自信能夠做到自給自足的 UNIX 用戶來說,它是非常關(guān)鍵的工具。輸入 man application-name 可以查看關(guān)于需要了解的內(nèi)容的解釋。在本教程的每個頁面中,我們鼓勵您在執(zhí)行其中指令的同時,查看相應(yīng)的 man 頁面。

嘗試輸入下面的命令(請注意,$ 在本教程中表示命令提示符,在本教程的示例中,您應(yīng)該在美元符號后面輸入您所看到的內(nèi)容):$ man ls

目錄

您需要了解的第一件事情是,如何遍歷和查看文件系統(tǒng)。在 UNIX 中,目錄用來以一種層次結(jié)構(gòu)對文件進(jìn)行組織。您可以在命令行中使用一系列的命令和列表來查看和遍歷 UNIX 文件系統(tǒng),而不要單擊目錄進(jìn)入其中并且用圖標(biāo)來表示每個文件。

ls

如果您是第一次使用類 UNIX 操作系統(tǒng),但是曾經(jīng)使用過 Dos 或 Windows 命令行,那么 ls 基本上相當(dāng)于 dir。它是列出目錄 (List Directory) 的縮寫。ls 可以與各種命令行選項一同使用,以便獲得詳細(xì)的列表、顯示隱藏的文件、遞歸列出子目錄,等等。請輸入下面的示例:$ ls$ ls -l$ ls -a$ ls -R

如果您正在命令行中考慮下一步應(yīng)該進(jìn)行什么操作,那么可以執(zhí)行 ls,它可以幫助您了解現(xiàn)在所處的位置以及正在進(jìn)行的操作。可以把它看作圖形用戶界面中的屏幕刷新操作,用來讓您了解系統(tǒng)的當(dāng)前狀態(tài)。

cd

要遍歷文件系統(tǒng),可以使用 cd 來更改目錄。輸入 cd,然后輸入您希望進(jìn)入的目錄的名稱。如果在開頭使用了 /,那么這個目錄的名稱是絕對 目錄路徑:它從文件系統(tǒng)的根開始。如果在開頭沒有使用 /,那么該目錄是相對 路徑:從您的當(dāng)前工作 目錄開始。例如,如果您位于自己的 home 目錄 (/home/tuser),并且希望移動到某個子目錄,可以在 cd 的后面輸入希望進(jìn)入的目錄名稱。例如,如果有一個 Documents 目錄,那么您可以輸入下面的命令:$ cd Documents

因為您開始于 /home/tuser/,所以該命令將使您進(jìn)入 /home/tuser/Documents/。

與此相反,您可以使用絕對路徑名來指定一個位置。例如,如下所示,您可以移動到 /tmp,然后返回到您的 home 目錄:$ cd /tmp$ cd /home/tuser

特殊目錄名稱

在 Unix 中,使用一些特殊的目錄名稱可以使得對文件系統(tǒng)的遍歷變得簡單。三個最重要的特殊名稱分別指向當(dāng)前目錄、當(dāng)前目錄的父目錄和用戶的 home 目錄。當(dāng)前目錄可以由點號指定。例如,如果您輸入 $ cd .,那么您依然位于當(dāng)前目錄中,即 /home/tuser/。當(dāng)您運行當(dāng)前工作目錄中的可執(zhí)行文件時,該字符變得特別重要。在缺省情況下,許多 UNIX Shell 會在應(yīng)用程序目錄中搜索應(yīng)用程序,但不會搜索當(dāng)前工作目錄。通常可以在文件名前面使用 ./,以顯式地引用當(dāng)前工作目錄中的文件和應(yīng)用程序。父目錄由兩個點號來引用。要遍歷到您的當(dāng)前工作目錄的父目錄,可以輸入下面的命令:$ cd ..

如果您以前位于 /home/tuser,那么現(xiàn)在就在 /home 中。為了演示第三個特殊目錄名稱,可以使用快捷方法返回您的 home 目錄(波浪符號)。可以輸入下面的命令:$ cd ~

pwd

要查看當(dāng)前目錄,您可以使用 pwd,它表示打印工作目錄 (Print Working Directory)。它可以告訴您現(xiàn)在位于文件系統(tǒng)中的何處,這將幫助您在指定相對路徑名稱時確定應(yīng)該使用什么樣的名稱。請嘗試使用這三種特殊目錄名稱、絕對路徑和相對路徑,以遍歷您的文件系統(tǒng)。在每一步驟中,可以使用 pwd 查看當(dāng)前位置。

查看當(dāng)前目錄(如果您執(zhí)行了前面部分中的操作步驟,那么現(xiàn)在應(yīng)該位于您的 home 目錄):$ pwd

mkdir、rmdir

mkdir 和 rmdir 分別用來創(chuàng)建和刪除目錄。rmdir 僅當(dāng)該目錄為空有效(它并不刪除文件)。

嘗試使用下面的命令:$ mkdir TUTORIAL$ cd TUTORIAL$ pwd$ ls

您現(xiàn)在位于剛剛創(chuàng)建的 TUTORIAL 目錄,而且該目錄為空。

您還可以使用 ~ 波浪號字符到達(dá)該目錄。要進(jìn)入 /home/tuser/TUTORIAL,可以輸入:$ cd ~/TUTORIAL$ pwd

目錄布局

您已經(jīng)了解了如何在目錄中移動并獲取清單,現(xiàn)在可以開始研究典型的 Unix 分發(fā)版中的目錄布局了。您可以通過幾種不同的方式來組織 UNIX 文件系統(tǒng)。本教程討論了一些在大多數(shù)類 UNIX 分發(fā)版中常見的根級目錄。當(dāng)然還有其他一些重要的根級目錄,但下面這些是最常見的:/home (or /users)/etc/bin/sbin/usr/car/tmp

/home 用來存放用戶目錄。例如,tuser 用戶位于 /home/tuser。

/etc 是用來存儲系統(tǒng)范圍設(shè)置的目錄,包括啟動腳本和網(wǎng)絡(luò)配置文件。該目錄中的大多數(shù)文件都需要使用 root 用戶進(jìn)行編輯。

/bin 和 /sbin 是用來存儲系統(tǒng)可執(zhí)行文件(比如在本教程中學(xué)習(xí)的命令)的目錄。/sbin 用于存放系統(tǒng)命令,如 shutdown,而 /bin 用于存放用戶命令。

應(yīng)用程序通常安裝在 /usr 中。/usr/local/ 中的子目錄通常用來包含一些安裝的應(yīng)用程序,而這些應(yīng)用程序并不屬于基本分發(fā)版中的一部分。

/var 是用來存放類似日志文件這樣的內(nèi)容的目錄,需要不斷地對其進(jìn)行更新和存儲。

臨時文件存儲在 /tmp 中。系統(tǒng)中所有的用戶都可以對該目錄進(jìn)行寫入,并且在一些系統(tǒng)中,會周期性地刪除其中的舊文件。

文件

既然您已經(jīng)知道了如何使用命令行在文件系統(tǒng)中移動,那么現(xiàn)在可以開始對文件進(jìn)行處理了。本部分內(nèi)容將介紹如何創(chuàng)建示例文件、復(fù)制文件、刪除文件,以及查看和更改基本的文件權(quán)限。在像 Unix 這樣的多用戶操作系統(tǒng)中,必須了解所有權(quán)和權(quán)限的概念。

touch

首先,創(chuàng)建一個空文件,您將在本教程中使用到該文件。touch 命令可以用來創(chuàng)建一個空文件(對文件使用 touch 命令,通常用來更新文件的修改日期和訪問日期)。

返回到用戶 home 目錄中的 TUTORIAL 目錄,并輸入下面的命令創(chuàng)建一個文件:$ cd ~/TUTORIAL$ touch example.txt

cp

cp 命令用來復(fù)制文件。輸入 cp 加上需要復(fù)制的文件的名稱,再加上需要將該文件復(fù)制到的目錄(您還可以使用相應(yīng)的選項來指定新文件的名稱)。例如,嘗試將 example.txt 文件復(fù)制到 /tmp/:$ cp example.txt /tmp/$ ls /tmp/

您應(yīng)該可以在 /tmp/ 中看到 example.txt。現(xiàn)在,將 /tmp/ 中的文件復(fù)制回您的當(dāng)前目錄,但是為它取一個新的名稱:$ cp /tmp/example.txt ./example2.txt$ ls

請注意,這里使用一個點號來指定需要將這個新文件放到您的當(dāng)前目錄。在本示例中,不需要包括 ./(因為復(fù)制操作的缺省路徑就是您的當(dāng)前工作目錄),但是它可以清楚地說明您要完成的任務(wù)。后面的 ls 命令則顯示了在當(dāng)前工作目錄中有兩個示例文件。

mv

移動(move)文件可以使用 mv 命令來完成。對于移動和復(fù)制操作來說,大多數(shù)語法和命令行選項都是相同的。如果您希望將新文件 example2.txt 移出當(dāng)前目錄并放入到 /tmp/,那么可以輸入下面的命令:$ mv example2.txt /tmp/.

請注意,這里再次使用了點號顯式地說明您正在進(jìn)行的操作。

rm

要對系統(tǒng)進(jìn)行清理,可以刪除在 /tmp/ 中創(chuàng)建的文件。rm 命令用來從文件系統(tǒng)中刪除文件。這與將文件移動到回收站或垃圾箱不同,該命令刪除了文件指針,所以在使用 rm 命令時應(yīng)當(dāng)格外小心。輸入以下命令:$ rm /tmp/example.txt$ rm /tmp/example2.txt$ ls /tmp/

/tmp/ 中的那兩個示例文件都應(yīng)該消失了。

根據(jù)您所使用的類 Unix 操作系統(tǒng)的不同,您還可以使用其他的刪除命令,如 srm 或 can。嘗試輸入 man srm 和 man can 以查看是否存在這些命令。srm 用作安全版本的 rm,它對刪除的文件使用隨機數(shù)據(jù)進(jìn)行覆蓋,以防止對其進(jìn)行恢復(fù)。can 在一些方法上與 srm 相反,can 可以保留文件,而將其移動到一個特殊的垃圾箱目錄,類似于 Windows 的回收站。

所有權(quán)和權(quán)限

在類 UNIX 操作系統(tǒng)中,文件所有權(quán)和權(quán)限是非常重要的概念。UNIX 從一開始就是多用戶的操作系統(tǒng)。盡管現(xiàn)在新版本的 Windows 也可以用作多用戶系統(tǒng),但如果追溯到早期的個人計算機和 Dos 時期,Windows 的祖先是單用戶的。即使在今天,有些 Windows 用戶也很少考慮多用戶系統(tǒng)中關(guān)于多個帳戶和文件權(quán)限的問題。對于 UNIX 用戶來說,理解文件所有權(quán)和權(quán)限是至關(guān)重要的。

chown、chgrp

可以使用 ls -l 查看 Unix 中的文件所有權(quán),可以使用 chown 和 chgrp 對其進(jìn)行更改。輸入下面的命令:$ ls -l

使用 -l 指定需要查看長格式的文件清單。長格式包括關(guān)于權(quán)限、所有權(quán)、修改日期和文件大小等信息。您應(yīng)該看到與下面所示類似的內(nèi)容:tsystem:~/TUTORIAL tuser$ ls -ltotal 0-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt

當(dāng)詳細(xì)顯示目錄清單時,您可以分別在第 3 和第 4 列中看到文件的用戶所有權(quán)和組所有權(quán)。該文件由 tuser 用戶和 admin 組所有。現(xiàn)在,暫時不管這個文件,輸入下面的命令可以得到更多的信息:$ man chown$ man chgrp

該命令的基本語法是使用用戶名或組名作為第 1 個輸入,后面是需要進(jìn)行操作的文件或文件列表。例如:$ chown tuser example.txt$ chgrp admin example.txt

chmod

在 UNIX 中,使用與每個文件相關(guān)聯(lián)的一組 9 個標(biāo)志來處理基本文件權(quán)限。這些標(biāo)志分別對應(yīng)于不同用戶類別(用戶、組和其他用戶)和三種文件操作(讀取、寫入和執(zhí)行)。輸入下面的命令:$ ls -l

您應(yīng)該看到與下面所示類似的內(nèi)容:-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt

當(dāng)您閱讀目錄的長格式清單時,其中的第 1 列顯示了文件權(quán)限。請注意,該列中有 10 個字符(而不是 9 個)。第 1 個字符表示您正在處理的文件的類型。例如,短橫線 -,告訴您這是一個常規(guī)文件。d 表示目錄,而不是普通文件。現(xiàn)在,我們重點關(guān)注于其他的 9 個字符,每個字符可以為下列幾種情況其中之一:-、r、w 或 x。如果關(guān)閉了某個文件所有的權(quán)限,那么它應(yīng)該與下面所示類似:---------- 1 tuser admin 0 Aug 13 15:35 example.txt

如果打開了某個文件所有的權(quán)限,那么它應(yīng)該與下面所示類似:-rwxrwxrwx 1 tuser admin 0 Aug 13 15:35 example.txt

您可以看到 3 組 rwx。如前所述,有 3 種不同的用戶類別(用戶、組和其他用戶)。每一組 rwx 對應(yīng)于其中的一個類別:

第 1 組 rwx 表示 user 的權(quán)限。換句話說,這可以告訴您,該文件的擁有者可以對其進(jìn)行哪些操作。

第 2 組對應(yīng)于 group。這可以告訴您,組成員可以對該文件進(jìn)行哪些操作。

第 3 組對應(yīng)于 other。這可以告訴您,系統(tǒng)中所有的用戶可以對該文件進(jìn)行哪些操作,無論該文件屬于誰。

讓我們更仔細(xì)地研究一下 example.txt 文件當(dāng)前的權(quán)限:-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt

第 1 組三個標(biāo)志表示該文件的所有者可以對其進(jìn)行讀取、寫入操作,但是不能執(zhí)行它(其中有 r 和 w,但沒有 x)。從第 2 組三個標(biāo)志中您可以看出,擁有該文件的組可以對其進(jìn)行讀取,但不能寫入或執(zhí)行(其中有 r,但沒有 w 或 x)。第 3 組三個標(biāo)志顯示了,所有其他的用戶可以讀取該文件,但不能對其進(jìn)行寫入或執(zhí)行操作(其中有 r,但沒有 w 或 x)。這里給出了一個很好的示例,說明了詳細(xì)的 man 頁面非常重要。您可以停下來,并輸入下面的命令:$ man chmod

現(xiàn)在,可以考慮一下這樣的可能性,即該文件中保存了私有的信息,而您不希望任何其他的用戶進(jìn)行讀取。您可能希望刪除其他組和所有其他用戶的讀取權(quán)限。可以使用 chmod 更改這些權(quán)限。與 Unix 中的許多操作一樣,使用 chmod 的方法很多,本部分內(nèi)容重點關(guān)注其中之一。使用三個字母(u、g 和 o)來表示三種類別(用戶、組和其他用戶)。使用三個字母(r、w 和 x)來表示三種權(quán)限(讀取、寫入和執(zhí)行)。要更改這些權(quán)限,可以使用 chmod,加上需要更改的類別的字母,再加上一個加號或減號(分別表示打開或關(guān)閉),然后使用相應(yīng)的字母給出需要更改的權(quán)限。最后,加上需要進(jìn)行更改的文件的名稱。最好通過一個示例來進(jìn)行說明:$ chmod og-r example.txt$ ls -l

您應(yīng)該看到下面的結(jié)果:-rw------- 1 tuser admin 0 Aug 13 15:35 example.txt

在這個示例中,您指定了其他用戶和組(o 和 g),并使用減號表示希望對這些類別關(guān)閉某些權(quán)限。然后,使用 (r) 表示需要關(guān)閉讀取訪問權(quán)限。現(xiàn)在,文件的所有者 tuser 仍然可以對該文件進(jìn)行讀取和寫入操作,但系統(tǒng)中所有其他的用戶(除了超級用戶之外)都不能訪問該文件。注意:超級用戶 (root) 可以重寫所有的文件權(quán)限。

處理多個文件

現(xiàn)在,您已經(jīng)了解了如何遍歷目錄和處理單個文件。本教程中的下一個內(nèi)容是,了解如何處理一組文件。幾乎所有的 Unix 命令除了可以處理單個文件外,還可以處理文件列表。通過顯式地輸入需要使用的每個文件的名稱,或使用通配符表示需要使用的、具有共同名稱特征的所有文件,您可以輸入文件的列表。

通配符

對于處理多個文件,最常用的方法就是使用 * 通配符。通過使用 * 來表示任何字符或任何數(shù)量的字符,您可以選擇文件列表。為了創(chuàng)建更多的文件以進(jìn)行演示,可以輸入下列命令:$ cp example.txt example2.txt$ cp example.txt script.sh

現(xiàn)在,輸入下面的命令:$ ls *.txt

您應(yīng)該僅看到擴展名為 .txt 的文件。接下來,輸入:$ ls exa*

這次,您應(yīng)該看到兩個示例文件,但不應(yīng)該看到 script.sh。

任何能夠處理多個文件的命令行應(yīng)用程序都可以使用通配符。

遞歸

許多用來處理文件的命令行應(yīng)用程序都具有一個 -R 選項。當(dāng)使用了 -R 時,該應(yīng)用程序?qū)⑦f歸地進(jìn)入一個目錄及其所有的子目錄,并且針對其中的每個文件執(zhí)行所需的命令。例如,您可以返回您的 home 目錄,然后復(fù)制整個 TUTORIAL 目錄:$ cd ~$ cp -R TUTORIAL /tmp/.$ ls /tmp/TUTORIAL/

現(xiàn)在,可以刪除該目錄,以便對系統(tǒng)進(jìn)行清理:$ rm -R /tmp/TUTORIAL/$ ls /tmp/

這就刪除了整個目錄,包括其中包含的所有文件。請注意:您可能會比原計劃刪除更多的數(shù)據(jù),尤其是當(dāng)通配符和 -R 一同使用時。

存檔和壓縮

許多日常的文件操作都可以使用單個文件、目錄和通配符來完成,但對于那些對備份、將文件集傳輸給其他用戶、或僅為了節(jié)省空間感興趣的用戶來說,了解如何使用存檔和壓縮是非常重要的。Unix 操作系統(tǒng)中有許多用于存檔和壓縮數(shù)據(jù)的實用程序。

tar

要將多個文件聚集成單個文件(存檔),最常用的方法是使用 tar 命令。tar 是磁盤存檔程序 (Tape Archiver) 的縮寫,這是因為它開始時使用備份磁帶進(jìn)行存檔,但現(xiàn)在通常用來執(zhí)行磁盤到磁盤的操作。嘗試對 TUTORIAL 目錄中的內(nèi)容進(jìn)行存檔:$ cd ~$ tar cvf /tmp/tutorial.tar TUTORIAL$ ls /tmp/

現(xiàn)在,您應(yīng)該可以在 /tmp/ 中看到一個名為 tutorial.tar 的文件。該文件包含了目錄 TUTORIAL 以及這個目錄中所包含的文件。這個示例中使用了命令行選項 cvf:

c 表示創(chuàng)建 (create),它用來告訴 tar 創(chuàng)建一個新的存檔。

v 表示詳細(xì) (verbose),它用來告訴 tar 顯示加入到存檔的每個文件的清單。

f 表示文件 (file),它用來告訴 tar 將存檔寫入到文件而不是設(shè)備。

然后,進(jìn)入 /tmp 并提取該存檔的內(nèi)容:$ cd /tmp/$ ls$ tar cvf tutorial$ ls

請注意,第 1 個 ls 命令顯示了 tutorial.tar,但它并沒有顯示 TUTORIAL 目錄。第 2 個 ls 命令(在 tar 命令之后),它顯示出在 /tmp/ 中有一個 TUTORIAL 目錄。刪除 /tmp/TUTORIAL 目錄,以便對系統(tǒng)進(jìn)行清理:$ rm -R /tmp/TUTORIAL

標(biāo)簽: Unix系統(tǒng)
相關(guān)文章: