单元三实验
文件和目录操作
估计用时: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行开始,到其结束?
yjdwbj 于 2006-10-10 19:28:59发表:
好,希望楼主能把它系统化,谢谢
xmanzzx 于 2006-10-07 00:59:56发表:
顶
caictb 于 2006-10-06 22:29:04发表:
支持
chameleon 于 2006-10-06 22:06:42发表:
希望楼主把这个系列发全了...
captail 于 2006-10-05 19:57:13发表:
好好学习,天天向上
chameleon 于 2006-09-27 04:36:50发表:
这个系列不错,建议楼主打个包,把文件放包里,然后我们下载也方便
iflove 于 2006-09-26 23:18:54发表:
支持下