单元三实验
文件和目录操作
估计用时: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。检查一下指南以确认这个帐号是否已经存在在系统中。如果你的visitor 帐号还未建立,则按如下次序操作:
1、以root 用户登录
2、输入 # useradd visitor
3、输入 # passwd visitor
Changing password for user visitor
New UNIX password: {在这里输入visitor}
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password {重新输入visitor}
passwd: all authentication tokens updated successfully
实验1:本地用户登录
任务:
1、完全注销你的登陆。务必确认你也退出了所有的虚拟终端和X Window 系统。
2、按 切换到虚拟终端1(tty1)。
3、以root身份登录。
4、检测该登录。运行下列命令:
# whoami
# groups
# id
检测这些命令的输出。
5、检测当前工作站所有的登录。这时应该只有一个用户在该系统上登录。以下命令的输出将随着实验的进行变得越来越有趣。
# users
# who
# w
检测这些命令的输出。
6、按 切换到虚拟终端2(tty2)。
7、使用student身份登录。
8、检测该登录的。运行下列命令:
$ whoami
$ groups
$ id
检测这些命令的输出。
9、检测当前工作站的所有登录:
$ users
$ who
$ w
检测这些命令的输出。
10、按 切换到虚拟终端3(tty3)。
11、以visitor身份登录
12、检测该登录。运行下列命令:
$ whoami
$ groups
$ id
检测这些命令的输出
13、检测当前工作站所有的登录:
$ users
$ who
$ w
检测这些命令的输出。
实验2:切换用户帐号
任务:
1、按 切换到虚拟终端3(tty3)。
2、运行pwd 命令确定你当前的目录。检测你当前的可执行文件搜索路径。检测你的用户信息。
$ id
$ pwd
$ echo $PATH
在此记录结果:
id = ______________________
pwd = _____________________
$PATH = ___________________________________________________________________
3、使用su 命令并不带 "-" 选项切换到root 用户。运行pwd 命令确认你的当前目录。检测你当前的可执行文件搜索路径。
$ su
# id
# pwd
# echo $PATH
在此记录结果:
id = ______________________
pwd = _____________________
$PATH = ___________________________________________________________________
4、退出root 帐号,回到student 帐号。
# exit
5、使用su - 切换到root 帐号。运行pwd 命令确认你的当前目录。检测你当前的可执行文件搜索路径。
$ su -
# id
# pwd
# echo $PATH
在此记录结果:
id = ______________________
pwd = _____________________
$PATH = ___________________________________________________________________
6、注销本次实验所有的登录,包括本地的和远程的。
实验3:使用man
任务:
1、查询lpr的手册(manual page)
$ man lpr
2、lpr 的-m 选项有什么用处?(提示:使用"/"键开始一次查找,输入-m,然后按回车)
___________________________________________________________________
3、在lpr 中如何改变打印纸张的宽度?
___________________________________________________________________
4、lpr 有没有用到的 FILES?(如果有,无需列出)
___________
5、在屏幕上显示manual pages中的命令名,该命令的描述(description)中提到"postscript"。
6、在上面的结果中查找可以将Postscript或者PDF转换成ASCII的命令。