單元三實驗
文件和目錄操作
估計用時:1小時30分
目標:熟悉文件、目錄操作命令的數、語法和幾個文件的使用。實驗將這些命令組合成一個一般的用戶任務。
實驗前准備:准備一個安裝好的Red Hat Linux 系統,並准備一個叫student 的非特權帳號,其密碼為student。檢查一下指南以確認這個帳號是否已經存在在系統中。如果你的student 帳號還未建立,則按如下次序操作:
1、以root 用戶登錄
2、輸入 # useradd student
3、輸入 # passwd student
Changing passWord for user student
New UNIX password: {在這裡輸入student}
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password {重新輸入student}
passwd: all authentication tokens updated sUCcessfully
實驗1:目錄和文件管理
假設:
你在你的home 目錄中收集了一大堆文件,而你覺得現在該是將他們整理一下的時候了。你打算建立幾個新的子目錄,並將拷貝或者移動它們以適合你的安排。除此之外,還有一些文件你根本用不著,你想刪除它們。
任務:
1、在tty1 上以student登錄。密碼為student。
2、剛剛登錄後你應該在你的home 目錄中。用"print working Directory"命令校驗一下。
$ pwd
/home /student
3、用一下命令檢查一下你在home 目錄中有否文件:
$ ls
$ ls -a
$ ls -al
為什麼第一個命令和第二個命令返回不同的文件個數?
從第三個命令的輸出中你看出哪個文件在你當前的home 目錄中最大?
在home 目錄中有子目錄嗎?
4、你將使用touch 命令來建立一些這個實驗所需要的文件。關於這個命令的具體問題將在今後的章節中講述。現在,你只需簡單的將下面的命令全盤打出(包括花括號{},還有幾個下劃線 _)。
$ touch {report,memo,graph}_{sep,oct,nov,dec}_{a,b,c}{1,2,3}
5、使用ls 命令檢驗上一個命令的效果。你應該發現在你的home 目錄中有108個(哇……)新建立的空文件。這些文件便是你後面實驗所需的數據文件。如果沒有這些文件,後面的實驗將無法繼續。
6、為了管理你的文件你必須建立一些新子目錄。使用mkdir 命令建立你的home目錄的直接子目錄:
$ mkdir "A Reports"
$ mkdir september october november december
再次使用ls 命令檢驗你的工作。
7、在你新建的子目錄中再建立一些其他的目錄,使用如下命令:
輸入下面任一一行:
$ cd A\ Reports/
或者
$ cd "A Reports"/
改變了當前目錄。然後:
$ mkdir 1 2 3
使用ls 命令校驗你已經在"A Reports"目錄中有了3個子目錄,分別叫做1, 2, 3。
8、將所有含"B"的文件移出你的home 目錄並以月份分組。做類似這種復雜的通配字符的操作時,通常先將其“預覽”一遍會是個不錯的主意,它可以讓你確認是在正確的文件上進行了操作。其中一種方法是將你的命令替換成一種“無害”的命令。
$ cd
$ ls -l *dec?b?
你應該看到有9個"december", "b"文件被列出。現在移動它們:
$ mv *dec?b? december/
列出december 子目錄以確認移動操作順利完成了。
$ ls -l december/
total 0
-rw-rw-r-- 1 student student 0 Oct 16 22:16 graph_dec_b1
-rw-rw-r-- 1 student student 0 Oct 16 22:16 graph_dec_b2
-rw-rw-r-- 1 student student 0 Oct 16 22:16 graph_dec_b3
-rw-rw-r-- 1 student student 0 Oct 16 22:16 memo_dec_b1
-rw-rw-r-- 1 student student 0 Oct 16 22:16 memo_dec_b2
-rw-rw-r-- 1 student student 0 Oct 16 22:16 memo_dec_b3
-rw-rw-r-- 1 student student 0 Oct 16 22:16 report_dec_b1
-rw-rw-r-- 1 student student 0 Oct 16 22:16 report_dec_b2
-rw-rw-r-- 1 student student 0 Oct 16 22:16 report_dec_b3
9、將所有剩下的"B"文件分別移入相應的目錄:
$ mv *nov?b? november
$ mv *oct?b? october
$ mv *sep?b? september
10、現在你將"A"文件移動到它們相應對數字的目錄中去:
$ cd "A Reports"/
$ mv ~/*_a1 1/
"a1","september"文件不需要了。刪除它們並確認剩下的文件已正確的移動了。
$ cd 1
$ rm *sep*
$ ls
graph_dec_a1 graph_oct_a1 memo_nov_a1 report_dec_a1 report_oct_a1
graph_nov_a1 memo_dec_a1 memo_oct_a1 report_nov_a1
11、將最後的"a2"和"a3"文件移入相應的數字目錄中去:
$ pwd
/home/student/A Reports/1
使用相對路徑移動"a2"文件:
$ mv ../../*a2* ../2/
使用絕對路徑移動"a3"文件
$ mv /home/student/*a3* /home/student/A\ Reports/3/
12、回到你的home目錄下,並用ls 確認在該目錄下只剩下"c"文件。
13、每個月的"c1"和"c2"文件很重要,你想將它們備份到另外一個目錄中去:
$ mkdir /tmp/archive
$ cp report*[1-2] /tmp/archive/
除此之外所有December月份的文件應備份到/tmp/archive 目錄中。注意使用 -i 選項以使cp 命令在覆蓋文件時提示。
$ cp -i report_dec* /tmp/archive/
cp: overwrite '/tmp/archive/report_dec_c1'? n
cp: overwrite '/tmp/archive/report_dec_c2'? n
14、現在你已經備份了一些對你來說重要的"C"文件,你想刪除所有還留在你home 目錄裡的文件。用通配符*c*檢驗所剩余的文件。為什麼你不能用rm *c*刪除?
(提示:試試ls *c* 看看)
15、刪除所剩余的"c"文件:
$ rm *c[1-3]
$ ls
A Reports december november october september
完成:
一個良好組織的home 目錄,文件都放在合適的子目錄中。一些文件備份在/tmp/archive 目錄中。
實驗2:檢測磁盤使用程度
假設:
你想檢測系統上每個文件系統所剩余的空間。除此之外,你需要有個包含最占磁盤空間的目錄的列表。
任務:
1、使用df 檢測文件系統上剩余的空間。輸出將類似於如下所示(這當然取決於你的機器安裝和配置)。
$ df
Filesystem 1k-blocks Used Available User% Mounted on
/dev/hda5 12880648 1634344 10591988 14% /
/dev/hda1 36566 2476 32202 8% /boot
2、注意缺省的df 命令是以塊(block)為單位輸出的。試著使用-h 和-H 選項產生更人性化的輸出:
$ df -h
Filesystem 1k-blocks Used Available User% Mounted on
/dev/hda5 12G 1.6G 10G 14% /
/dev/hda1 36M 2.5M 31M 8% /boot
$ df -H
Filesystem 1k-blocks Used Available User% Mounted on
/dev/hda5 13G 1.7G 10G 14% /
/dev/hda1 37M 2.6M 32M 8% /boot
兩種選項有何區別?(用man df 查找答案)
3、在home 目錄下使用du (disk usage)命令檢測你的home 目錄使用了多少空間。務必使用-h 選項產生人性化輸出。
實驗3:檢測文本文件
任務:
1、首先,我們需要一個文本文件:
$ cd
$ cp /usr/share/dict/words .
2、使用cat 命令顯示文件
$ cat words
Aarhus
Aaron
Ababa
......輸出省略......
Zulu
Zulus
Zurich
3、cat 在這種情況下是一個糟糕的選擇,因為輸出翻屏得很快。試著使用less:
$ less words
Aarhus
Aaron
Ababa
......輸出省略......
abducts
Abe
abed
......輸出省略......
用less 你可以往回翻(用b)和往前翻(用空格鍵),一次一個屏幕。
4、若你只需要快速浏覽一下一個文件的頭部或者尾部,你可以使用head 或者tail:
$ head words
Aarhus
Aaron
Ababa
aback
abaft
abandon
abandoned
abndoning
abandonment
abandons
$ tail words
zoologically
zoom
zooms
zoos
Zorn
Zoroaster
Zoroasterian
Zulu
Zulus
Zurich
使用man 搜索head 和tail,找到可以修改顯示行數、和顯示的相對位置的選項。
哪個命令可以顯示某文件的前50行?
哪個命令可以顯示某個文件從25000行開始,到其結束?
單元四實驗:用戶信息和man
估計用時:30分鐘
目標:熟悉幾個用戶識別和帳戶切換命令的使用。
實驗前准備:准備一個安裝好,完成過單元三實驗的Red Hat Linux 系統,除此之外一個叫visitor 的非特權帳號,其密碼為visitor。檢查一下指南以確認這個帳號是否已經存在在系統中。如果你的visit
$ less words
Aarhus
Aaron
Ababa
......輸出省略......
abducts
Abe
abed
......輸出省略......
用less 你可以往回翻(用b)和往前翻(用空格鍵),一次一個屏幕。
4、若你只需要快速浏覽一下一個文件的頭部或者尾部,你可以使用head 或者tail:
$ head words
Aarhus
Aaron
Ababa
aback
abaft
abandon
abandoned
abndoning
abandonment
abandons
$ tail words
zoologically
zoom
zooms
zoos
Zorn
Zoroaster
Zoroasterian
Zulu
Zulus
Zurich
使用man 搜索head 和tail,找到可以修改顯示行數、和顯示的相對位置的選項。
哪個命令可以顯示某文件的前50行?
哪個命令可以顯示某個文件從25000行開始,到其結束?
單元四實驗:用戶信息和man
估計用時:30分鐘
目標:熟悉幾個用戶識別和帳戶切換命令的使用。
實驗前准備:准備一個安裝好,完成過單元三實驗的Red Hat Linux 系統,除此之外一個叫visitor 的非特權帳號,其密碼為visitor。檢查一下指南以確認這個帳號是否已經存在在系統中。如果你的visit