文件系统是Linux一个十分重要的知识点,本章主要包括Linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接、硬链接和常见目录的介绍。
文件系统通过为每个文件分配文件块的方式把数据存储在存储设备中,所以一个文件除了分配的文件块外,分配信息本身也要存储在磁盘上。不同的文件系统用的分配和读取文件块的方法也是不同的。下面简要地介绍两种文件系统分配策略:块分配和扩展分配。
采用块分配(block allocation)的文件系统,当文件扩展时每一次都为这个文件分配磁盘空间;采用扩展分配(extent allocation)的文件系统,在文件的磁盘空间不够的时候,一次性为它分配一连串连续的块。
学习目标 熟练使用 ar 指令创建库文件并进行维护
语法 ar必要参数[可选参数] [成员文件名]目标文件名
功能说明 ar 指令可以将一组指定文件合并到一个以目标文件名命名的、以.a 为后缀的标准库文件中,也可以从已建立的档案文件中提取文件。操作不改变档案文件中文件的属性。
参数说明 必要参数及其说明如下:

可选参数及其说明如下:

基础应用
范例224 创建一个以lib命名的库文件,同时添加模块a1.o、a2.o到新建的库文件中。
[root@localhost ~]# gcc a1.o -o a1.c //用gcc编译文件a1.c
[root@localhost ~]# gcc a2.o–o a2.c //编译文件a2.c
[root@localhost ~]#ar rv lib.a a1.o a2.o //创建lib.a文件
a1.o
a2.o
[root@localhost ~]#
用“ar”指令创建lib.a库文件,它包含两个成员文件a1.o和a2.o。从指令中可以看出库文件是gcc编译后的二进制文件,同时新创建的库文件是以.a为后缀的静态函数库。
范例225 显示档案文件的模块。
[root@localhost ~]#ar t lib.a //显示档案文件lib.a的模块
a1.o
a2.o
[root@localhost ~]#
显示lib库中的模块a1.o和a2.o。
范例226 删除档案文件中的指定文件。
[root@localhost ~]#ar d lib.a a1.o //删除档案文件的文件
[root@localhost ~]#ar t lib.a //查看档案文件的文件
a2.o
[root@localhost ~]#
删除库lib中的模块a1.o后,重新显示库文件lib.a,发现库文件中只剩下a2.o模块。
范例227 查看档案文件中的文件并显示文件的详细信息。
[root@localhost ~]#ar tv lib.a //查看档案文件中的文件同时显示文件的详细信息
rw-r—-r—-101/101 7180 May 25 01:30 2008 a1.o
rw-r—-r—-101/101 4198 May 25 01:30 2008 a2.o
[root@localhost ~]#
运行“ar tv lib.a”列出的项目最前面的九位是文件的属性值,其中每三个分为一组,分别是[拥有者]、[同一用户组的人]、[其他用户],而每一组中包含有三项 [读取权限]用[r]标示, [写入权限]用[w]标示,最后一个是[执行权限]标示为[x],如果用[-]进行标示表示对应的用户没有该项权利。
实战思考
应用思考
1.使用参数 p 显示档案文件中指定文件的内容,请比较参数 p 与参数 t 显示的差异。
2.使用“ar”指令对 lib.a 库文件进行修改和添加。
学习目标 使用 aspell 指令对文件进行检查,查看是否存在拼写错误
语法 aspell 必要参数[可选参数]文件
功能说明 aspell 指令用于检查文件的拼写错误,通过参数的使用能完成显示等多项附加功能。
参数说明 必要参数及其说明如下:

可选参数及其说明如下:


基础应用
范例228 检查文件的错误。
[root@localhost ~]# aspell -c file.c //检查文件file.c
abcdefghijklmnopqrst
abcdefg
hijklmn
opqrst
uvwxyz
i) Ignore I) Ignore all
r) Replace R) Replace all
a) Add x) Exit
[root@localhost ~]#
运行“aspell -c file.c”显示文件 file.c 的内容,并给出了 Ignore、Ignore all、Replace、Replace all、Add 和 Exit 等修改意见。
范例229 将文件中出现的拼写错误输出到标准输出。
[root@localhost ~]# aspell -l <file.c //将 file.c 中拼错的单词输出到标准输出
abcdefghijklmnopqrst
abcdefg
hijklmn
opqrst
uvwxyz
[root@localhost ~]#
实战思考
应用思考
使用“aspell”指令对你编辑的文件进行检查。
学习目标 掌握显示文件名称和目录名称的指令格式
语法 basename[选择性参数][路径名]
功能说明 basename 指令用于打印目录或者文件的基本名称,它将剥除目录或者文件路径的前缀以及文件的后缀信息。
参数说明 选择性参数的具体说明如下:

内建指令
uname
基础应用
范例230 显示基本的文件或者目录名称。
[root@localhost /]# basename /home/kk //显示目录的基本名称
kk
[root@localhost /]#
basename显示指定完整路径的最后部分,也就是目录或者文件真正的名称。如上例中完整的路径信息是/home/kk,执行basename指令之后,得到目录的基本名称kk。
学习目标 使用 bunzip2 指令对经 bzip2 压缩后的.bz2 类型的文件解压
语法 bunzip2 [-可选参数] .bz2 压缩文件
功能说明 bunzip2 指令与“bzip2–d”有相同的作用,解压所指定的.bz2 类型的文件。如果文件类型不是.bz2,解压动作将被忽略,并产生警告信息。对于xxxxxx.tar.bz2类型的文件解压后的形式变为xxxxxx.tar,指令功能与Windows下解压程序相同。
参数说明 可选参数及其说明如下:

基础应用
范例231 解压.bz2类型的文件。
[root@localhost ~]# bunzip2 filename.bz2 //解压文件filename.bz2
运行“bunzip2 filename.bz2”解压文件 filename.bz2 之后,将生成文件 filename,同时删除原文件filename.bz2。
范例232 使用-s参数解压.bz2类型的文件。
[root@localhost ~]# bunzip2 -s filename.bz2//解压文件 filename.bz2
运行“bunzip2–s filename.bz2”解压文件 filename.bz2 的过程中,内存用量比正常执行时要少。使用 bunzip2/ bzip2–b 解压文件时所需的内存用量=400K+(block *4),加了-s 选项后解压文件是所需内存用量=400K+(block*2.5),其中内存单位 block 的大小是在压缩时决定的。
范例233 解压文件,同时将执行完后的数据输出到标准输出。
[root@localhost ~]# bunzip2 -c filename.bz2//解压文件 filename.bz2 并输出解压后的数据
Hello every one
Hello world
[root@localhost ~]#
解压文件filename.bz2,将解压后的数据直接输出到标准输出,如上所示。
实战思考
应用思考
1.使用 bunzip2 指令对 xxxxxx.tar.bz2 文件进行解压。
2.对比 bunzip2 指令与 bzip2–b 指令。
学习目标 学会运用 bzip2 指令对文件进行压缩和解压
语法 bzip2 [-可选参数] [-压缩等级]要压缩的文件
功能说明 bzip2 指令使用[Burrows-Wheeler block sorting]文本压缩算法以及[Huffmancoding]霍夫曼编码压缩文件。bzip2只能压缩一个文件,在使用bzip2压缩文件的过程中会使用到前面所提到的[block]内存单位,这个内存单位的大小可以通过1~9的选项来自定义,一般内存越大,压缩的效果越好。
这里给出内存的算法:
压缩时:
内存用量=400K+(block*7)
block =选项*100K
解压时:
内存用量=400K+(block*4)
block大小是在压缩时决定的,解压时不用再设定。
参数说明 可选参数及其说明如下:

基础应用
范例234 压缩文件。
[root@localhost ~]# bzip2 filename //压缩文件filename
压缩后生成文件filename.bz2,原文件filename消失。
范例235 压缩文件,并保留原文件。
[root@localhost ~]# bzip2 -7 -k filename.doc //压缩文件 filename
压缩后生成filename.doc.bz2文件,保留原文件filename.doc,-7选项是压缩等级选项,默认值为-9。
范例236 使用bzip2指令解压文件。
[root@localhost ~]# bzip2–b filename.doc.bz2 //解压文件filename.doc.bz2
bzip2指令本身既可压缩文件,也可解压文件。
实战思考
应用思考
把一个xxxxxx.tar.gz指令经变换后转换成xxxxxx.tar.bz2。
学习目标 修复损坏的.bz2 类型文件
语法 bzip2recover.bz2 类型文件
功能说明 使用 bzip2recover 指令修复损坏的.bz2 文件的数据其实是将文件中的块隔离开。bzip2 是以块的方式来压缩文件的,每个块都是一个独立的单位。当某一块损坏时,用bzip2recover将文件中的块隔离,解压正常的块。
基础应用
范例237 修复.bz2文件。
[root@localhost ~]# bzip2recover filename.bz2 //修复.bz2 文件
bzip2recover 1.0.3: extracts blocks from damaged .bz2 files.
bzip2recover: searching for block boundaries ...
block 1 runs from 100 to 421
bzip2recover: splitting into blocks
writing block 1 to 'rec00001filename.bz2 ...
bzip2recover: finished
[root@localhost ~]#
学习目标 使用 cat 指令对文件进行连接并掌握输出导向符号的使用
语法 cat [-可选参数]文件
功能说明 cat指令用于连接指定的文件,同时兼有将文件的内容输出到标准输出的功能。
参数说明 可选参数及其说明如下:

基础应用
范例238 显示文件内容到标准输出。
[root@localhost ~]# cat a1.txt //显示文件a1.txt的内容
Hello every one
Hello world
[root@localhost ~]#
当“cat”指令的后面只接了一个文件a1.txt时,不对文件进行连接,仅在标准输出上显示文件a1.txt的内容。
范例239 对输出的内容进行编号。
[root@localhost ~]# cat -n a1.txt//显示文件a1.txt的内容,并对输出进行编号
1 Hello every one
2 Hello world
[root@localhost ~]#
范例240 同时显示文件 a1.txt和文件 a2.txt 内容,并在每一行的末尾以“$”结束。
[root@localhost ~]# cat -E a1.txt a2.txt//显示文件 a1.txt a2.txt 的内容,并在每一行的末尾以“$”结束
Hello every one$
Hello world$
You are welcome$
What can I do for you$
[root@localhost ~]#
运行“cat -E a1.txt a2.txt”将文件 a1.txt 和文件 a2.txt 的内容连续地显示在标准输出上。
范例241 连接文件a1.txt和文件a2.txt。
[root@localhost ~]# cat a1.txt a2.txt >a3.txt//连接文件 a1.txt a2.txt
[root@localhost ~]# cat a3.txt
Hello every one
Hello world
You are welcome
What can I do for you
[root@localhost ~]#
运行“cat a1.txt a2.txt >a3.txt”,将文件 a1.txt 的内容和文件 a2.txt 的内容合并送到文件a3.txt中,如果文件a3.txt不存在,将创建一个a3.txt新文件。
范例242 连接文件a1.txt和文件a2.txt。
[root@localhost ~]# cat a2.txt a1.txt >>a3.txt //连接文件 a1.txt a2.txt
[root@localhost ~]# cat a3.txt
Hello every one
Hello world
You are welcome
What can I do for you
You are welcome
What can I do for you
Hello every one
Hello world
[root@localhost ~]#
运行“cat a1.txt a2.txt >>a3.txt”,将文件 a1.txt的内容和文件 a2.txt的内容合并加到文件 a3.txt后。
实战思考
应用思考
先创建一个 a1.txt新文件,再输入内容到文件 a1.txt中,然后执行“cat >a1.txt”指令并查看指令运行后文件a1.txt的结果。
学习目标 使用 chattr 指令改变文件系统的属性
语法 chattr [-可选参数] [+/-/=<属性>]文件或者目录
功能说明 chattr 指令改变 Linux 第二个扩展文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:文件或目录的附加用途。
b:不更改文件或者目录的最后存取时间。
c:压缩文件或者目录。
d:不对文件或者目录进行倾倒性操作。
i:不随意改动文件或者目录的属性。
s:安全删除文件或者目录。
S:更新文件或者目录。
u:意外删除保护。
参数说明 可选参数及属性说明如下:

基础应用
范例243 设置文件的属性。
[root@localhost ~]# lsattr a1 //显示文件a1的属性
------------- a1
[root@localhost ~]# chattr +u a1 //意外删除保护
[root@localhost ~]# lsattr a1 //显示文件a1的属性
-u----------- a1
[root@localhost ~]# chattr +a a1 //文件或目录的附加用途
[root@localhost ~]# lsattr a1 //显示文件a1的属性
-u---a------- a1
[root@localhost ~]# chattr =s a1
s------------ a1
[root@localhost ~]#
运行指令“chattr +u a1”和“chattr +a a1”,显示文件 a1 的属性发现文件的对应项上添加了相关属性值,再输入“chattr =s a1”属性值变为 s------------,同时将原有属性值删除。
范例244 删除文件具有的属性。
[root@localhost ~]# chattr -s a1 //删除文件a1的相应属性
[root@localhost ~]# lsattr a1 //显示文件a1的属性
------------- a1
[root@localhost ~]#
使用指令“chattr -a a1”删除文件 a1 相应项的属性 s。
实战思考
应用思考
运行“chattr =asu a1”后,更改文件 a1.txt 的属性,在标准输出上显示文件 a1.txt 的属性,查看指令执行结果。
学习目标 使用 chgrp 指令改变文件或者目录所属的用户组,区分 chgrp 指令和 chown指令的不同
语法 chgrp [-可选参数] [所属用户组] [文件或目录]
功能说明 chgrp 指令用来改变文件或者目录所属的用户组。
参数说明 可选参数及其说明如下:

基础应用
范例245 改变目录的用户组属性。
[root@localhost manager]# chgrp -R manager filename //改变目录filename的用户组为manager
运行“chgrp -R filename manager”指令改变目录 filename 的用户组为 manager。
范例246 根据指定文件改变目录的用户组属性。
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rw-r--r-- 1 root root 28 11-29 09:27 a1.txt
-rw-r--r-- 1 root root 38 11-29 09:30 a2.txt
-rw-r--r-- 1 root root 132 11-29 09:35 a3.txt
-rw-r--r-- 1 root root 1822 01-11 16:51 test.c
-rw-r--r-- 1 root root 4096 01-11 15:52 tonx.c
………………
-rw-rw-r-- 1 manager manager 82 11-29 10:08 filname
[root@localhost manager]# chgrp --reference=tonx.c filename //改变filename的用户组
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rw-r--r-- 1 root root 28 11-29 09:27 a1.txt
-rw-r--r-- 1 root root 38 11-29 09:30 a2.txt
-rw-r--r-- 1 root root 132 11-29 09:35 a3.txt
-rw-r--r-- 1 root root 1822 01-11 16:51 test.c
-rw-r--r-- 1 root root 4096 01-11 15:52 tonx.c
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]#
先使用 ls -l 显示当前文件夹下文件的详细信息,从中不难发现目录 filename 的用户组为manager,再使用指令“chgrp --reference=tonx.c filename”改变目录 filename 的用户组属性使其和参考文件tonx.c的用户组属性相同,最后使用指令ls-l显示文件的详细信息,以便查看目录filname的用户组。
实战思考
应用思考
1.运用“chgrp -v manager filename”指令改变目录的用户组属性,查看目录下文件的属性是否发生更改。
2.如果一份文件只有部长级及其以上的用户才能观看,想想如何实现。
学习目标 使用 chmod 指令更改文件或者目录的使用权限
语法 chmod[-可选参数][<权限范围>+/-/=<权限设置>]文件或者目录
功能说明 在 Linux 系统中,文件或目录的权限有读取[r]、写入[w]、执行[x],此外,系统还有3种特殊权限可供运用,还可以搭配拥有者与所属群组管理权限范围。使用chmod指令更改文件与目录的权限,可以通过符号或者数值的方式来设置,在符号链接修改权限时,会改变被连接的原始文件。给定多个符号时,用逗号隔开。权限范围以及权限代号的说明如下:
【权限范围】
u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者、所属群组以及其他用户。
【权限代号】
r:读取权限,数字代号为“4”。
w:写入权限,数字代号为“2”。
x:执行或切换权限,数字代号为“1”。
-:不具任何权限,数字代号为“0”。
s:特殊?b>功能说明:变更文件或目录的权限。
参数说明 可选参数及其说明如下:

基础应用
范例247 设置文件的权限。
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rw-r--r-- 1 root root 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]# chmod 775 a1.txt //改变文件a1.txt的权限
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rwxrwxr-x 1 root root 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manger]#
前面已经介绍了用户的 9 个属性值,运行“chmod 775 a1.txt”设置文件 a1.txt 的权限为755,即拥有者的权限为7,具有读取权、写入权、执行权;同一用户组里用户的权限与拥有者相同;其他用户的权限为最后一个数字 5,即拥有读取权、执行权,但不拥有写入权,不能对文件进行修改。
范例248 设置文件的权限。
[root@localhost ~]# chmod ug+rwx a1.txt //设置文件a1.txt的权限
[root@localhost ~]# chmod o+rx a1.txt
[root@localhost ~]#
运行指令“chmod ug+rwx a1.txt” “chmod o+rx a1.txt”的结果同上例,仅表现方式不同。
范例249 删除文件的权限。
[root@localhost ~]# chmod a-rx a1.txt //删除文件a1.txt的权限
运行指令“chmod a-rx a1.txt”删除所有用户对文件 a1.txt 的读取和执行权限。
实战思考
应用思考
运用“=”来设置权限,看看对文件原有的权限有什么影响,不同的方法设置权限各有什么差异。
学习目标 使用 chown 指令改变文件的拥有者或用户组
语法 chown[-可选参数] [用户] [:/.所属组群]文件
功能说明 chown 指令改变指定文件的用户或用户组。如果在 chown 指令中只给定一个用户名,那么指令的运行结果只改变文件的拥有者为给出的用户名,用户组不变。如果同时在指令中给出用户名和用户组,那么文件的用户和用户组同时改变,而且该指令还能只改变用户的组,而不改变拥有者,这种用法与前面介绍的chgrp指令的用法类似。
参数说明 可选参数及其说明如下:


基础应用
范例250 改变文件的用户。
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rw-r--r-- 1 root root 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]# chown manager a1.txt //改变文件a1.txt的用户
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rwxrwxr-x 1 manager root 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]#
运行指令“chown manager a1.txt”后,从显示信息可以发现文件的拥护者已经从 root 变为manager,但文件的拥有者仍是root。
范例251 同时更改文件的用户和用户组。
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rw-r--r-- 1 root root 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]# chown manager:manager a1.txt //改变文件a1.txt的用户
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rwxrwxr-x 1 manager manager 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]#
运行指令“chown manager:manager a1.txt”同时改变了文件和用户的用户组信息。
范例252 用户名后面跟一个冒号或者点号,但无用户组名时,文件的用户组变为指定用户所在的组。
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rw-r--r-- 1 root root 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]# chown manager: a1.txt //改变文件a1.txt的用户
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rwxrwxr-x 1 manager manager 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]#
范例253 改变用户组而不改变用户名。
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rw-r--r-- 1 root root 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]# chown :manager a1.txt //改变文件a1.txt的用户
[root@localhost manager]# ls -l //显示当前文件夹下的文件详细信息
total 120
-rwxrwxr-x 1 root manager 28 11-29 09:27 a1.txt
………………
-rw-rw-r-- 1 manager root 82 11-29 10:08 filname
[root@localhost manager]#
运行指令“chown :manager a1.txt”只改变了文件的用户组信息。
实战思考
应用思考
如果有一个文件你不是它的拥有者,尝试一下能否改变文件的用户或用户组信息。
学习目标 执行 cksum 指令查看文件的校验和和文件的字节数
语法 cksum[-可选参数][文件]
功能说明 cksum 指令显示指定文件的校验和和字节数,如果不指定任何文件名称或是给出的文件名为“-”,则cksum指令会从标准输入设备读取数据。
参数说明 可选参数及其说明如下:

基础应用
范例254 对文件进行校验。
[root@localhost ~]# cksum 1.log //计算文件的校验和
2569962218 28 a1.txt
CRC是一种排错检查方式,cksum运用该演算法对文件进行计算并显示计算结果,供用户核对文件是否正确。
学习目标 使用 cmp 指令比较两个文件的差异
语法 cmp [-可选参数] 第一个文件 第二个文件
功能说明 cmp 指令比较任意类型的两个文件,并且把结果输出到标准输出。如果文件是相同的,则无输出。如果两个文件存在差异,那么第一个不同的字符和行数会在标准输出上输出。
参数说明 可选参数及其说明如下:

【函数的返回信息】
0:文件是同样的。
1:文件是不同的。
>1:发生错误。
基础应用
范例255 比较两个文件显示不同的信息。
[root@localhost ~]# cmp–c a1.txt a2.txt //比较两个文件a1.txt和a2.txt
a1.txt a2.txt differ: byte 1, line 1 is 110 H 131 Y
[root@localhost ~]#
运行“cmp–c a1.txt a2.txt”,输出 a1.txt a2.txt differ: byte 1, line1 is 110 H 131 Y 表明文件a1.txt和文件a2.txt存在差异—两文件第一行的第一个字节就不同,并给出两文件的第一个字母。
范例256 比较两个文件的差异并显示所有不同。
[root@localhost ~]# cmp -l a1.txt a2.txt //比较两个文件 a1.txt 和 a2.txt 显示所有不同的信息
1 110 131
2 145 157
3 154 165
4 154 40
5 157 141
6 40 162
8 166 40
9 145 167
10 162 145
11 171 154
12 40 143
14 156 155
15 151 12
17 110 127
18 145 150
19 154 141
20 154 164
21 157 40
22 40 143
23 167 141
24 157 156
25 162 40
26 154 151
27 144 40
28 12 144
cmp: EOF on a1.txt
[root@localhost ~]#
运行“cmp–l a1.txt a2.txt”,输出文件 a1.txt 与文件 a2.txt 之间的所有差异,其中未显示的 7和 13 表示这两个字节相同。EOF on a1.txt 表示文件 a1.txt 的字节数小于或等于文件 a2.txt 字节数,比较截止于文件a1.txt的末尾。
实战思考
应用思考
比较指令“cmp a1.txt a2.txt”与指令“cmp–c a1.txt a2.txt”输出结果的不同。
学习目标 使用 cp 指令复制文件和目录
语法 cp [-可选参数] [源文件或目录] [目标文件或目录]
功能说明 复制源文件到目标文件,或者复制多个源到目标文件夹。
参数说明 可选参数及其说明如下:

基础应用
范例257 复制文件到指定目录。
[root@localhost ~]# cp a1.txt Desktop/yy1 //复制文件到目录Desktop/yy1
[root@localhost ~]# cd Desktop/yy1 //改变目录到Desktop/yy1
[root@localhost yy1]# ls
a1.txt
[root@localhost yy1]#
运行指令“cp a1.txt Desktop/yy1”复制文件 a1.txt 到指定的目录 Desktop/yy1。
范例258 复制文件夹。
[root@localhost ~]# cp–fr /home/work Desktop/yy1 //复制文件到目录Desktop/yy1
[root@localhost ~]#
运行指令“cp–fr /home/work Desktop/yy1”将目录/home/work 中的文件和子目录一并复制到目录Desktop/yy1下。
范例259 复制备份文件时选择备份文件的结尾字符串。
[root@localhost ~]# cp -bv --suffix=$ a1.txt Desktop/yy1 //备份时选择字尾的字符串
[root@localhost ~]# cd Desktop/yy1
[root@localhost yy1]# ls
a1.txt a2.txt a1.txt$
[root@localhost yy1]#
运行指令“cp -bv --suffix=$ a1.txt Desktop/yy1”复制文件 a1.txt,同时指定备份文件的结尾字符串为“$”,查看文件夹Desktop/yy1能看到一个以“$”结尾的文件a1.txt$。
实战思考
应用思考
1.尝试用 cp 指令复制文件到指定目录,同时进行备份但不设结尾的字符串,完成后显示目标目录的内容。
2.使用cp指令将源文件复制到另一个目标文件,查看结果。
学习目标 使用 cpio 指令对文件进行备份
语法 cpio 必要参数[-可选参数]文件
功能说明 cpio 是用来创建、还原备份档的工具程序,它可以将一个文件从一个地方复制到另外一个地方,同时可以处理tar备份档的文件。
参数说明 必要参数及其说明如下:


选择性参数的具体说明如下:

基础应用
范例260 使用find制作备份文件。
[root@localhost yy1]# ls -l //显示当前目录下的详细信息
total 40
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rw-r--r-- 1 root root 28 11-29 15:29 a1.txt$
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
[root@localhost yy1]# find *.txt | cpio -o >mycopy.cpio //制作备份文件
1 block
[root@localhost yy1]# ls -l //显示当前目录下的详细信息
total 48
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rw-r--r-- 1 root root 28 11-29 15:29 a1.txt$
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
[root@localhost yy1]#
运行指令“find *.txt | cpio–o >mycop.cpio”从目录 yy1 中查找所有.txt 文件并将其备份到指定文件mycopy.cpio。
范例261 使用ls制作备份文件。
[root@localhost yy1]# ls -l //显示当前目录下的详细信息
total 48
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rw-r--r-- 1 root root 28 11-29 15:29 a1.txt$
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
[root@localhost yy1]# ls | cpio -o >mycopy1.cpio //制作备份文件
75 block
[root@localhost yy1]# ls -l //显示当前目录下的详细信息
total 92
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rw-r--r-- 1 root root 28 11-29 15:29 a1.txt$
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw-r--r-- 1 root root 38400 11-29 20:01 mycopy1.cpio
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
[root@localhost yy1]#
运行指令“ls | cpio–o >mycop1.cpio”将目录yy1中所有文件打包备份到文件mycopy1.cpio中。
范例262 使用-o对标准输入指定的文件进行备份。
[root@localhost yy1]# ls -l //显示当前目录下的详细信息
total 92
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rw-r--r-- 1 root root 28 11-29 15:29 a1.txt$
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw-r--r-- 1 root root 38400 11-29 20:01 mycopy1.cpio
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
[root@localhost yy1]# cpio -o >mycopy2.cpio //备份文件
a1.txt //输入待备份文件
a1.txt$
fcntl.c
mycopy1.cpio
mycopy.cpio
77 blocks
[root@localhost yy1]#
运行指令“cpio -o >mycopy.cpio”将标准输入输入的文件备份到指定的.cpio 文件。例如, a1.txt就是用户通过标准输入指定的待备份文件。当输入结束时,使用“Ctrl+D”组合键结束操作,完成备份。
范例263 使用-A向指定的.cpio备份文件中添加文件。
[root@localhost yy1]# ls -l //显示当前目录下的详细信息
a1.txt a1.txt$ alsaunmute mycopy1.cpio mycopy2.cpio mycopy.cpio
[root@localhost yy1]# cpio -o -O >mycopy2.cpio–A //向.cpio文件添加文件
alsaunmute //输入回车Ctrl+D
37 blocks
[root@localhost yy1]# cpio -o -O mycopy2.cpio–A //向.cpio文件添加文件
a1.txt
1 block
[root@localhost yy1]#
运行指令“cpio -o -O >mycopy2.cpio–A”和“cpio -o -O mycopy2.cpio–A”分两次向已存在的备份文件mycopy2.cpio中添加文件alsaunmute和a1.txt。
范例264 使用-i还原备份文件。
[root@localhost yy1]# cpio -i < mycopy1.cpio //还原备份文件
75 blocks
[root@localhost yy1]#
运行指令 cpio -i < mycopy1.cpio 还原文件 mycopy1.cpio 到当前文件夹下。
范例265 使用-ti还原备份文件,同时列出详细信息。
[root@localhost yy1]# cpio -t -i <mycopy.cpio //还原备份文件
a1.txt
1 block
[root@localhost yy1]#
运行指令“cpio -t–i <mycopy.cpio”还原备份文件 mycopy.cpio,并列出详细的信息。
实战思考
应用思考
1.尝试用 cpio 指令实现文件复制,对比 cp 指令的复制功能,同时比较二者的备份功能并进行区分。
2.使用 cpio 指令直接将文件发送到外部源。
3.使用 cpio 指令强制还原备份文件。
学习目标 能使用 csplit 指令对文件进行分割
语法 csplit [-可选参数]文件 模式队列
功能说明 使用 csplit 指令,将待分割文件按指定的输出模式进行分割,并将结果输出到标准输出。
参数说明 可选参数及其说明如下:

基础应用
范例266 将文件按指定模式进行分割。
[root@localhost yy1]# ls -l //显示当前目录下的详细信息
total 48
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw------- 1 root root 1822 11-30 18:45 anaconda-ks.cfg
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
[root@localhost yy1]# csplit anaconda-ks.cfg 10 20 30 //按照给定的模式队列分割文件
214
415
360
833
[root@localhost yy1]# ls-1 //显示文件列表,查看文件分割的结果
total 80
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw------- 1 root root 1822 11-30 18:45 anaconda-ks.cfg
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
-rw-r--r-- 1 root root 214 11-30 19:04 xx00
-rw-r--r-- 1 root root 415 11-30 19:04 xx01
-rw-r--r-- 1 root root 360 11-30 19:04 xx02
-rw-r--r-- 1 root root 833 11-30 19:04 xx03
[root@localhost yy1]#
执行指令“csplit anaconda-ks.cfg 10 20 30”将文件 anaconda-ks.cfg 分割成 4 个文件,分别如下所示。
xx00:包含源文件前十行的文件;
xx01:包含从文件xx00的断点开始的20行;
xx02:包含从文件xx01的断点开始的30行;
xx03:包含从文件xx02的断点开始的剩余的所有行。
范例267 使用-f分割文件。
[root@localhost yy1]# ls-1 //显示文件列表,查看文件分割的结果
total 80
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw------- 1 root root 1822 11-30 18:45 anaconda-ks.cfg
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
-rw-r--r-- 1 root root 214 11-30 19:04 xx00
-rw-r--r-- 1 root root 415 11-30 19:04 xx01
-rw-r--r-- 1 root root 360 11-30 19:04 xx02
-rw-r--r-- 1 root root 833 11-30 19:04 xx03
[root@localhost yy1]# csplit–f as anaconda-ks.cfg 10//按照给定的模式队列分割文件
214
1608
[root@localhost yy1]# ls-1 //显示文件列表,查看文件分割的结果
total 96
-rw-r--r-- 1 root root 28 11-29 18:15 a1.txt
-rwxr-xr-x 1 root root 18872 2008-5-25 alsaunmute
-rw------- 1 root root 1822 11-30 18:45 anaconda-ks.cfg
-rw-r--r-- 1 root root 214 11-30 19:07 as00
-rw-r--r-- 1 root root 1608 11-30 19:07 as01
-rw-r--r-- 1 root root 512 11-29 19:41 mycopy.cpio
-rw-r--r-- 1 root root 214 11-30 19:04 xx00
-rw-r--r-- 1 root root 415 11-30 19:04 xx01
-rw-r--r-- 1 root root 360 11-30 19:04 xx02
-rw-r--r-- 1 root root 833 11-30 19:04 xx03
[root@localhost yy1]#
执行指令“csplit–f as anaconda-ks.cfg 10”将文件 anaconda-ks.cfg 分割成指定文件名为 as的两个文件。
实战思考
应用思考
尝试用csplit指令对空文件进行删除。
学习目标 学会使用 cut 指令直接在 Shell 中对文件进行剪切显示指定位置
语法 cut 必要参数[-可选参数]文件
功能说明 从指定文件中选择每行中的指定位置输出到标准输出。
参数说明 必要参数及其说明如下:

选择性参数及其说明如下:

基础应用
范例268 使用-b显示文件指定位的内容。
[root@localhost yy1]# cat a1.txt //显示文件a1.txt的内容
Hello every one
Hello world
[root@localhost yy1]# cut -b 1,2 a1.txt //显示文件每行的第一和第二两个字符
He
He
[root@localhost ~]#
运行指令“cut -b 1,2 a1.txt”对文件进行剪切,显示文件 a1.txt 中每一行的第一个和第二个字符,显示结果如上所示。
范例269 使用-c显示文件指定位的内容。
[root@localhost yy1]# cat a1.txt //显示文件a1.txt的内容
Hello every one
Hello world
[root@localhost yy1]# cut -c 2-11 a1.txt //显示文件每行的第二到第十一总共十个字符
ello every
ello world
[root@localhost ~]#
运行指令“cut -c 2-11 a1.txt”对文件进行剪切,显示文件 a1.txt 中每一行的第二到第十一个字符,显示结果如上所示。
范例270 使用-d指定文件切割的分割符显示内容。
[root@localhost yy1]# cat a1.txt //显示文件a1.txt的内容
Hello every one
Hello world
I am a student
My name is liming
Welcome to china
End
[root@localhost yy1]# cut -f 1–d w a1.txt //以 w 作为指定的分隔符,显示内容
Hello every one
Hello
I am a student
My name is liming
Welcome to china
End
[root@localhost yy1]#
运行指令“cut–f 1–d w a1.txt”显示文件 a1.txt 每一行中满足指令中给定条件的内容。
注意:指定字符的大小写。
实战思考
应用思考
使用-s参数,尝试在指令执行后不输出没有域分隔符的行。
学习目标 学会使用 diff 指令比较文件之间的差异,并生成差异信息
语法 diff 必要参数[-可选参数]文件/目录 1 文件/目录 2
功能说明 diff 指令以逐行的方式,比较两个指定文件内容的异同。如果指定的是两个目录参数,则diff指令会比较两目录下的同名文件,但不会比较其中的子目录。如果指令中同时指定参数“-r”,那么两个目录下的子目录也将进行递归比较。
参数说明 必要参数及其说明如下:


可选参数及其说明如下:

基础应用
范例271 使用-a比较两个文件。
[root@localhost yy1]# cat a1.txt //显示文件a1.txt的内容
Hello every one
Hello world
I am a student
My name is liming
Welcome to china
[root@localhost yy1]# cat a3.txt //显示文件a3.txt的内容
Hello every one
Hello world
I am a student
My name is liming
Welcome to china
You are welcome
What can I do for you
[root@localhost yy1]# diff–a a1.txt a3.txt //比较两个文件的不同
5a6,7
>You are welcome
>What can I do for you
运行指令“diff–a a1.txt a3.txt”,比较文件 a1.txt 和文件 a3.txt 的不同,结果显示“You are welcome” 和“What can I do for you”是新增行。比较结果中显示的 5a6,7 表示文件的差异处前五行是相同的,第六和第七行存在差异。
范例272 比较文件夹的差异。
[root@localhost~]# diff Desktop/yy1/ Desktop/yy2/ //比较两文件夹的不同
Only in Desktop/yy1/: a1.txt
Only in Desktop/yy1/: a3.txt
Only in Desktop/yy1/: mycopy.cpio
Only in Desktop/yy1/: mycopy1.cpio
Only in Desktop/yy2/: a2.txt
Only in Desktop/yy2/: mycopy2.cpio
[root@localhost ~]#
运行指令“diff Desktop/yy1/ Desktop/yy2/”,比较文件夹 Desktop/yy1/和文件夹 Desktop/yy2/的不同。
范例273 使用-c比较两个文件的不同。
[root@localhost yy1]# diff–c a1.txt a3.txt //比较两个文件的不同
+++ a1.txt 2008-12-01 10:05:28.000000000 +0800
--- a3.txt 2008-12-01 16:06:28.000000000 +0800
+++++++++++++++
+++3.5+++
___3.7___
I am a student
My name is liming
Welcome to china
+you are welcome
+what can I do for you
[root@localhost yy1]#
运行指令“diff–c a1.txt a3.txt”比较文件 a1.txt 和文件 a3.txt 的不同,并生成差异文件。
实战思考
应用思考
使用-r对目录进行递归比较,同时对比文件夹比较和文件夹的递归比较的输出结果。
学习目标 能使用 diffstat 指令读取 diff 的输出结果,对结果进行统计
语法 diff··· ···| diffstat [-可选参数]
功能说明 diffstat 指令读取 diff 指令的输出、统计插入、删除、修改等信息,显示统计数字。
参数说明 可选参数及其说明如下:

基础应用
范例274 显示diff指令的统计信息。
[root@localhost ~]# diff Desktop/yy1/yy2 Desktop/yy1/yy3 | diffstat //统计diff信息
yy2/a1.txt|only
yy2/mycopy.cpio|only
yy3/a1.txt~| 4++++
yy3/a3.txt|only
yy3/alsaunmute|only
yy3/anaconda-ks.cfg |only
6 files changed,4 insertions(+)
[root@localhost ~]#
运行指令“diff Desktop/yy1/yy2 Desktop/yy1/yy3 | diffstat”显示 diff 指令的统计信息。
范例275 使用-l显示diff指令的统计信息。
[root@localhost ~]# diff Desktop/yy1/yy2 Desktop/yy1/yy3 | diffstat–l //统计diff信息
yy2/a1.txt
yy2/mycopy.cpio
yy3/a1.txt~
yy3/a3.txt
yy3/alsaunmute
yy3/anaconda-ks.cfg
[root@localhost ~]#
运行指令“diff Desktop/yy1/yy2 Desktop/yy1/yy3 | diffstat -l”显示 diff 指令的统计信息。
注意:参数的位置。
实战思考
应用思考
使用-n显示diff指令的统计信息。
学习目标 能使用 dump 指令对文件进行存档
语法 dump 必要参数[-可选参数]目录或者文件系统
功能说明 dump 指令可将指定目录或文件系统备份到指定的设备,或者将指定目录或文件系统备份成一个大文件。这些文件可被复制到指定的硬盘、磁带或别的存储介质。
参数说明 必要参数及其说明如下:

选择性参数及其说明如下:

基础应用
范例276 使用-0f选项建立Desktop/yy3的完全备份到磁带。
[root@localhost root]#dump -0f /dev/nst0 Desktop/yy3 //备份文件系统
运行指令“dump -0f /dev/nst0 Desktop /yy3” 建立 Desktop /yy3 的完全备份到指定的磁带。指令中“-0”参数指定备份的层级,表示完全备份;“-f”参数指定备份设备。
范例277 将文件备份到磁带。
[root@localhost root]#dump -0uf /dev/nst0 Desktop/yy3 //备份文件系统
运行指令“dump -0uf /dev//nst0 Desktop /yy3”备份 Desktop /yy3 下的内容到磁带。指令中的“-u”参数要求备份完成后将文件的层级、日期与时间等相应的信息存储到/etc/dump-dates中。
学习目标 能分辨文件的类型
语法 file [-可选参数]文件或者目录
功能说明 file 指令是对文件进行辨别分类的,有 3 种类型的设定:文件系统测试、魔法数字测试和语言测试。如果第一个测试成功将输出文件的类型。
参数说明 可选参数及其说明如下:
基础应用
范例278 显示指定文件的类型。
[root@localhost yy1]# file yy3/a3.txt //显示指定路径下文件类型
a3.txt: ASCII text
[root@localhost yy1]#
运行指令“file yy3/a3.txt”显示当前指定文件的类型。
范例279 显示当前文件夹下文件的类型。
[root@localhost yy1]# file * //显示当前文件夹下文件的类型
a1.txt~: ASCII text
a3.txt: ASCII text
a3.txt~: ASCII text
alsaunmute: ELF 32-bit LSB executable.Intel 80386.version 1 (SYSV).for GNU Linux
2.6.9.dynamically linked (uses shared libs).for GNU Linux 2.6.9 stripped
anaconda-ks.cfg: ASCII English text
mycopy.cpio: cpio archive
yy2: directory
yy3: directory
[root@localhost yy1]#
运行指令“file *”显示当前文件夹下文件或目录的类型,如本例所示。
范例280 使用-F显示当前文件夹下文件的类型。
[root@localhost yy1]# file–F @ * //显示当前文件夹下文件的类型
a1.txt~@ ASCII text
a3.txt@ ASCII text
a3.txt~@ ASCII text
alsaunmute@ ELF 32-bit LSB executable.Intel 80386.version 1 (SYSV).for GNU Linux
2.6.9.dynamically linked (uses shared libs).for GNU Linux 2.6.9 stripped
anaconda-ks.cfg@ ASCII English text
mycopy.cpio@ cpio archive
yy2@ directory
yy3@ directory
[root@localhost yy1]#
运行指令“file–F @*”显示当前文件夹下文件或目录的类型,如本例所示。
实战思考
应用思考
1.运行指令“file–b *”显示当前文件夹下文件或目录的类型,不显示文件或目录名。
2.运行指令“file–n *”对比它与指令“file *”的差异,想想为什么。
3.运行指令“file–F *”显示当前文件夹下文件或目录的类型,看看在未输入隔离符的情况下输出的结果。
学习目标 熟悉 find 指令查找目录或者文件
语法 find [路径] [-可选参数]
功能说明 find 指令用于查找符合条件的文件,并做出相应的处理。
参数说明 可选参数及其说明如下:


基础应用
范例281 查找后缀为.txt的文件。
[root@localhost yy1]# ls /root/Desktop/yy1/ -l //显示文件列表
total 80
-rw-r--r-- 1 root root 118 2008-12-02 a3.txt
-rwxr-xr-x 1 root root 18872 2008-05-25 alsaunmute
-rw------- 1 root root 1822 2008-12-01 anaconda-ks.cfg
-rw-r--r-- 1 root root 512 2008-11-29 mycopy.cpio
drwxr-xr-x 2 rootroot 4096 01-01 19:04 yy2
drwxr-xr-x 2 rootroot 4096 01-01 19:04 yy3
[root@localhost yy1]# find *.txt //查找.txt 的文件
a3.txt
[root@localhost yy1]#
运行指令“find *.txt”查找当前目录下后缀为.txt 的文件。
范例282 查找当前目录下指定时间内被修改过的文件。
[root@localhost ~]# find /root/Desktop/yy1/ -ctime -2 //查找 48 小时内被修改过的文件
。
。/anaconda-ks.cfg
./yy3
./yy3/anaconda-ks.cfg~
./yy3/a1.txt
./yy3/a3.txt
./yy3/alsaunmute
./mycopy.cpio~
./a1.txt
./a3.txt~
./a3.txt
./yy2
./yy2/a1.txt
./yy2/mycopy.cpio~
./yy2/a1.txt
./alsaunmute
[root@localhost ~]#
运行指令“find /root/Desktop/yy1/ -ctime -2”查找指定文件夹下面 48 小时之内修改过的文件,如果未指定目录,从当前目录中查找。
范例283 按照目录或文件的权限来查找文件。
[root@localhost ~]# ls /root/Desktop/yy1/ -l //显示文件列表
total 80
-rw-r--r-- 1 root root 83 01-01 18:15 a1.txt
-rw-r--r-- 1 root root 118 2008-12-02 a3.txt~
-rw-r--r-- 1 root root 119 2008-12-02 a3.txt
-rwxr-xr-x 1 root root 18872 2008-05-25 alsaunmute
-rw------- 1 root root 1822 2008-12-01 anaconda-ks.cfg
-rw-r--r-- 1 root root 512 2008-11-29 mycopy.cpio
drwxr-xr-x 2 root root 4096 01-01 19:04 yy2
drwxr-xr-x 2 root root 4096 01-01 19:04 yy3
[root@localhost~]# find /root/Desktop/yy1/ -perm 644 //查找具有指定权限值的文件~
/root/Desktop/yy1/yy3/a1.txt
/rot/Desktop/yy1/yy3/a3.txt
/root/Desktop/yy1/mycopy.cpio~
/root/Desktop/yy1/a1.txt
/root/Desktop/yy1/a3.txt~
/root/Desktop/yy1/a3.txt
/root/Desktop/yy1/yy2/a1.txt
/root/Desktop/yy1/yy2/mycopy.cpio~
/root/Desktop/yy1/yy2/a1.txt
[root@localhost~]# find /root/Desktop/yy1/ -perm 755//查找具有指定权限值的文件
/root/Desktop/yy1/
/rot/Desktop/yy1/yy3
/root/Desktop/yy1/yy3/alsaunmute
/root/Desktop/yy1/yy2
/root/Desktop/yy1/yy2/ alsaunmute
[root@localhost ~]#
运行指令“ls /root/Desktop/yy1/ -l”显示文件夹 yy1 下的文件和目录,同时显示 yy1 主目录下文件的属性。再运行指令“find /root/Desktop/yy1/ -perm 644”查找目录 yy1 下权限值为644,即属性为 rw-r--r--的文件,运行指令“find /root/Desktop/yy1/ -perm 755”查找目录 yy1下权限值为755,即属性为rwxr-xr-x的文件和目录,并将结果输出到标准输出。
范例284 查找字节数为空的文件和空目录。
[root@localhost yy1]# ls /root/Desktop/yy1/ -l //显示文件列表
total 92
-rw-r--r-- 1 root root 83 01-01 18:15 a1.txt
-rw-r--r-- 1 root root 118 2008-12-02 a3.txt~
-rw-r--r-- 1 root root 119 2008-12-02 a3.txt~
-rw------- 1 root root 0 01-02 06:44 a3.txt
-rwxr-xr-x 1 root root 18872 2008-05-25 alsaunmute
-rw------- 1 root root 1822 2008-12-01 anaconda-ks.cfg
-rw-r--r-- 1 root root 512 2008-11-29 mycopy.cpio
drwxr-xr-x 2 root root 4096 01-02 06:46 yy
drwxr-xr-x 2 root root 4096 01-01 19:04 yy2
drwxr-xr-x 2 root root 4096 01-01 19:04 yy3
[root@localhost yy1]#find–empty //查找空文件和目录
./yy
./aa.txt
[root@localhost yy1]#
运行指令“find -empty”,查找当前目录中字节数为零的空文件和空目录,并输出到标准输出。
范例285 按字符串格式在目录中查找文件或目录。
[root@localhost yy1]#find -name yy //查找指定字符串类型的目录
./yy
[root@localhost yy1]#find -name yy.* //查找指定字符串类型的文件
./yy.txt
[root@localhost yy1]#find -name mycopy.* //查找指定字符串类型的文件
./mycopy.cpio
./yy2/mycopy.cpio
[root@localhost yy1]#
运行指令“find -name yy”时,给出的字符串是没有后缀的,查找的结果是空目录。运行指令“find -name yy.*”时,查找完成后输出的是当前目录下以 yy 命名的文件 yy.txt。运行指令“find -name mycopy.*”时,输出结果是当前目录和当前目录下的子目录中与输入字符串同名的文件。
范例286 查找符合字节数的文件或目录。
[root@localhost yy1]# ls /root/Desktop/yy1/ -l //显示文件列表
total 92
-rw-r--r-- 1 root root 83 01-01 18:15 a1.txt
-rw-r--r-- 1 root root 118 2008-12-02 a3.txt~
-rw-r--r-- 1 root root 119 2008-12-02 a3.txt~
-rw------- 1 root root 0 01-02 06:44 a3.txt
-rw------- 1 root root 0 01-02 06:44 yy.txt
-rwxr-xr-x 1 root root 18872 2008-05-25 alsaunmute
-rw------- 1 root root 1822 2008-12-01 anaconda-ks.cfg
-rw-r--r-- 1 root root 512 2008-11-29 mycopy.cpio
drwxr-xr-x 2 root root 4096 01-02 06:46 yy
drwxr-xr-x 2 root root 4096 01-01 19:04 yy2
drwxr-xr-x 2 root root 4096 01-01 19:04 yy3
[root@localhost yy1]#find–size 0 //查找文件
./yy.txt
./a1.txt
[root@localhost yy1]#
运行指令“find -size 0”,查找指定字节数为零的文件。与-empty 指令有相似的地方,当使用-size指令时不查找子目录。
实战思考
应用思考
1.使用-exec参数查找到指定文件类型时,即当find的返回值为真时执行-exec指定的指令。
2.使用指令“find -nogroup–nouser”查找文件系统中不属于任何用户和群组的目录或文件。
3.使用-type 指定要查找文件的类型,相关类型参数有:b-块设备;c-字符设备;d-目录;f-普通文件;l-符号链接;p-管道;s-socket。
学习目标 学会通过列表或用户 ID 查找文件系统的方法
语法 findfs [LABEL=卷标][UUID=uuid][选择性参数]
功能说明 指令findfs通过卷标或者uuid查找文件系统,找到的设备名将输出到标准输出。
参数说明 选择性参数的具体说明如下:

内建指令
fsck
基础应用
范例287 通过卷标名称查找文件系统。
[root@localhost~]# findfs LABEL=/ //通过卷标名称查找文件系统
/dev/sda3
[root@localhost~]# findfs LABEL=/boot //通过卷标名称查找文件系统
/dev/sda1
[root@localhost~]#
本例使用指令“findfs LABEL=/”查找卷标名为“/”的文件系统,然后使用指令“findfs LABEL=/boot”查找卷标名为“/boot”的文件系统。
学习目标 了解 fsck 指令检查文件系统并修复分区错误的方法
语法 fsck [-可选参数]文件系统/设备
功能说明 fsck 指令用于检测并修复出错的文件系统,操作对象可以是设备名,例如/dev/hdc1;可以是挂载点,例如/、/usr、/home;可以是 ext2 label,例如 LABEL=/root;还可以是UUID,例如UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd。
当文件系统发生错误时,可用fsck指令尝试加以修复。
参数说明 可选参数及其说明如下:

基础应用
范例288 检查当前文件系统。
[root@localhost ~]# fsck //检查文件系统
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/VolGroupoo /LogVoloo is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? no //用户输入
check aborted.
e2fsck 1.39 (29-May-2006)
/dev/hda1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? no //用户输入
[root@localhost ~]#
执行指令“fsck”检查当前文件系统询问用户确认的决定处理方式。
学习目标 当 ext2 文件系统发生错误时,能用 fsck.ext2 指令对其加以修复
语法 fsck.ext2 [-可选参数]文件系统/设备
功能说明 fsck.ext2 指令是针对 ext2 文件系统的检查程序。
参数说明 可选参数及其说明如下:

基础应用
范例289 检测指定磁盘。
[root@localhost ~]# fsck.ext2 /dev/fd1 //检测/dev/fd1
执行指令“fsck.ext2 /dev/fd1”检测磁盘/dev/fd1。
学习目标 使用 fsck.ext3 指令检查 ext3 文件系统是否有错误,如果有进行修复
语法 fsck.ext3 [-可选参数]设备代号
功能说明 当 ext3 文件系统发生错误时,对 ext3 型文件系统进行检测并加以修复
参数说明 可选参数及其说明如下:

基础应用
范例290 检测磁盘。
[root@localhost ~]# fsck.ext3 /dev/fd0 //检测磁盘
运行指令“fsck.ext3 /dev/fd0”检测磁盘/dev/fd0。
学习目标 使用 fsck.minix 指令检查文件系统是否有错误,如果有进行修复
语法 fsck.minix [-可选参数]设备号
功能说明 fsck.minix 指令针对 Linux MINIX 文件系统进行磁盘检测。
参数说明 可选参数及其说明如下:

在 Linux 系统中,硬盘组织方式分为引导区、超级块(superblock)、索引结点(inode)、数据块(datablock)和目录块(diredtory block)。其中超级块(superblock)包含了关于该硬盘或分区上的文件系统的整体信息,例如文件系统的大小、磁盘的几何尺寸、可用空间容量等,同时还记录了第一个索引结点(inode)位置;索引结点包含了针对某一个具体文件的几乎全部信息,如文件的存取权限、拥有者、文件的大小、建立时间以及对应的目录块和数据块等,但不包含文件名;数据块存储文件的真实内容;目录块里包含文件名以及此文件的索引结点编号。
基础应用
范例291 检测磁盘。
[root@localhost ~]# fsck.minix /dev/hda1 //检测/dev/hda1
运行指令“fsck.minix /dev/ hda1”检测磁盘/dev/hda1。
学习目标 能使用 ftp 指令建立 ftp 服务器连接
语法 ftp [-可选参数] [主机名称/IP 地址]
功能说明 ftp 指令是 ARPANET 标准文件传输协议的用户接口。用户可以使用 ftp 指令连接到另一台计算机上,从而实现本地机与远程机之间的文件传输。
参数说明 可选参数及其说明如下:

【ftp内部指令】
![cmmand] [args]:在本地机调用交互 Shell 执行本地指令。
$ macro-ame[args]:执行 macro-name 宏定义。
ascii:使用 ascii 传输模式。
binary:使用二进制文件传输模式。
bye:结束 ftp。
cd:切换到远端 ftp 服务器的目录上。
cd remote-directory:进入远程主机目录。
cdup:切换远程主机目录到上一层目录。
chmod mode file-name:将远程主机文件 file-name 设置为 mode。
close:在不结束 ftp 进程的情况下,中止与 ftp 服务器的会话。
delete emote-file:删除远端 ftp 主机上的文件。
get remote-file [local-file]:从远程主机上下载文件remote-file到本地硬盘的local-file。
idle [seconds]:设置远程服务器的休眠计时器为[seconds]秒。
lcd [directory]:切换本地目录到[directory]。
ls [remote- directory] [local-file]:显示远程目录 remote- directory 下文件列表,并存入本地文件local-file。
mdelete [remote- file]:删除远程主机上的文件。
mget remote- file:下载文件。
mkdir directory-name:在远程主机上建立文件夹。
modtime file-name:显示远程主机文件的最后修改时间。
mput local-file:上传多个文件到远程主机。
newer file-name:从远程主机下载时检测是不是新文件,是则重新下载。
open host [port]:建立 ftp 连接,建立时可指定连接端口。
put local-file[remote-file]:将本地文件 local-file 上传到远程主机。
pwd:显示远程主机上的当前目录。
quit:退出 ftp。
size file-name:显示远程主机上文件 file-name 的大小。
status:显示当前 ftp 的状态。
system:显示远程主机上操作系统的类型。
.? [cmd]:同 help。
基础应用
范例292 建立ftp连接,然后对远程目录进行操作。
[root@localhost ~]# ftp 192.168.168.1 //使用IP地址建立ftp连接
Connected to 192.168.168.1
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.168.1:root): sy114 //输入用户名
331 Please specify the password.
Password: ******** //输入密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls /home/sy sy //成功建立FTP连接后,显示指定远程目录下文件才存入本地主机下指定文件
227 Entering Passive Mode (192,168,168,1,7,120)
150 Here comes the directory listing.
drwxrwxrwx 5 0 0 512 Mar 21 12:07诉讼
drwxr-xr-x 3 1020 1020 1102 Mar 25 12:55 vc
drwxr-xr-x 2 1020 1020 512 Mar 18 19:32学习
drwxr-xr-x 2 1020 1020 512 Mar 21 21:16资料
drwxr-xr-x 2 1020 1020 512 Mar 21 22:02科技
226 Directory send OK. //目录列单成功
ftp> bye //结束ftp连接
221 Goodbye.
首先执行ftp指令,与远程主机建立FTP连接,然后使用FTP的内部命令显示指定目录的内容。在指令中我们使用IP地址来建立FTP连接,如果不知道远程主机的IP使用主机名同样可以实现连接。使用不同版本显示略有不同。
范例293 使用FTP内部命令上传、下载文件。
[root@localhost ~]# ftp 192.168.168.1 //使用IP地址建立ftp连接
Connected to 192.168.168.1
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.168.1:root): sy114 //输入用户名
331 Please specify the password.
Password: ******** //输入密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls //显示当前目录
227 Entering Passive Mode (192,168,168,1,7,120)
150 Here comes the directory listing.
drwxrwxrwx 5 0 0 512 Mar 21 12:07诉讼
drwxr-xr-x 3 1020 1020 512 Mar 25 12:55 vc
drwxr-xr-x 2 1020 1020 512 Mar 18 19:32学习
drwxr-xr-x 2 1020 1020 512 Mar 21 21:16资料
drwxr-xr-x 2 1020 1020 512 Mar 21 22:02科技
226 Directory send OK.
ftp> get vc //从远程主机下载文件vc
local: vc remote: vc
227 Entering Passive Mode (192,168,168,1,7,121)
150 Opening BINARY mode data connection for vc (512 Bytes).
226 file send OK.
512 bytes received in 1.7e-05 secs (2.1e+05 Kbytes/s)
ftp> !ls //显示本地目录
anaconda-ks.cfg Desktop install.log vc a1
ftp> put a1 //上传文件a1
local: a1 remote: a1
227 Entering Passive Mode (192,168,168,1,7,138)
150 Opening BINARY mode data connection for a1.
226 Ok to send data.
512 bytes sent in 1.7e-05 secs (2.1e+05 Kbytes/s)
ftp> bye //结束ftp连接
221 Goodbye
在建立FTP连接后,使用get和put指令实现文件的上传和下载。
范例294 删除文件。
[root@localhost ~]# ftp 192.168.168.1 //使用IP地址建立ftp连接
Connected to 192.168.168.1
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.168.1:root): sy114 //输入用户名
331 Please specify the password.
Password: ******** //输入密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls //显示当前目录
227 Entering Passive Mode (192,168,168,1,7,120)
150 Here comes the directory listing.
drwxrwxrwx 5 0 0 512 Mar 21 12:07诉讼
drwxr-xr-x 3 1020 1020 512 Mar 25 12:55 vc
drwxr-xr-x 2 1020 1020 512 Mar 18 19:32学习
drwxr-xr-x 2 1020 1020 512 Mar 21 21:16资料
drwxr-xr-x 2 1020 1020 512 Mar 21 22:02科技
226 Directory send OK.
ftp> delete vc //删除文件vc
250 DELE command successful.
227 Entering Passive Mode (192,168,168,1,7,120)
150 Here comes the directory listing.
drwxrwxrwx 5 0 0 512 Mar 21 12:07诉讼
drwxr-xr-x 2 1020 1020 512 Mar 18 19:32学习
drwxr-xr-x 2 1020 1020 512 Mar 21 21:16资料
drwxr-xr-x 2 1020 1020 512 Mar 21 22:02科技
226 Directory send OK.
ftp> bye
221 Goodbye
实战思考
应用思考
尝试用主机名称登录,然后实现文件的上传、下载和远程目录的删除。
学习目标 能使用 gunzip 指令解压文件扩展名为“.gz”的文件
语法 gunzip [-可选参数] [文件/目录]
功能说明 gunzip 指令用来解压被 gzip 指令压缩过的文件,与 gunzip 的功能与 gzip–b 指令的执行效果相同。
参数说明 可选参数及其说明如下:

基础应用
范例295 解压文件。
[root@localhost yy]#gunzip yy.txt.gz //解压文件
[root@localhost yy]#
运行指令“gunzip yy.txt.gz”解压文件 yy.txt.gz。
范例296 解压文件,同时显示文件的相关信息。
[root@localhost yy]#gunzip -l yy.txt.gz//解压文件
Compressed uncompressed ratio uncompressed_name
36 9 -22.2% yy.txt
[root@localhost yy]#
运行指令“gunzip -l yy.txt.gz”解压文件 yy.txt.gz,同时显示文件的大小、压缩率。
实战思考
应用思考
1.尝试把以上 gunzip 命令中的相关参数加到指令“gzip -d”后,比较两个命令的执行效果。
2.使用递归方式对子目录下的文件进行解压。
学习目标 能使用 gzexe 指令对可执行文件进行压缩
语法 gzexe [-可选参数] [可执行文件]
功能说明 gzexe 是对可执行文件进行压缩的指令,当对压缩后的可执行文件进行执行时,文件先自动解压然后执行。
参数说明 可选参数及其说明如下:

基础应用
范例297 压缩可执行文件。
[root@localhost ~]#gzexe ass //压缩可执行文件
运行指令“gzexe ass”压缩可执行文件。
学习目标 能使用 gzip 指令压缩和解压文件
语法 gzip [-可选参数] [文件/目录]
功能说明 gzip指令是 Linux系统里经常使用的压缩文件命令,使用 gzip指令可以对文件进行压缩和解压。
参数说明 必要参数的具体说明如下:

指定的数值越大,压缩效率越高
基础应用
范例298 压缩指定文件。
[root@localhost yy]# ls //列出目录下的文件和子目录
a1.txt a2.txt yy.txt
[root@localhost yy]#gzip yy.txt //压缩文件
[root@localhost yy]# ls //列出目录下的文件和子目录
a1.txt a2.txt yy.txt.gz
[root@localhost yy]#
运行指令“gzip yy.txt”对指定文件 yy.txt 进行压缩,执行结束后,查看目录发现源文件yy.txt被文件yy.txt.gz代替。
范例299 压缩目录下所有文件。
[root@localhost yy]# ls //列出目录下的文件和子目录
a1.txt a2.txt yy1 yy.txt
[root@localhost yy]# gzip * //压缩文件
gzip:yy1 is a directory -- ignored
[root@localhost yy]# ls //列出目录下的文件和子目录
a1.txt.gz a2.txt.gz yy1 yy.txt.gz
[root@localhost yy]#
运行指令“gzip *”对目录下所有文件进行压缩。
范例300 压缩文件,同时显示详细信息。
[root@localhost yy]#gzip -v yy.txt //压缩文件
yy.txt: -22.2% -- replaced with yy.txt.gz
运行指令“gzip -v yy.txt”对指定文件进行压缩,同时显示详细信息。
范例301 解压文件。
[root@localhost yy]# ls //列出目录下的文件和子目录
a1.txt.gz a2.txt.gz yy.txt.gz
[root@localhost yy]# gzip -d yy.txt.gz //解压缩指定文件
[root@localhost yy]# ls //列出目录下的文件和子目录
a1.txt.gz a2.txt.gz yy.txt
[root@localhost yy]# gzip -d * //解压缩所有压缩文件
gzip: yy.txt: unknown suffix -- ignored
a1.txt a2.txt yy.txt
[root@localhost yy]#
分别运行指令“gzip -d yy.txt”和“gzip–d *”对文件进行压缩,结果显示如上。
范例302 解压文件,同时显示详细信息。
[root@localhost yy]# gzip–d–v yy.txt.gz //压缩文件
yy.txt.gz: -22.2% -- replaced with yy.txt
[root@localhost yy]#
运行指令“gzip -d–v yy.txt”对文件进行压缩,同时显示详细信息。
实战思考
应用思考
使用参数“-c”对文件进行压缩和解压查看指令执行结果。
学习目标 能使用 indent 指令对 C 原始代码文件的格式进行调整
语法 indent [-可选参数]源文件[-o 目标文件]
功能说明 indent 指令主要用于对 C 语言书写的代码进行格式化,使程序更易于阅读。
参数说明 可选参数及其说明如下:


基础应用
范例303 使用 GNU 风格处理 C 文件。
[root@localhost yy]# cat sum.c
#include <stdio.h>
void main (void)
{
int add1,add2,sum;
add1=12;add2=13;
sum=add1+add2;
}
[root@localhost yy]# indent sum.c //使用GNU格式来处理C文件
[root@localhost yy]# cat sum.c
#include <stdio.h>
void
main (void)
{
int add1, add2, sum;
add1 = 12;
add2 = 13;
sum = add1 + add2;
}
运行指令“indent sum.c”对 C 文件进行处理,因 indent 指令的预设值为 GNU 风格,所以该指令以GNU风格处理文件sum.c。
范例304 处理C文件后直接输出到标准输出。
[root@localhost yy]# cat sum.c
#include <stdio.h>
void main (void)
{
int add1,add2,sum;
add1=12;add2=13;
sum=add1+add2;
}
[root@localhost yy]# indent–st sum.c //使用GNU格式来处理C文件,同时输出
#include <stdio.h>
void
main (void)
{
int add1, add2, sum;
add1 = 12;
add2 = 13;
sum = add1 + add2;
}
运行指令“indent–st sum.c” 使用 GNU 格式来处理 C 文件,同时输出处理后的文件到标准输出。
范例305 处理C遇见逗号换行。
[root@localhost yy]# cat sum.c
#include <stdio.h>
#include <stdio.h>
void
main (void)
{
int add1, add2, sum;
add1 = 12;
add2 = 13;
sum = add1 + add2;
}
[root@localhost yy]# indent–bc–st sum.c //遇见逗号换行
#include <stdio.h>
void
main (void)
{
int add1,
add2,
sum;
add1 = 12;
add2 = 13;
sum = add1 + add2;
}
运行指令“indent–bc–st sum.c” 使用 GNU 格式来处理 C 文件,在遇见逗号时换行,同时输出处理后的文件到标准输出。
实战思考
应用思考
运用参数列表中讲到的参数对C文件的注释进行处理,熟悉indent指令的应用。
学习目标 能使用 less 指令显示文本
语法 less [-参数]文件名
功能说明 less 指令功能与 more 指令类似,都是按页显示文件,两者的不同之处在于前者可以按键实现文件的翻页,即允许用户对文件进行前后翻阅。
参数说明 可选参数及其说明如下:

【less内部指令】
b:向后翻一页;
d:向后翻半页;
h:显示帮助界面;
Q:退出 less 指令;
u:向前滚动半页;
y:向前滚动一行;
回车键:滚动一行;
空格键:滚动一页。
基础应用
范例306 显示文件。
[root@localhost yy]# less yy.txt
运行指令“less yy.txt”,弹出窗口显示文件如下。
Since Aug.10, when a ban on most carry-on liquids sent the amount of checked luggage soaring, airlines have been misplacing many more bags, and the fumbling could well escalate during the busy holiday travel season.
Since Aug.10, when a ban on most carry-on liquids sent the amount of checked luggage soaring, airlines have been misplacing many more bags, and the fumbling could well escalate during the busy holiday travel season.
Since Aug.10, when a ban on most carry-on liquids sent the amount of checked luggage soaring, airlines have been misplacing many more bags, and the fumbling could well escalate during the busy holiday travel season.
Since Aug.10, when a ban on most carry-on liquids sent the amount of checked luggage soaring, airlines have been misplacing many more bags, and the fumbling could well escalate during the busy holiday travel season.
Since Aug.10, when a ban on most carry-on liquids sent the amount of checked luggage soaring, airlines have been misplacing many more bags, and the fumbling could well escalate during the busy holiday travel season.
yy.txt(end)
按快捷键“q”退出显示窗口,如果文件比较大一页不能完全显示,可通过按键实现翻阅。当当前页为文件末页时,在显示窗口出现end。
实战思考
应用思考
想想使用less指令如何实现对ls指令列出文件列表的翻阅。
学习目标 能使用 lha 指令对文件进行压缩或解压
语法 lha 必要参数[选择性参数] [压缩文件] [文件]
功能说明 lha 指令是从 lharc 指令演变而来的压缩程序,指令执行后生成扩展名为“.lzh”的压缩文件。
参数说明 必要参数及其说明如下:

基础应用
范例307 压缩文件,同时将压缩后的文件保存到指定目录。
[root@localhost yy]# lha -a sss yy.txt
运行指令“lha -a sss yy.txt”,对文件yy.txt进行压缩,然后保存到文件名为sss的压缩文件中。
范例308 对文件解压。
[root@localhost yy]# lha -xi sss
运行指令“lha -xi sss”,对文件 sss 进行解压,同时保存到当前目录。
范例309 对文件解压,保存到指定目录。
[root@localhost yy]# lha–xw=yy1 sss
运行指令“lha–xw=yy1 sss”,对文件 sss 进行解压,同时保存到指定目录中。
实战思考
应用思考
1.使用lha指令对指定目录下的文件进行压缩。
2.将范例中参数“x”换成参数“e”,运行指令查看结果。
学习目标 能使用 ln 指令对文件或目录进行链接
语法 ln [-可选参数]源文件/目录 目标文件/目录
功能说明 ln 指令对文件或目录进行链接。如果同时指定多个文件或目录,且目标目录存在的情况下,指定的多个文件和目录将被复制到指令中给出的目标目录中;如果目标目录不存在,则显示错误信息。ln指令的链接形式可分为硬链接和软链接,其中软链接又叫符号链接。软链接类似于快捷方式,给出的是指向源文件的路径,相当于一个文件指针;硬链接创建的是一个和源文件相同的inode,但两个文件指向的是同一个数据块,即在磁盘上只存在一份数据,这一点和文件复制不同。ln指令的默认为创建硬链接。
参数说明 可选参数及其说明如下:

基础应用
范例310 创建硬链接。
[root@localhost yy]# ls
anaconda-ks.cfg file hello.c hello.c~ yy1 yy.txt yy.txt~
[root@localhost yy]# cat yy.txt
Hello yy
[root@localhost yy]# cd yy1
[root@localhost yy1]# ls yy1
yy.txt
[root@localhost yy1]# cd /root/Desktop/yy
[root@localhost yy]# ln yy yy1/ff //建立硬链接
[root@localhost yy1]# ls yy1
ff yy.txt
[root@localhost yy1]# cat ff
Hello yy
[root@localhost yy1]#
运行指令“ln yy yy1/ff”在已存在的目录 yy1 下创建文件 yy 的链接文件,ff 就是指定的链接文件,它和源文件yy同时指向磁盘上的同一数据块实现文件链接。
范例311 建立软链接。
[root@localhost yy]# ln–s yy ff //建立软链接
运行指令“ln–s yy ff”为文件 yy.txt 建立软链接。
实战思考
应用思考
尝试对已经建立的链接文件中之前的链接进行删除或覆盖。
学习目标 学会使用 locate 指令查找文件
语法 locate [-可选参数]范本样式
功能说明 locate 指令用于查找符合范本样式的文件或目录。与 find 指令相比,locate指令从数据库中查找文件要快,但locate指令无法对于新增的或已删除的文件进行分辨。
参数说明 可选参数及其说明如下:

基础应用
范例312 查找指定文件。
[root@localhost ~]# locate yy.txt //查找文件yy.txt
/root/Desktop/yy.txt~
/root/Desktop/yy/yy.txt
/root/Desktop/yy/yy.txt~
/root/Desktop/yy/yy1/yy.txt
[root@localhost ~]#
运行指令“locate yy.txt”查找文件 yy.txt。
范例313 查找文件。
[root@localhost ~]# locate *.cfg //查找*.cfg文件
/root/anaconda-ks.cfg
/root/Desktop/yy/ anaconda-ks.cfg
[root@localhost ~]#
运行指令“locate *.txt”查找所有*.cfg 文件。
学习目标 了解 lpd 指令的工作原理
语法 lpd [-可选参数]
功能说明 lpd 是一个常驻的打印机监控程序,当用户使用 lpr 打印文档时,首先生成一个待打印文档并将待打印文档放置到目录/var/ spool /lpd 下,然后交由打印监控程序 lpd 进行打印。当 lpd 发现有待打印文档时,会自动生成一个派生,然后这个派生的 lpd 会自动监听打印机状态。当打印机上线后,立即将档案交付打印,同时原 lpd 监控程序继续监视是否有其他的待打印文档。使用lpd可在网络上提供远程打印服务。
参数说明 可选参数及其说明如下:

学习目标 能使用 lpq 指令查看打印机列表中未完成的工作
语法 lpq [-可选参数]
功能说明 lpq 指令是用来查看当前由 lpd 所管理的打印机队列的,通过 lpd 查看打印文件,可显示指定任务的状态或指定用户的所有任务。直接使用 lpq 指令不带任何参数时,显示的是队列中的直接使用指令,不加进项参数,可查看默认打印机的打印队列情况。lpq 是缓冲队列检查命令,不带任何参数的lpq命令显示现在队列中的任何作业。lpq命令的显示结果中一个重要的信息就是作业标识号(作业 ID),它标识一个特定的作业。如果用户想取消一个挂起的作业,就必须在命令中指定这个标识号。
参数说明 可选参数及其说明如下:

基础应用
范例314 查看打印列表。
[root@localhost ~]# lpq //查看打印列表
lp is ready and printing
Rank Owner Job Files Total Size
active tom 21 /Desktop/yy/yy.txt 88 bytes
2nd mary 22 ...167288 byte
[root@localhost ~]#
运行指令“lpq”显示 lp 列表中的所有工作,范例中显示的一共有两个任务,第一个是由使用者 tom 传送的,任务的作业代码为“21”,在这里每一个任务都有唯一的作业代码,每个作业代码里面的文件可以有多个,这是在lpr指令传送时决定的。在当前激活(active)的作业代码中仅有yy.txt一个文件。第二个是由使用者mary传送的,作业代码为21,因文件太长用…代替,后面为文件的字节大小。
范例315 查看指定打印机的打印列表。
[root@localhost ~]#lpq–P hp1208 //查看打印列表
Hp1208 is ready and printing //指定打印机
Rank Owner Job Files Total Size
active mary 9 (standard input) 166 bytes //从标准设备输入
[root@localhost ~]#
运行指令“lpq–P hp1208”显示指定打印机列表中的所有工作,在输出任务中当打印机未准备好时,第一项的active显示为1st。
范例316 查看打印列表的所有信息。
[root@localhost ~]#lpq–l //查看打印列表中的所有信息
tom: 1st[job021rose]
/Desktop/yy/yy.txt 88 bytes
mary: 2nd[job022rose]
(standard input) 166 bytes
[root@localhost ~]#
运行指令“lpq–l”显示打印列表的所有信息。
实战思考
应用思考
使用lpq指令分别查看指定用户的全部任务和指定任务的工作状态。
学习目标 能使用 lpr 指令输入待打印文件
语法 lpr [ -可选参数] [文件名]
功能说明 使用 lpr 指令可将档案或从标准设备输入的文件送到打印机队列中,然后交由打印机管理程序lpd对对列中的文件进行处理。lpr还可实现远程打印。
参数说明 可选参数及其说明如下:

基础应用
范例317 输入打印文件。
[root@localhost ~]#lpr /Desktop/yy/yy.txt //输入单个文件
运行指令“lpr /Desktop/yy/yy.txt”将文件 yy.txt 传送到打印队列中。
范例318 同时输入多个待打印文件。
[root@localhost ~]#lpr /Desktop/yy/yy.txt /Desktop/yy/yy1.txt //输入单个文件
运行指令“lpr /Desktop/yy/yy.txt /Desktop/yy/yy1.txt”将文件 yy.txt 和文件 yy1.txt 传送到打印队列中,这种情况下文件yy.txt和文件yy1.txt拥有相同的作业代码。
范例319 打印标准输入读入的文件。
[root@localhost ~]#ls–l | lpr //从标准输入读入文件
运行指令“ls–l | lpr”,将 ls 指令所列出的所有文件作为打印输入。一般情况下,当 lpr指令没有指定任何文件时,lpr将从标准输入读入文件传送到打印列表。
实战思考
应用思考
运行指令“cat filename | lpr”实现文件打印,比较指令与“ls–l | lpr”找到二者的共同之处,在给出命令的lpr后面分别加入参数“打印机名”、“打印页数”、“文件名”比较执行结果。
学习目标 能使用 lprm 指令删除打印任务
语法 lprm [-可选参数]
功能说明 lprm 指令可从打印列表中删除未完成的打印任务,因为每一个打印机都有一个独立的打印队列,所以在使用 lprm 对任务进行删除时,可用 -P 参数指定打印机,如不指定则使用系统预设。
参数说明 可选参数及其说明如下:

基础应用
范例320 删除当前任务。
[root@localhost ~]#lprm //删除任务
运行指令“lprm”,因指令中未指定打印机、作业代码和用户名,在指令执行时如果是超级用户,将删除任何当前正在处理的任务;如果不是超级用户,lprm将删除属于本用户的,且当前默认打印机正在处理的任务。
范例321 删除用户所有任务。
[root@localhost ~]#lprm - //删除用户所有任务
运行指令“lprm -”,删除默认打印机所有属于用户的任务。
实战思考
应用思考
分别以超级用户和非超级用户登录系统,运行指令“lprm–P printer”,查看执行后的打印机队列看看有否区别,想想为什么。
学习目标 能使用 lsattr 指令查看文件属性
语法 lsattr [-可选参数] [文件/目录…]
功能说明 lsattr 指令可以显示文件的属性。
参数说明 可选参数及其说明如下:

基础应用
范例322 显示文件属性。
[root@localhost yy]# lsattr //显示文件属性
------------- ./hello.c~
------------- ./hello.c
------------- ./yy.txt~
------------- ./yy.txt
------------- ./yy1
------------- ./anaconda-ks.cfg
------------- ./file
[root@localhost yy]#
运行指令“lsattr”显示当前文件夹下的文件属性。
实战思考
应用思考
运用指令chattr更改文件属性,然后用lsattr查看更改结果。
学习目标 能应用 mattrib 指令对 MS-DOS 文件的属性进行修改
语法 mattrib[可选参数][文件]
功能说明 用户使用 mattrib 指令可以对指定的 MS-DOS 文件的属性进行修改,增加文件属性用“+”,删除文件属性用“-”。mattrib指令为mtools工具指令,相当于MS-DOS的attrib指令。
参数说明 必要参数的具体说明如下:

基础应用
范例323 设置MS-DOS文件的系统属性。
[root@localhost ~]# mattrib +s filename
运行指令“mattrib +s filename”,这里的 filename 是指定的 MS-DOS 文件的文件名,执行该指令,设置指定文件filename的系统属性;同理,想要去除文件系统属性时将指令中的“+”改为“-”即可。
学习目标 能使用 mc 指令进入交互式文件管理程序
语法 mc [-可选参数] [文件]
功能说明 运行 mc 指令进入一个图形化界面的菜单式文件管理程序。
参数说明 可选参数的具体说明如下:

基础应用
范例324 进入菜单式文件管理程序。
[root@localhost ~]#mc
运行指令“mc”进入菜单式文件管理程序的图形界面,然后根据菜单的提示选项进行文件管理。
学习目标 能在 MS-DOS 与 Linux 的文件系统之间进行文件复制
语法 mcopy [-可选参数]源文件[目标文件/目录]
功能说明 mcopy 指令可复制 MS-DOS 文件到 UNIX 系统,或从 UNIX 系统复制文件到MS-DOS。mcopy指令是mtools工具指令,能根据MS-DOS磁盘驱动器代号出现的位置来判断如何复制文件。
参数说明 可选参数及其说明如下:


基础应用
范例325 复制文件。
[root@localhost ~]#mcopy dosfilname Linuxfile //复制DOS文件到Linux文件
[root@localhost ~]#mcopy Linuxfile dosfilname //复制Linux文件到DOS文件
分别运行指令“mcopy dosfilname linuixfile”和指令“mcopy linuixfile dosfilname”,实现MS-DOS与Linux之间的文件复制。指令可与以上参数列表中给出的参数根据具体情况一起使用,以实现不同的功能。
范例326 复制文件。
[root@localhost ~]#mcopy Linuxfile /Desktop/yy //复制Linux文件到指定目录下
[root@localhost ~]#mcopy dosfilname /Desktop/yy //复制DOS文件到指定目录下
分别运行指令“mcopy Linuxfile /Desktop/yy”和指令“mcopy dosfilname /Desktop/yy”,将MS-DOS或Linux文件复制到指定的文件夹。
范例327 复制文件。
[root@localhost yy]#mcopy–n dosfilname //复制 DOS 文件
运行指令“mcopy–n dosfilname”,复制 MS-DOS 文件到当前目录。
学习目标 掌握 MS-DOS 文件的删除
语法 mdel [-可选参数]文件
功能说明 mdel 指令是 mtools 工具指令,使用 mdel 指令删除 MS-DOS 文件。
参数说明 可选参数及其说明如下:

基础应用
范例328 删除MS-DOS文件。
[root@localhost ~]# mdel dosfilname //删除指定的MS-DOS文件
上面的指令中指定的是单个的MS-DOS文件dosfilname,运行指令“mdel dosfilname”就删除了这个被指定的 MS-DOS 文件 dosfilname。如果指令 mdel 后跟的不是一个文件而是多个MS-DOS文件,执行mdel指令将同时对多个指定的MS-DOS文件进行删除。
学习目标 能使用 mktemp 指令建立暂存文件
语法 mktemp [-] [可选参数]
功能说明 mktemp 指令将生成一个暂存文件,如果在指令中给出文件名,mktemp 指令根据指定的名字生成一个暂存文件。这个生成的暂存文件可供 Shell 脚本安全地使用临时文件。
参数说明 可选参数及其说明如下:

基础应用
范例329 创建一个默认的暂存文件。
[root@localhost Desktop]# mktemp
/tmp/tmp.AOHgw20256
[root@localhost Desktop]#
学习目标 能使用 more 指令显示文件信息
语法 more [-] [可选参数]文件
功能说明 与 cat 指令类似,但功能更强,可以按页显示。more 指令按页显示的基本控制键有:空格键(space)向下翻一页;“b”向上翻一页;“h”说明文件。
参数说明 可选参数及其说明如下:

基础应用
范例330 显示文件。
[root@localhost yy]# more a1.txt
Hello world
Aaaaaaaaaaaaaaaa
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
[root@localhost yy]#
运行指令“more a1.txt”显示文件 a1.txt 的内容。
范例331 显示指定文件。
[root@localhost yy]# more a1.txt a2.txt
::::::::::::::
a1.txt
::::::::::::::
Hello world
Aaaaaaaaaaaaaaaa
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
--More—(Next file: a2.txt) //显示中断出现如左侧显示的提示信息,按空格键后提示信息消失,接着显示文件a2.txt的内容,而该提示行清除不再显示
::::::::::::::
a2.txt
::::::::::::::
Hello world
Aaaaaaaaaaaaaaaa
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
[root@localhost yy]#
运行指令“more a1.txt a2.txt”,首先显示文件 a1.txt 的内容,由用户决定文件 a2.txt 的显示。在执行过程中出现的提示信息,重新显示时清除。
范例332 从指定行开始显示文件。
[root@localhost yy]# cat a1.txt
Hello world
Aaaaaaaaaaaaaaaa
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
[root@localhost yy]# more +3 a1.txt
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
[root@localhost yy]#
运行指令“more +3 a1.txt”从第三行开始显示文件内容。
实战思考
应用思考
运行指令“more–s filename”,逐页显示文件 filename 的内容,如文件有连续两行以上空白行只显示一行。
学习目标 能移动或重命名一个存在的 MS-DOS 文件或子目录
语法 mmove [-可选参数]源文件/目录 目标文件/目录
功能说明 mmove 指令是 mtools 工具指令,使用 mmvoe 指令可移动现有的 MS-DOS 文件或重命名MS-DOS文件或目录名。
参数说明 可选参数及其说明如下:

基础应用
范例333 重命名现有MS-DOS文件。
[root@localhost yy]#mmove filename tar-filename //重命名 MS-DOS 文件 filename
运行指令“mmove filename tar-filename”将 MS-DOS 文件 filename 更名为 tar-filename。
学习目标 能将 MS-DOS 文件复制到 Linux/Unix
语法 mread [-可选参数] MS-DOS 文件 Linux 文件/或目录
功能说明 mread 指令将 MS-DOS 文件复制到 Linux/UNIX,现在很少使用,一般用指令mcopy来代替。mread是mtools工具指令。
参数说明 可选参数及其说明如下:

基础应用
范例334 复制MS-DOS文件到指定目录。
[root@localhost yy]#mread dosfilename /home
运行指令“mread dosfilename /home”复制 MS-DOS 文件 dosfilename 到目录/home 下。
学习目标 能重命名 MS-DOS 文件/目录,或移动文件/目录
语法 mren [-可选参数]源文件/目录 目标文件/目录
功能说明 mren 指令是 mtools 工具指令,用来更改 MS-DOS 文件或目录名。与 MS-DOS的ren指令类似,但ren仅限于在同一设备内移动文件或目录。
参数说明 可选参数及其说明如下:

基础应用
范例335 更改MS-DOS文件名称。
[root@localhost yy]#mren dos-fname1 dos-fname2 //更改文件名称
运行指令“mren dos-fname1 dos-fname2”将 MS-DOS 文件 dos-fname1 重命名为dos-fname 2。
学习目标 能使用 mshowfat 指令显示 MS-DOS 文件的记录
语法 mshowfat 文件
功能说明 mshowfat 指令是 mtools 工具指令,用来显示 MS-DOS 文件在 FAT 的记录编号。
基础应用
范例336 显示MS-DOS文件记录。
[root@localhost ~]#mshowfat ms-dos.txt //显示 MS-DOS 文件在 FAT 的记录
运行指令“mshowfat ms-dos.txt”显示 MS-DOS 文件在 FAT 的记录编号。
学习目标 能移动或更名现有的文件或目录
语法 mv [-可选参数] 源文件 目标文件/目录
功能说明 mv 指令可以将一个源文件重命名为目标文件名,或移动源文件到指定目录。
参数说明 可选参数及其说明如下:

基础应用
范例337 将文件a2.txt重命名为sa.txt。
[root@localhost yy]# ls
a1.txt a2.txt yy1
[root@localhost yy]# cat a2.txt
Hello world
Aaaaaaaaaaaaaaaa
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
[root@localhost yy]# mv a2.txt sa.txt
[root@localhost yy]# cat a2.txt
cat: a2.txt No such file or directory
[root@localhost yy]# cat sa.txt
Hello world
Aaaaaaaaaaaaaaaa
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
[root@localhost yy]# ls
a1.txt sa.txt yy1
[root@localhost yy]#
运行指令“mv a2.txt sa.txt”将文件 a2.txt 更名为 sa.txt。
范例338 重命名同时覆盖文件。
[root@localhost yy]# ls
a1.txt sa.txt yy1
[root@localhost yy]# mv a1.txt sa.txt
mv: overwrite‘sa.txt’?y //询问用户是否覆盖文件
[root@localhost yy]# ls
sa.txt yy1
[root@localhost yy]#
运行指令“mv a1.txt sa.txt”将文件 a1.txt 更名为 sa.txt,因目标文件 sa.txt 已存在,在对文件进行覆盖前先询问用户,由用户决定是否继续。
范例339 重命名同时覆盖文件。
[root@localhost yy]# ls
sa.txt yy1
[root@localhost yy]# mv sa.txt yy
[root@localhost yy]# ls
yy1
[root@localhost yy]# cd /yy1
[root@localhost yy1]#ls
yy
[root@localhost yy]#cat yy
Hello world
Aaaaaaaaaaaaaaaa
Bbbbbbbbbbbbbbbb
Ccccccccccccccccc
[root@localhost yy]#
运行指令“mv sa.txt yy1”将文件 sa.txt 移动到目录 yy1 中。
实战思考
应用思考
运行指令“mv–T file1 directory”,file1 是已存在的文件名,directory 和当前目录下的某已存在的子目录同名,然后再运行指令“mv file1 directory”,对比执行结果。
学习目标 能使用 ncftp 指令实现 ftp 服务如文件传输
语法 ncftp [-可选参数] [主机/IP 地址]
功能说明 ncftp 指令是一个独立的 FTP 软件,与传统的 FTP 相比它提供了一个强大的可扩展的接口,包括显示传输速率、下载进度、自动续传等更多的高级功能,且安全性能更好。
参数说明 可选参数及其说明如下:

【ncftp内部命令】
!:执行本地机器的指令。
ascii:传输模式为 ascii。
binary:传输模式为二进制模式。
bye:结束 ftp。
cd:切换到远端 ftp 服务器上的目录。
cdup:上一层目录。
close:在不结束 ftp 进程的情况下,关闭与 ftp 服务器的连接。
delete:删除远端 ftp 服务器上的文件。
get:下载。
hash:显示“#”。
lcd:更改本地目录。
ls:列出远端 ftp 服务器上的文件列表。
mdelete:删除文件,模糊匹配。
mget:下载文件,模糊匹配。
mkdir:在远端 ftp 服务器上建立文件夹。
mput:上传文件,模糊匹配。
newer:下载时检测是不是新文件。
open:打开连线。
prompt:关闭交互模式。
put:上传。
pwd:显示当前目录。
quit:退出。
基础应用
范例340 登录ftp服务器上传、下载文件。
[root@localhost ~]# ncftp -u sy114 -p 12345678 192.168.128.1 //登录
NcFTP 3.2.0 (Aug 05, 2006) by Mike Gleason
Connecting to 192.168.128.1
Serv-U FTP Server v5.1 for WinSock ready
Logging in...
User logged in, proceed.
Logged in to 192.168.128.1
ncftp / > ls
ll。Txt a1 vc
ncftp / > delete a1 //删除文件
ncftp / > ls //显示文件列表
ll。Txt vc
ncftp / > lcd /home/yy //本地改变目录
ncftp / > !pwd //显示当前路径
/home/yy
ncftp / > get vc //下载文件
vc: 512 kB 345.11kB/s
ncftp / > put as //上传文件
as: 11.9kB 1.2kB/s
ncftp / > ls
ll。Txt as vc
ncftp / > bye
You have not saved a bookmark for this site.
Would you like to save a bookmark to:
ftp:// sy114:PASSWORD@192.168.128.1
Save? (yes/no) n //是否保存标签
Not saved.(If you don't want to be asked this, "set confirm-close no")
Thank you for using NcFTP Client.
If you find it useful, please consider making a donation!
http://www.ncftp.com/ncftp/donate.html
执行指令“ncftp -u sy114 -p 12345678 192.168.128.1”登录到 ftp 服务器 1192.168.128.1上,然后进行文件的删除、下载、上传等文件操作。
学习目标 掌握使用 ncftpget 指令下载文件的方法
语法 ncftpget [-可选参数]主机/IP 地址[本地路径]远程文件
功能说明 ncftpget 指令可直接获取远端 ftp 服务器上的文件。
参数说明 可选参数及其说明如下:

基础应用
范例341 下载文件。
[root@localhost ~# ncftpget -u sy114 -p 12345678 192.168.128.1 /home/yy1 /vc
//下载文件
/home/yy1/vc: 512 kB 345.11kB/s
执行指令“ncftpget -u sy114 -p 12345678 192.168.128.1 /home/yy1 /vc”直接下载远程主机上的文件vc到本地指定的目录/home/yy1。
学习目标 掌握使用 ncftpput 指令上传文件的方法
语法 ncftpput [-可选参数]主机/IP 地址[远端目录]本地文件
功能说明 ncftpput 指令可直接上传文件到远程 ftp 服务器。
参数说明 可选参数的具体说明如下:

基础应用
范例342 上传文件。
[root@localhost ~]# ncftpput -u sy114 -p 12345678 192.168.128.1 /home/yy1/as
//上传文件
/home/yy1/as: 11.9kB 1.2kB/s
执行指令“ncftpput -u sy114 -p 12345678 192.168.128.1 /home/yy1/as”上传本地文件/home/yy1/as到远程主机的当前目录。
学习目标 能以不同形式输出文件内容
语法 od [-可选参数] [文件]
功能说明 使用od指令显示指定文件的内容,显示的格式默认为八进制,也可通过参数设置。
参数说明 可选参数及其说明如下:

【进制说明】
a:名称字符
c:ASCII
d:十进制
o:八进制
u:十进制
x:十六进制
基础应用
范例343 以默认形式计算,显示字码。
[root@localhost yy]# cat a1 //显示文件内容
Hello everyone
Hello everybody
How are you
Fine,thank you and you?
[root@localhost yy]# od a1 //以八进制的形式显示文件
0000000 062510 066154 020157 073145 071145 067571 062556 044012
0000020 066145 067554 062440 062566 074562 067542 074544 044012
0000040 073557 060440 062562 074440 072557 063012 067151 020145
0000060 064164 067141 020153 067571 020165 067141 020144 067571
0000100 037565 000012
0000103
[root@localhost yy]#
执行指令“od a1”,以默认的八进制的形式输出文件 a1 的内容。
范例344 按十进制计算字码与以十进制形式显示。
[root@localhost yy]# od -A d a1 //以十进制计算字码
0000000 062510 066154 020157 073145 071145 067571 062556 044012
0000020 066145 067554 062440 062566 074562 067542 074544 044012
0000040 073557 060440 062562 074440 072557 063012 067151 020145
0000060 064164 067141 020153 067571 020165 067141 020144 067571
0000100 037565 000012
0000103
[root@localhost yy]# od -t d a1
0000000 1819043144 1986338927 1870230177 1208640878
0000020 1869376613 1702257952 1868724594 1208645988
0000040 1629517679 2032166258 1711961455 543518313
0000060 1851877492 1870209131 1851859061 1870209124
0000100 671605
0000103
[root@localhost yy]#
执行指令“od -A d a1”与指令“od -t d a1”显示的结果是不相同的。前者是以十进制计算文件a1的字码,但显示的时候仍是八进制显示,而后者指定显示的形式为十进制。
范例345 以ASCII码的形式显示文件内容。
[root@localhost ~]# od -t c a1 //以ASCII的形式显示文件内容
0000000 H e l l o e v e r y o n e \n H
0000020 e l l o e v e r y b o d y \n H
0000040 o w a r e y o u \n F i n e
0000060 t h a n k y o u a n d y o
0000100 u ? \n
0000103
[root@localhost ~]#
执行指令“od -t c abc”以 ASCII 的形式显示文件 a1 的内容,如上所示。
实战思考
应用思考
使用od指令对指定数目的字符串进行显示,可以同时指定文件的输出形式。
学习目标 掌握使用 paste 指令对文件列进行合并的方法
语法 paste [-可选参数] [文件]
功能说明 paste 指令把指定文件以列对列的方式进行一列一列的合并,然后输出到标准输出。如果在paste指令中没有指定文件名,将从标准输入输入内容进行操作。
参数说明 可选参数及其说明如下:

基础应用
范例346 合并文件的行。
[root@localhost yy]# cat a1 //显示文件a1的内容
Hello everyone
Hello everybody
How are you
Fine,thank you and you?
[root@localhost yy]# cat a2 //显示文件a2的内容
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
[root@localhost yy]# paste a1 a2 //合并文件的行
Hello everyone aaaaaaaaaaaa
Hello everybody aaaaaaaaaaaa
How are you aaaaaaaaaaaa
Fine,thank you and you? aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
[root@localhost yy]# paste a2 a1 //合并文件的行
aaaaaaaaaaaa Hello everyone
aaaaaaaaaaaa Hello everybody
aaaaaaaaaaaa How are you
aaaaaaaaaaaa Fine,thank you and you?
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
[root@localhost yy]#
执行指令“paste a1 a2”与指令“paste a2 a1”,将以不同的先后顺序合并文件 a1 和文件a2,执行结果如上所示。
范例347 以s方式合并文件的行。
[root@localhost yy]# paste -s a1 a2 //合并文件的行,并指定间隔符
Hello everyone Hello everybody How are you Fine,thank you and you?
aaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaaaaa a
aaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaaaaa
[root@localhost yy]#
执行指令“paste–s a1 a2”合并文件 a1 和 a2 的行,执行结果如上所示。
范例348 合并文件的行同时指定间隔符。
[root@localhost yy]# paste -d# a1 a2 //合并文件的行指定间隔符
Hello everyone#aaaaaaaaaaaa
Hello everybody#aaaaaaaaaaaa
How are you#aaaaaaaaaaaa
Fine,thank you and you?#aaaaaaaaaaaa
#aaaaaaaaaaaa
#aaaaaaaaaaaa
#aaaaaaaaaaaa
#aaaaaaaaaaaa
[root@localhost yy]# paste -d# a2 a1 //合并文件的行指定间隔符
aaaaaaaaaaaa#Hello everyone
aaaaaaaaaaaa#Hello everybody
aaaaaaaaaaaa#How are you
aaaaaaaaaaaa#Fine,thank you and you?
aaaaaaaaaaaa#
aaaaaaaaaaaa#
aaaaaaaaaaaa#
aaaaaaaaaaaa#
[root@localhost yy]#
执行指令“paste–d# a1 a2”与指令“paste–d# a2 a1”,先后顺序不同间隔符的位置也存在差异。
学习目标 能运用 patch 指令对文件打补丁
语法 patch [-可选参数] [文件]
功能说明 patch 指令修补文件就是为文件打补丁,实现文件的修改和更新。它可以一次打一个也可以一次打多个,可以用来实现系统升级。因为 patch 指令支持多种 diff 输出文件格式,所以可以运用diff的结果来对文件打补丁。
参数说明 可选参数及其说明如下:

基础应用
范例349 先生成补丁,然后打补丁。
[root@localhost yy]# cat a1 //显示文件a1的内容
Hello everyone
Hello everybody
How are you
Fine,thank you and you?
[root@localhost yy]# cat a2 //显示文件a2的内容
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
[root@localhost yy]# diff a1 a2>sy.diff //比较文件的差异
[root@localhost yy]# cat sy.diff
-1,4c1,8
<Hello everyone
<Hello everybody
<How are you
<Fine,thank you and you?
---
>aaaaaaaaaaaa
>aaaaaaaaaaaa
>aaaaaaaaaaaa
>aaaaaaaaaaaa
>aaaaaaaaaaaa
>aaaaaaaaaaaa
>aaaaaaaaaaaa
>aaaaaaaaaaaa
[root@localhost yy]# patch a1<sy.diff
patching file a1.txt
[root@localhost yy]# cat a1
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
[root@localhost yy]#
执行指令“diff a1 a2 >sy.diff”生成 a1 与 a2 的差异文件 sy.diff,再执行指令“pactha1<sy.diff”以刚才生成的差异文件作为补丁,从范例可以看到指令执行完成后文件a1的内容被修改。
范例350 为系统打补丁,实现系统升级。
[root@localhost ~]# gunzip /home/ss/patch-2.5.4.gz //先解压下载的文件
[root@localhost ~]# patch–p0 </home/ss/patch-2.5.4 //打补丁
执行指令“patch -p0 /home/ss/patch-2.5.4”为系统打补丁,在指令中“ –p0”的意思是使用完整的路径名,这时补丁文件为/home/ss/patch-2.5.4。相比参数“-p0”,参数“-p1”的含义是删除最前面的斜杠 home/ss/ patch-2.5.4;参数“-p2”的意思是“ss/ patch-2.5.4。
实战思考
应用思考
1.运用 patch 指令对文件打补丁,指定输出文件的名称。
2.使用参数-p NUM 来指定文件的路径,在这里不指定 NUM 的数值用户可以随意指定,但NUM的数值不能超过给出的路径的层数。
学习目标 能利用 rcp 指令实现本地主机与远程主机间的文件或目录的复制
语法 rcp [-可选参数]远程/本地主机名:源文件/目录 本地/远程主机名:目标文件/目录
功能说明 rcp 指令可在远程主机与本地主机之间进行文件或目录的复制。
参数说明 可选参数及其说明如下:

基础应用
范例351 复制远程主机文件到本地机。
[root@localhost ~]# rcp–p 192.168.1.121:/home/vc /home/yY ///复制文件
执行指令“rcp–p 192.168.1.121:/home/vc /home/yy/”复制远程主机 192.168.1.121 上的文件/home/vc到本地主机/home/yy/目录下,同时保留源文件的属性。一般本地主机名不用给出。
实战思考
应用思考
运用 rcp 指令将本地主机上指定路径下的文件复制到远程主机上,指令形式与范例类似。
学习目标 能使用 rhmask 指令对文件进行加密和还原
语法 rhmask [-可选参数] [加密文件] [源文件] [目标文件]
功能说明 rhmask 指令可以对文件进行加密,并还原加密文件。
参数说明 可选参数的具体说明如下:

基础应用
范例352 还原加密文件。
[root@localhost ~]#rhmask file1 file2 //加密文件还原
执行指令“rhmask file1 file2”还原加密文件。
范例353 加密指定文件。
[root@localhost ~]#rhmask–d file1 file2 file3 //加密文件
执行指令“rhmask file1 file2 file3”用文件 file1 加密文件 file2,生成文件 file3。
学习目标 使用 rm 指令删除文件/目录与其他删除指令比较
语法 rm [-可选参数]目录/文件
功能说明 rm 指令可删除文件或目录,如果使用 rm 来删除文件,通常仍可以将文件恢复。如果想保证该文件的内容无法复原,可以考虑使用shred指令。
执行rm指令可删除文件或目录,如欲删除目录必须加上参数“-r”,否则预设仅会删除文件。 ? 参数说明 可选参数及其说明如下:

基础应用
范例354 删除文件。
[root@localhost yy]# ls //显示文件
a1.txt a2.txt sy.diff yy yy1 //yy为文件名,yy1为目录名
[root@localhost yy]# rm yy //删除文件
rm:remove regular file‘yy’? y
[root@localhost yy]# ls //显示文件
a1.txt a2.txt sy.diff yy1
[root@localhost yy]# ls //显示文件
a1.txt a2.txt sy.diff yy yy1 //yy为文件名,yy1为目录名
[root@localhost yy]# rm–d yy //删除文件
rm:remove regular file‘yy’? y
[root@localhost yy]# ls //显示文件
a1.txt a2.txt sy.diff yy1
[root@localhost yy]#
运行指令“rm yy”和指令“rm–d yy”都是删除文件 yy。
范例355 删除目录。
[root@localhost yy]# ls //显示文件
a1.txt a2.txt sy.diff yy yy1 //yy为文件名,yy1为目录名
[root@localhost yy]# rm–r yy1 //删除文件
rm:descend into directory‘yy1’? y
rm:remove regular file‘yy1/a1.txt’? y
rm:remove regular file‘yy1/a2.txt’? y
rm:remove directory‘yy1’? y
[root@localhost yy]# ls //显示文件
a1.txt a2.txt sy.diff yy
[root@localhost yy]# rm -rf yy1/ //删除目录yy1/
[root@localhost yy]# ls //显示文件
a1.txt a2.txt sy.diff yy
[root@localhost yy]#
运行指令“rm -r yy1”和指令“rm–rf yy1”都是删除目录yy1,执行中的差异如本例所示。
实战思考
应用思考
执行指令“rm–d目录名”与指令“rm–rd目录名”,对比两者的执行结果。
学习目标 掌握反序输出文件的方法
语法 tac [-可选参数] [文件]
功能说明 tac 指令以反序的方式显示文件的内容。
参数说明 可选参数及其说明如下:

基础应用
范例356 反序显示文件。
[root@localhost yy]# cat a1.txt //显示文件内容
Hello everyone
Hello everybody
How are you
Fine,thank you and you?
[root@localhost ~]# tac a1.txt //反序显示文件内容
Fine,thank you and you?
How are you
Hello everybody
Hello everyone
[root@localhost yy]#
执行指令“tac a1.txt”反序显示文件内容。
学习目标 掌握 tar指令与 Linux中的压缩/解压指令配合使用实现文件压缩/解压的操作
语法 tar [-可选参数] [文件]
功能说明 tar 指令主要是用来打包文件的,tar 就是 Linux 下最常用的打包程序,它可以将一大堆文件或目录打包成一个总的文件。使用 tar 指令打包出来的通常称为 tar 包且以.tar结尾。生成tar包后,可以用其他的压缩指令来对这个打包文件实行压缩,将一个总的文件通过一些压缩算法变成一个小文件。同时也可以通过tar指令中的一些参数,来调用压缩和解压程序实现文件压缩/解压。
参数说明 可选参数及其说明如下:


基础应用
范例357 打包文件。
[root@localhost yy]# ls
a1.txt a2.txt sy.diff yy yy1
[root@localhost yy]# tar–c a1.txt a2.txt >s1.tar //打包文件
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar yy yy1
[root@localhost yy]# tar–cf s2.tar *.txt //打包文件
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s2.tar yy yy1
[root@localhost yy]#
执行指令“tar–c a1.txt a2.txt >s1.tar”将文件a1.txt和文件a2.txt打包生成一个新文件s1.tar。
指令“tar–cf s2.tar *.txt”是将目录下所有.txt 文件打包生成文件 s2.tar。
范例358 生成压缩文件。
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s2.tar yy yy1
[root@localhost yy]# tar–czf s1.tar.gz *.txt //生成压缩文件
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar yy yy1
[root@localhost yy]# tar–czvf s2.tar.gz *.txt //生成压缩文件
a1.txt
a2.txt
[root@localhost yy]#
运用tar指令在打包文件的同时生成压缩文件,压缩的格式可以根据给出的参数进行选择。
范例359 解压文件。
[root@localhost yy]# tar -xzvf s1.tar.gz //解压缩文件s1.tar.gz
a1.txt
a2.txt
[root@localhost yy]#
执行指令“tar -xzvf s1.tar.gz”将压缩文件 s1.tar.gz 还原。
实战思考
应用思考
1.使用 tar 指令在生成备份文件的同时,显示文件的列表。
2.向已存在的文件中添加新文件。
学习目标 能从标准读入数据输出到标准输出,同时将其保存为文件
语法 tee [-可选参数] [文件]
功能说明 tee 指令可以从标准输入读入数据输出到标准输出同时将读入的数据保存为文件。
参数说明 可选参数及其说明如下:

基础应用
范例360 读入输入数据保存为指定文件。
[root@localhost yy]# tee sufile.txt //输入文件
asdfgjhk
asdfgjhk
jghjgdvhfg
jghjgdvhfg
q
q
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar sufile.txt yy yy1
[root@localhost yy]# cat sufile.txt //显示文件内容
asdfgjhk
jghjgdvhfg
q
[root@localhost yy]#
执行指令“tee sufile.txt”读入标准输入的数据保存到文件 sufile.txt,文件输入是每完成一行输入回车,将在下一行显示刚才输入的内容,完成整个数据的录入用“Ctrl+D”退出。
范例361 向已存在的文件中追加数据内容。
[root@localhost yy]# tee sufile.txt //输入文件
Sgfjhkljkl;kj
Sgfjhkljkl;kj
Xjskdfhjisghs;k
Xjskdfhjisghs;k
Hghlkgu
Hghlkgu
[root@localhost yy]# cat sufile.txt //显示文件内容
asdfgjhk
jghjgdvhfg
q
Sgfjhkljkl;kj
Xjskdfhjisghs;k
Hghlkgu
[root@localhost yy]#
执行指令“tee sufile.txt”向文件 ufile.txt 中追加内容。
范例362 tee指令实现文件备份。
[root@localhost yy]# cat sufile.txt|tee sufile //备份文件
asdfgjhk
jghjgdvhfg
q
Sgfjhkljkl;kj
Xjskdfhjisghs;k
Hghlkgu
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar sufile sufile.txt yy yy1
[root@localhost~]# cat sufile //显示文件内容
asdfgjhk
jghjgdvhfg
q
Sgfjhkljkl;kj
Xjskdfhjisghs;k
Hghlkgu
[root@localhost yy]#
执行指令“cat sufile.txt|tee sufile”显示文件 sufile.tx 的内容到标准输出,同时将这个标准输出作为tee的输入保存到指定文件中。
学习目标 对已学习的 ftp 文件传输的多种方法能灵活应用
语法 tftp [-可选参数]主机/IP 地址
功能说明 tftp 指令能下载远程主机上的文件,也能将文件上传,是简单的文字模式的ftp指令,使用方法和ftp类似。
参数说明 可选参数及其说明如下:

【tftp内部命令】
ascii:使用 ascii 传输模式。
binary:使用二进制文件传输模式。
connect:连接远端 tftp 服务器。
mode:文件传输模式。
put:上传文件。
get:下载文件。
quit:退出。
verbose:显示详细处理信息。
trace:显示包路径。
status:显示当前状态。
rexmt:设置包传输的超时时间。
timeout:设置重传的超时时间。
?或 help:帮助信息。
基础应用
范例363 tftp程序的简单应用。
[root@localhost ~]# tftp 192.168.212.1 //启动tftp程序,连接至192.168.212.1
tftp> get dwfile //下载文件dwfile
tftp> status //查看当前状态
Connected to 192.168.88.2.
Mode: octet Verbose: off Tracing: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
tftp> quit
启动tftp程序后的文件操作方式与前面讲述的ftp类似。
学习目标 能使用 tmpwatch 指令清除临时文件
语法 tmpwatch [-可选参数] 超时时间 目录
功能说明 tmpwatch 指令可删除目录下超出指定时间的文件,时间单位为小时。
参数说明 可选参数及其说明如下:

基础应用
范例364 删除临时文件。
[root@localhost ~]# tmpwatch 100 /home/yy
执行指令“tmpwatch 100 /home/yy”删除/home/yy 目录下超过 100 小时未使用的文件。
范例365 使用--test参数查看删除文件。
[root@localhost ~]# ls /home/yy
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar tt ts yy
[root@localhost~]# tmpwatch --test 100 /home/yy
Removing file /root/home/yy/tt
Removing file /root/home/yy/ts
[root@localhost ~]# ls /home/yy
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar tt ts yy
[root@localhost ~]# ls /home/yy
执行指令“tmpwatch --test10 /home/yy”测试满足删除条件的文件,显示将发生的结果,但该指令并不真的对文件或目录执行删除。
学习目标 能使用 touch 指令更改文件/目录的存取和更改时间
语法 touch [-可选参数]目录/文件
功能说明 使用 touch 指令指定目录/文件的日期时间为当前时刻或指定时间。
参数说明 可选参数及其说明如下:


基础应用
范例366 更新指定文件存取时间。
[root@localhost yy]# ls -l //显示文件详细信息
total 64
-rw-r--r-- 1 root root2 Jan 4 17:04 aa
-rw------- 1 root root 66 Jan 4 14:52 a1.txt
-rw------- 1 root root 104 Jan 2 15:03 a2.txt
-rw-r--r-- 1 root root 10240 Jan 4 15:57 s1.tar
-rw-r--r-- 1 root root 193 Jan 4 16:28 s1.tar.gz
-rw-r--r-- 1 root root 10240 Jan 4 16:21 s2.tar
-rw-r--r-- 1 root root 193 Jan 4 16:35 s2.tar.gz
-rw-r--r-- 1 root root 83 Jan 4 17:14 sr
-rw-r--r-- 1 root root 83 Jan 4 17:08 sr.tar
-rw-r--r-- 1 root root 207 Jan 3 15:01 sr.diff
-rw-r--r-- 1 root root 83 Jan 4 16:37 tt
-rw-r--r-- 1 root root 193 Jan 4 16:34 v
drwxr-xr-x 2 root root 4096 Jan 6 17:59 yy1
-rw-r--r-- 1 root root 10240 Jan 4 16:32 zt
-rw-r--r-- 1 root root 10240 Jan 4 16:34 zv
[root@localhost yy]# touch a1.txt //更新文件a1.txt的存取时间
[root@localhost other]# ls -l //显示文件详细信息
total 64
-rw-r--r-- 1 root root2 Jan 4 17:04 aa
-rw------- 1 root root 66 Jan 10 15:32 a1.txt
-rw------- 1 root root 104 Jan 2 15:03 a2.txt
-rw-r--r-- 1 root root 10240 Jan 4 15:57 s1.tar
-rw-r--r-- 1 root root 193 Jan 4 16:28 s1.tar.gz
-rw-r--r-- 1 root root 10240 Jan 4 16:21 s2.tar
-rw-r--r-- 1 root root 193 Jan 4 16:35 s2.tar.gz
-rw-r--r-- 1 root root 83 Jan 4 17:14 sr
-rw-r--r-- 1 root root 83 Jan 4 17:08 sr.tar
-rw-r--r-- 1 root root 207 Jan 3 15:01 sr.diff
-rw-r--r-- 1 root root 83 Jan 4 16:37 tt
-rw-r--r-- 1 root root 193 Jan 4 16:34 v
drwxr-xr-x 2 root root 4096 Jan 6 17:59 yy1
-rw-r--r-- 1 root root 10240 Jan 4 16:32 zt
-rw-r--r-- 1 root root 10240 Jan 4 16:34 zv
[root@localhost yy]#
执行指令“touch a1.txt”更新文件 a1.txt 的存取时间为当前时间。
范例367 更改文件的存取时间为指定文件时间。
[root@localhost yy]# ls -l //显示文件详细信息
total 64
-rw-r--r-- 1 root root 2 Jan 4 17:04 aa
-rw------- 1 root root 66 Jan 10 15:32 a1.txt
-rw------- 1 root root 104 Jan 2 15:03 a2.txt
-rw-r--r-- 1 root root 10240 Jan 4 15:57 s1.tar
-rw-r--r-- 1 root root 193 Jan 4 16:28 s1.tar.gz
-rw-r--r-- 1 root root 10240 Jan 4 16:21 s2.tar
-rw-r--r-- 1 root root 193 Jan 4 16:35 s2.tar.gz
-rw-r--r-- 1 root root 83 Jan 4 17:14 sr
-rw-r--r-- 1 root root 83 Jan 4 17:08 sr.tar
-rw-r--r-- 1 root root 207 Jan 3 15:01 sr.diff
-rw-r--r-- 1 root root 83 Jan 4 16:37 tt
-rw-r--r-- 1 root root 193 Jan 4 16:34 v
drwxr-xr-x 2 root root 4096 Jan 6 17:59 yy1
-rw-r--r-- 1 root root 10240 Jan 4 16:32 zt
-rw-r--r-- 1 root root 10240 Jan 4 16:34 zv
[root@localhost yy]# touch zv–r a1.txt //更新文件zv的存取时间
[root@localhost other]# ls -l //显示文件详细信息
total 64
-rw-r--r-- 1 root root2 Jan 4 17:04 aa
-rw------- 1 root root 66 Jan 10 15:32 a1.txt
-rw------- 1 root root 104 Jan 2 15:03 a2.txt
-rw-r--r-- 1 root root 10240 Jan 4 15:57 s1.tar
-rw-r--r-- 1 root root 193 Jan 4 16:28 s1.tar.gz
-rw-r--r-- 1 root root 10240 Jan 4 16:21 s2.tar
-rw-r--r-- 1 root root 193 Jan 4 16:35 s2.tar.gz
-rw-r--r-- 1 root root 83 Jan 4 17:14 sr
-rw-r--r-- 1 root root 83 Jan 4 17:08 sr.tar
-rw-r--r-- 1 root root 207 Jan 3 15:01 sr.diff
-rw-r--r-- 1 root root 83 Jan 4 16:37 tt
-rw-r--r-- 1 root root 193 Jan 4 16:34 v
drwxr-xr-x 2 root root 4096 Jan 6 17:59 yy1
-rw-r--r-- 1 root root 10240 Jan 4 16:32 zt
-rw-r--r-- 1 root root 10240 Jan 10 15:32 zv
[root@localhost yy]#
执行指令“touch zv–r a1.txt”更改文件 zv 的存取时间与文件 a1.txt 的时间相同。
范例368 更改文件的存取时间为指定时间。
[root@localhost yy]# ls -l //显示文件详细信息
total 64
-rw-r--r-- 1 root root2 Jan 4 17:04 aa
-rw------- 1 root root 66 Jan 10 15:32 a1.txt
-rw------- 1 root root 104 Jan 2 15:03 a2.txt
-rw-r--r-- 1 root root 10240 Jan 4 15:57 s1.tar
-rw-r--r-- 1 root root 193 Jan 4 16:28 s1.tar.gz
-rw-r--r-- 1 root root 10240 Jan 4 16:21 s2.tar
-rw-r--r-- 1 root root 193 Jan 4 16:35 s2.tar.gz
-rw-r--r-- 1 root root 83 Jan 4 17:14 sr
-rw-r--r-- 1 root root 83 Jan 4 17:08 sr.tar
-rw-r--r-- 1 root root 207 Jan 3 15:01 sr.diff
-rw-r--r-- 1 root root 83 Jan 4 16:37 tt
-rw-r--r-- 1 root root 193 Jan 4 16:34 v
drwxr-xr-x 2 root root 4096 Jan 6 17:59 yy1
-rw-r--r-- 1 root root 10240 Jan 4 16:32 zt
-rw-r--r-- 1 root root 10240 Jan 10 15:32 zv
[root@localhost yy]# touch a1.txt–t 200909090909 //更新文件a1.txt的时间
[root@localhost other]# ls -l //显示文件详细信息
total 64
-rw-r--r-- 1 root root 2 Jan 4 17:04 aa
-rw------- 1 root root 66 Sep 9 09:09 a1.txt
-rw------- 1 root root 104 Jan 2 15:03 a2.txt
-rw-r--r-- 1 root root 10240 Jan 4 15:57 s1.tar
-rw-r--r-- 1 root root 193 Jan 4 16:28 s1.tar.gz
-rw-r--r-- 1 root root 10240 Jan 4 16:21 s2.tar
-rw-r--r-- 1 root root 193 Jan 4 16:35 s2.tar.gz
-rw-r--r-- 1 root root 83 Jan 4 17:14 sr
-rw-r--r-- 1 root root 83 Jan 4 17:08 sr.tar
-rw-r--r-- 1 root root 207 Jan 3 15:01 sr.diff
-rw-r--r-- 1 root root 83 Jan 4 16:37 tt
-rw-r--r-- 1 root root 193 Jan 4 16:34 v
drwxr-xr-x 2 root root 4096 Jan 6 17:59 yy1
-rw-r--r-- 1 root root 10240 Jan 4 16:32 zt
-rw-r--r-- 1 root root 10240 Jan 10 15:32 zv
[root@localhost other]#
执行指令“touch a1.txt–t 200909090909”更改文件 a1.txt 的存取时间为 2009 年 9 月 9 日9点9分。
学习目标 能使用 umask 指令在建立文件时指定权限掩码
语法 umask [-可选参数] [权限掩码]
功能说明 umask 指令可以设置文件创建时默认权限,在系统中对应每一类用户存在一个相应的umask指定的权限值。
参数说明 可选参数及其说明如下:

基础应用
范例369 显示当前用户的缺省权限并重新设置。
[root@localhost ~]# umask //显示权限掩码
0022
[root@localhost ~]# umask 0211 //重设权限掩码
[root@localhost ~]# umask -S //显示权限掩码
u=rx,g=rw,o=rw
[root@localhost ~]#
执行指令“umask”显示当前,再使用指令“umask” 重设权限掩码。
学习目标 能解压.arj 文件
语法 unarj [-可选参数] .arj 压缩文件
功能说明 unarj 指令可解压.arj 文件。
参数说明 可选参数及其说明如下:

基础应用
范例370 解压.arj文件。
[root@localhost ~]# unarj e sr.arj //解压文件
执行指令“unarj e sr.arj”解压文件 sr.arj。
学习目标 能解压.z 文件
语法 uncompress [-可选参数] .Z 压缩文件
功能说明 uncompress 指令用来解压.Z 文件,与指令 compress 是一对。
参数说明 可选参数及其说明如下:

基础应用
范例371 解压文件。
[root@localhost yy]# uncompress a1.Z //解压缩.Z文件
执行指令“uncompress a1.Z”解压.Z 文件 a1.Z。
学习目标 能解压 zip 文件
语法 unzip [-可选参数]文件
功能说明 unzip 指令用来解压 zip 文件。zip 压缩格式是现在常见的压缩格式。
参数说明 可选参数及其说明如下:

基础应用
范例372 解压文件。
[root@localhost yy]# unzip sv.zip
执行指令“unzip sv.zip”解压文件 sv.zip。
范例373 列出压缩文件包的文件信息。
[root@localhost yy]# unzip -l sv.zip //列出压缩文件包内的文件
Archive: sv.zip
Length Date Time Name //文件的大小,时间,名称等相关信息
-------- ---- ---- ----
2 09-07-21 17:04 yy/aa
66 09-07-21 16:07 yy/a1.txt
104 09-07-21 16:07 yy/a2.txt
10240 09-07-21 16:07 yy/s1.tar
193 09-07-21 16:07 yy/s2.tar
10605 5 files
[root@localhost yy]#
执行指令“unzip -l sv.zip”显示压缩文件 sv.zip 内的文件信息。
学习目标 学会使用 uucico 指令进行 uucp 文件传输
语法 uucico [-可选参数]
功能说明 uucico 指令可处理 uucp 或 uux 送到队列请求的文件传输。uucico 有两种工作模式:主动模式和附属模式。在主动模式下,uucico会调用远程主机;在附属模式下,uucico接受远程主机的调用。
参数说明 可选参数及其说明如下:

基础应用
范例374 以附属模式启动uucico。
[root@localhost ~]# uucico -r0//启动uucico
执行指令“uucico -r0”以附属模式启动 uucico。
范例375 以主动模式启动uucico。
[root@localhost ~]# uucico -r1//启动uucico
执行指令“uucico -r1”以主动模式启动 uucico。
学习目标 能处理接收到的文件
语法 uupick [-可选参数]
功能说明 利用 uupick 指令处理 uucp 传送来的文件。
参数说明 可选参数及其说明如下:

基础应用
范例376 处理所有由uucp传送来的文件。
[root@localhost ~]# uupick //处理所有由uucp传送的文件
执行指令“uupick”处理所有由uucp传送来的文件。
范例377 处理指定主机传送来的文件。
[root@localhost ~]# uupick -s sim //处理指定主机sim传送来的文件
执行指令“uupick -s sim”处理指定主机 sim 传送来的文件。
学习目标 能将文件传送到远端主机
语法 uuto [-可选参数][文件][主机]
功能说明 uuto 指令是 script 指令,用来传送文件到远端的 uucp 主机,在传送完成后将以邮件的形式通知远端主机的用户。
参数说明 可选参数及其说明如下:

基础应用
范例378 传送文件。
[root@localhost ~]# uuto /home/sr sim!~/sw/as //传送文件
执行指令“uuto /home/sr sim! ~/sw/as”,将本系统的 home 目录下的文件 sr 传送到主机sim下sw/as。
范例379 传送的是目录时整个复制同时自动建立目录。
[root@localhost ~]# uuto -d -R~/yy/ sim!~/sw/ //传送文件
执行指令“uucp -d -R~/yy/ sim!~/sw/”将本系统的 yy 目录传送到主机 sim下 sw目录下。
实战思考
应用思考
对比指令“uuto”和指令“uucp”的异同。
学习目标 能查找符合条件的文件
语法 whereis [-可选参数]文件
功能说明 whereis 指令将查找符合条件的文件结果输出到标准输出。 ? 参数说明 可选参数及其说明如下:

基础应用
范例380
查找指定类型文件。
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar tt ts yy
[root@localhost yy]# whereis *.txt //查找文件
a1
a2
[root@localhost yy]#
执行指令“whereis *.txt”在目录下查找.txt 文件。
实战思考
应用思考
运用指令查找“/usr/src”目录下的源文件,如果是任意文件名用*代替即可。
学习目标 查找文件
语法 which [-可选参数]文件
功能说明 which 指令将在环境变量$PATH 设置的目录下查找符合条件的文件。
参数说明 可选参数及其说明如下:

基础应用
范例381 查找指定文件。
[root@localhost ~]# which ax //查找文件
/usr/bin/which: no ax in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr
/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
[root@localhost ~]# which zip //查找文件
/usr/bin/zip
[root@localhost ~]#
执行指令“which ax”和指令“which zip”,在环境变量$PATH 指定的目录“/usr/bin”下查找文件,显示查找结果。
范例382 在yy目录下查找文件。
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar tt ts yy
[root@localhost yy]# which //查找文件
/usr/bin/which: no a1.txt in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no a2.txt in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no sy.diff in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no s1.tar in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no s1.tar.gz in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no s2.tar in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no tt in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no ts in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no yy in (/usr/kerberos/sbin:/usr/kerberos/ bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
[root@localhost yy]#
执行指令“which”在环境变量$PATH指定的目录“/usr/bin”下查找当前目录中的文件,显示查找结果。
实战思考
应用思考
对比Linux中的两个查找指令“which”和“whereis”,看看它们各自的查找范围和应用中存在的差异。
学习目标 压缩文件
语法 zip [-可选参数]文件
功能说明 zip 指令是一个应用广泛的跨平台的压缩工具,压缩后产生后缀为.zip 的文件。zip没有解压文件的功能。
参数说明 可选参数及其说明如下:


基础应用
范例383 压缩文件。
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar tt ts yy1
[root@localhost yy]# zip s1.zip a1.txt a2.txt sy.diff s1.tar s2.tar //压缩文件
adding: a1.txt (deflated 18%)
adding: a1.txt (deflated 91%)
adding: s1.txt (deflated 98%)
adding: s2.txt (deflated 98%)
adding: sy.diff (deflated 63%)
[root@localhost yy]# ls
a1.txt a2.txt sy.diff s1.tar s1.tar.gz s2.tar s3.zip tt ts yy
[root@localhost yy]#
执行指令“zip zip s3.zip a1.txt a2.txt sy.diff s1.tar s2.tar”压缩文件 a1.txt a2.txt sy.diff s1.tars2.tar到文件s3.zip。
范例384 压缩文件目录下的所有文件。
[root@localhost yy]# zip s1.zip * //压缩文件
updating: a1.txt (deflated 18%)
updating: a1.txt (deflated 91%)
updating: s1.txt (deflated 98%)
updating: s2.txt (deflated 98%)
updating: sy.diff (deflated 63%)
adding: s1.tar.gz (stored 0%)
adding: tt (deflated 29%)
adding: ts (deflated 98%)
adding: yy1/ (stored 0%)
[root@localhost yy]#
执行指令“zip s1.zip *”压缩当前目录下的所有文件到指定文件 s1.zip。
范例385 删除压缩文件中的文件。
[root@localhost yy]# zip -d s1.zip a1.txt //删除指定文件
deleting: a1.txt
[root@localhost yy]# zip -dv s1.zip a2.txt //删除指定文件
zip info: local extra (21 bytes) != central extra (13 bytes): a2.txt
zip info: local extra (21 bytes) != central extra (13 bytes): s1.tar
zip info: local extra (21 bytes) != central extra (13 bytes): s2.tar
zip info: local extra (21 bytes) != central extra (13 bytes): sy.diff
zip info: local extra (21 bytes) != central extra (13 bytes): s1.tar.gz
zip info: local extra (21 bytes) != central extra (13 bytes): tt
zip info: local extra (21 bytes) != central extra (13 bytes): ts
zip info: local extra (21 bytes) != central extra (13 bytes): yy1/
deleting: a2.txt
total bytes=47132, compressed=6574 -> 86% savings
[root@localhost yy]#
执行指令“zip -d s1.zip a1.txt”和指令“zip–dv s1.zip a2.txt”从压缩文件s1.zip中删除文件a1.txt和文件a2.txt。
范例386 向压缩文件中添加新文件。
[root@localhost yy]# zip -g s1.zip a1.txt //删除指定文件
adding: a1.txt (deflated 18%)
[root@localhost yy]# zip -gv s1.zip a2.txt //删除指定文件
zip info: local extra (21 bytes) != central extra (13 bytes): s1.tar
zip info: local extra (21 bytes) != central extra (13 bytes): s2.tar
zip info: local extra (21 bytes) != central extra (13 bytes): sy.diff
zip info: local extra (21 bytes) != central extra (13 bytes): s1.tar.gz
zip info: local extra (21 bytes) != central extra (13 bytes): tt
zip info: local extra (21 bytes) != central extra (13 bytes): ts
zip info: local extra (21 bytes) != central extra (13 bytes): yy1/
zip info: local extra (21 bytes) != central extra (13 bytes): a1.txt
adding: a1.txt (in=104)(out=9)(deflated 91%)
total bytes=47302, compressed=6637 -> 86% savings
[root@localhost yy]#
执行指令“zip -g s1.zip a1.txt”和指令“zip -gv s1.zip a2.txt”向压缩文件s1.zip中分别添加文件a1.txt和文件a2.txt。
实战思考
应用思考
如果在当初建立压缩文件时已经将文件file1压缩进去了,但在此之后文件file1又做了更新,想要更新压缩文件的内容,请用-u参数进行更新。如果将文件file1改为目录dire1应该如何实现?
学习目标 能查看压缩文件的信息
语法 zipinfo [-可选参数]压缩文件[文件]
功能说明 zipinfo 指令用来显示压缩文件的信息。
参数说明 可选参数及其说明如下:

基础应用
范例387 查看压缩文件内文件名。
[root@localhost yy]# zipinfo -1 s1.zip //显示压缩文件内文件名
s1.tar
s2.tar
sy.diff
s1.tar.gz
tt
ts
yy1/
a1.txt
a2.txt
[root@localhost yy]#
执行指令“zipinfo -1 s1.zip”显示压缩文件 s1.zip 中的文件名。
范例388 查看压缩文件的信息。
[root@localhost yy]# zipinfo s1.zip //查看压缩文件的信息
Archive: s1.zip 8939 bytes 9 files
-rw-r--r-- 2.3 unx 10240 bx defN 4-Jan-09 15:57 s1.tar
-rw-r--r-- 2.3 unx 10240 bx defN 4-Jan-09 16:21 s2.tar
-rw-r--r-- 2.3 unx 207 tx defN 3-Jan-09 17:04 sy.diff
-rw-r--r-- 2.3 unx 193 tx stor 4-Jan-09 16:28 s1.tar.gz
-rw-r--r-- 2.3 unx 88 tx defN 4-Jan-09 16:11 tt
-rw-r--r-- 2.3 unx 10240 tx defN 4-Jan-09 16:34 ts
-rw-r--r-- 2.3 unx 0 bx stor 4-Jan-09 17:59 yy1/
-rw-r--r-- 2.3 unx 66 tx defN 9-Sep-09 09:09 a1.txt
-rw-r--r-- 2.3 unx 104 tx defN 9-Sep-09 09:09 a2.txt
9 files, 47302 bytes uncompressed, 6637 bytes compressed: 86.0%
[root@localhost yy]#
执行指令“zipinfo s1.zip”显示压缩文件 s1.zip 的信息。
范例389 查看压缩文件信息同时显示文件压缩率。
[root@localhost yy]# zipinfo–m s1.zip //查看压缩文件的信息
Archive: s1.zip 8939 bytes 9 files
-rw-r--r-- 2.3 unx 10240 bx 98% defN 4-Jan-09 15:57 s1.tar
-rw-r--r-- 2.3 unx 10240 bx 98% defN 4-Jan-09 16:21 s2.tar
-rw-r--r-- 2.3 unx 207 tx 63% defN 3-Jan-09 17:04 sy.diff
-rw-r--r-- 2.3 unx 193 tx 0% stor 4-Jan-09 16:28 s1.tar.gz
-rw-r--r-- 2.3 unx 88 tx 29% defN 4-Jan-09 16:11 tt
-rw-r--r-- 2.3 unx 10240 tx 98% defN 4-Jan-09 16:34 ts
-rw-r--r-- 2.3 unx 0 bx 0% stor 4-Jan-09 17:59 yy1/
-rw-r--r-- 2.3 unx 66 tx 18% defN 9-Sep-09 09:09 a1.txt
-rw-r--r-- 2.3 unx 104 tx 91% defN 9-Sep-09 09:09 a2.txt
9 files, 47302 bytes uncompressed, 6637 bytes compressed: 86.0%
[root@localhost yy]#
执行指令“zipinfo -m s1.zip”显示压缩文件 s1.zip 的信息同时显示每个文件的压缩率。
实战思考
应用思考
回顾一下相关的压缩文件都学了哪些,在这些压缩指令中有哪些是同时具有压缩和解压功能的,如何查看压缩文件的内容,各有什么特点。
学习目标 能使用 ncftpls 指令显示文件目录
语法 ncftpls[必要参数][选择性参数][远端主机 URL]
功能说明 ncftpls 指令用来显示远端主机的文件列表。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:


内建指令
ncftp,ncftpget,ncftpput
基础应用
范例390 显示远端ftp服务器的文件列表。
[root@localhost~]# ncftpls -u other -p 02211025 ftp://192.168.88.7
//显示文件列表
111 comm/ test unpv12e.tar
[root@localhost~]#
本例使用指令“ncftpls -u other -p 02211025 ftp://192.168.88.7”显示远端 ftp 服务器上文件列表的信息。
学习目标 掌握 filterdiff 指令的用法
语法 filterdiff[必要参数][选择性参数][文件]
功能说明 filterdiff 指令用来提取 diff 文件的不同。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

内建指令
lsdiff,grepdiff
基础应用
范例391 提取patch信息。
[root@localhost~]#filterdiff message-with-diff-in-the-body >patch
//提取信息
本例使用指令“filterdiff message-with-diff-in-the-body >patch”提取 diff 信息。
学习目标 学会使用 split 进行文件的切割
语法 split[必要参数][选择性参数][要切割的文件][输出文件名]
功能说明 split 指令将指定的文件切割成小的文件。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

内建指令
cut
基础应用
范例392 以指定行数分割文件。
[root@localhost temp]# ll //文件列表
总用量1584
-rw-r--r-- 1 root root 1610052 5 月 29 18:03 xen-syms
[root@localhost temp]# split -l 300 xen-syms //分割文件
[root@localhost temp]# ll //文件列表
总用量3376
-rw-r--r-- 1 root root 225361 5 月 29 18:05 xaa
-rw-r--r-- 1 root root 80344 5 月 29 18:05 xab
-rw-r--r-- 1 root root 14084 5 月 29 18:05 xac
-rw-r--r-- 1 root root 110711 5 月 29 18:05 xad
-rw-r--r-- 1 root root 58369 5 月 29 18:05 xae
-rw-r--r-- 1 root root 31677 5 月 29 18:05 xaf
-rw-r--r-- 1 root root 39869 5 月 29 18:05 xag
-rw-r--r-- 1 root root 36620 5 月 29 18:05 xah
-rw-r--r-- 1 root root 36082 5 月 29 18:05 xai
-rw-r--r-- 1 root root 35826 5 月 29 18:05 xaj
//此处省略部分结果
-rw-r--r-- 1 root root 72253 5 月 29 18:05 xbb
-rw-r--r-- 1 root root 57360 5 月 29 18:05 xbc
-rw-r--r-- 1 root root 1610052 5 月 29 18:03 xen-syms
[root@localhost temp]#
本例使用指令“split -l 300 xen-syms”分割文件 xen-syms,每个文件最多有 300 行,输出结果如上所示。
范例393 按字节数分割文件。
[root@localhost temp]# ll //显示文件列表
总用量1584
-rw-r--r-- 1 root root 1610052 5月29 18:03 xen-syms
[root@localhost temp]# split -b 30k xen-syms //分割文件
[root@localhost temp]# ll //显示文件列表
总用量3476
-rw-r--r-- 1 root root 30720 5月29 20:17 xaa
-rw-r--r-- 1 root root 30720 5月29 20:17 xab
-rw-r--r-- 1 root root 30720 5月29 20:17 xac
-rw-r--r-- 1 root root 30720 5月29 20:17 xad
-rw-r--r-- 1 root root 30720 5月29 20:17 xae
-rw-r--r-- 1 root root 30720 5月29 20:17 xaf
-rw-r--r-- 1 root root 30720 5月29 20:17 xag
-rw-r--r-- 1 root root 30720 5月29 20:17 xah
//此处省略了部分结果
-rw-r--r-- 1 root root 30720 5月29 20:17 xbv
-rw-r--r-- 1 root root 30720 5月29 20:17 xbw
-rw-r--r-- 1 root root 30720 5月29 20:17 xbx
-rw-r--r-- 1 root root 30720 5月29 20:17 xby
-rw-r--r-- 1 root root 30720 5月29 20:17 xbz
-rw-r--r-- 1 root root 12612 5月29 20:17 xca
-rw-r--r-- 1 root root 1610052 5月29 18:03 xen-syms
[root@localhost temp]#
本例使用指令“split -b 30k xen-syms”按照字节数分割文件 xen-syms,每个文件的大小为30KB。
范例394 以数字显示分割的小文件的序号。
[root@localhost temp]# ll //显示文件列表
总用量1584
-rw-r--r-- 1 root root 1610052 5月29 18:03 xen-syms
[root@localhost temp]# split -b 30k -d xen-syms //分割文件
[root@localhost temp]# ll //显示文件列表
总用量3476
-rw-r--r-- 1 root root 30720 5月29 20:20 x00
-rw-r--r-- 1 root root 30720 5月29 20:20 x01
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x02
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x03
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x04
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x05
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x06
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x07
//此处省略了部分结果
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x47
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x48
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x49
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x50
-rw-r--r-- 1 root root 30720 5 月 29 20:20 x51
-rw-r--r-- 1 root root 12612 5 月 29 20:20 x52
-rw-r--r-- 1 root root 1610052 5 月 29 18:03 xen-syms
[root@localhost temp]#
本例使用指令“split -b 30k -d xen-syms”分割文件 xen-syms,分割出的小文件的序号以数字排序,而不是以字母排序。
学习目标 掌握远程复制文件的方法
语法 scp[必要参数][选择性参数][主机 1][文件][主机 2][文件]
功能说明 scp 指令用于在网络中的不同主机之间复制文件。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

内建指令
rcp,sftp,ssh,ssh-add,ssh-agent,ssh-keygen,ssh_config,sshd
基础应用
范例395 复制文件到远程主机。
[root@localhost~]# scp -v root@192.168.88.76:/root/123 kk@192.168.88.59:/home/kk/
//复制文件到远程主机
Executing: /usr/bin/ssh -v -x -o'ClearAllForwardings yes' -t -l root 192.168.88.76 scp -v /root/123 'kk@192.168.88.59:/home/kk/'
OpenSSH_4.0p1, OpenSSL 0.9.7f 22 Mar 2005
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.88.76 [192.168.88.76] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.0
debug1: match: OpenSSH_4.0 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
//此处省略了部分结果
Connection to 192.168.88.76 closed.
debug1: Transferred: stdin 0, stdout 0, stderr 37 bytes in 9.0 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 4.1
debug1: Exit status 0
[root@localhost~]#
本例使用指令“scp -v root@192.168.88.76:/root/123 kk@192.168.88.59:/ home/kk/”从本地主机192.168.88.76复制文件/root/123到远端主机192.168.88.59的目录/home/kk/。
学习目标 能使用 slocate 查找文件或目录
语法 slocate[必要参数][选择性参数][文件]
功能说明 slocate 指令用来查找文件,它可以自己建一个数据库,直接在自己的数据库里进行查找,从而提高查找速度。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

内建指令
locate
基础应用
范例396 查找文件。
-sh-2.05b# slocate todaY //查找文件
/usr/share/doc/HTML/en/korganizer/i_go_to_today.png
/usr/share/doc/HTML/en/kdevelop/reference/C/CONTRIB/SNIP/todaybak.c
/usr/share/apps/korganizer/icons/crystalsvg/16x16/actions/today.png
/usr/share/apps/korganizer/icons/crystalsvg/22x22/actions/today.png
/usr/share/apps/korganizer/icons/crystalsvg/32x32/actions/today.png
/usr/share/icons/Bluecurve/16x16/actions/today.png
/usr/share/icons/Bluecurve/22x22/actions/today.png
/usr/share/icons/ikons/16x16/actions/today.png
/usr/share/icons/ikons/22x22/actions/today.png
/usr/share/icons/kdeclassic/16x16/actions/today.png
/usr/share/icons/kdeclassic/22x22/actions/today.png
/usr/share/icons/kdeclassic/32x32/actions/today.png
/usr/share/images/evolution/evolution-today-mini.png
/usr/share/images/evolution/evolution-today.png
-sh-2.05b#
本例使用指令“slocate today”查找含有字符串 today 的文件。
语法 md5sum[选择性参数][必要参数][FILE]
功能说明 计算文件的 md5 值,通过这个值检验文件。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

【概念说明】
md5值:一种哈希值。哈希函数以文件内容为依据,生成一个统一位数的哈希值。
重定向:将指令执行结果输入指定文件保存。
内建指令
sum,cksum
基础应用
范例397 计算当前文件夹下的文件file1的md5值。
[root@localhost other]# ls
file1 file2
[root@localhost other]# md5sum file1 //计算文件file1的md5值
681530dc5eef42e2b200511c64bcf819 file1
范例398 比较文件的不同。
[root@localhost other]# md5sum file1>sum1 //计算文件file1的md5值
[root@localhost other]# md5sum file2>sum2 //计算文件 file2 的 md5 值
[root@localhost other]# diff -q sum1 sum2 //比较两个文件的不同
Files sum1 and sum2 differ
哈希文件file1将结果重定向到文件sum1,哈希文件file2将结果重定向到文件sum2,用diff指令比较两个文件的不同,发现文件sum1和sum2不同,也就是文件file1和文件file2的哈希值不同,即文件file1和文件file2不同。diff的用法可参见diff指令解释。
范例399 使用“--heck”参数,检查一组文件中某些文件的改变。
[root@localhost other]# md5sum file1 file2 >sum //计算文件 file1 和 file2 的 md5 值
[root@localhost other]# md5sum --check sum //检验文件的内容是否发生变化
file1: OK
file2: OK
[root@localhost other]# echo "abc" >file2 //改变文件file2的内容
[root@localhost other]# md5sum --check sum //检验文件的内容是否发生变化
file1: OK
file2: FAILED
md5sum: WARNING: 1 of 2 computed checksums did NOT match
哈希文件file1和file2得到的哈希值存到文件sum,利用“md5sum–check”指令检查文件file1和file2中的内容有没有变化,第一次检查时文件均没有发生变化,第二次利用echo指令改变文件file2的值,再次利用“md5sum–check”指令进行检查,发现文件file2发生了变化。
语法 git
功能说明 git 指令用来管理文件。
内建指令
dir,ls
基础应用
范例400 管理文件与目录。
[root@localhost littleProg]#git //管理文件与目录
本例使用指令git管理文件与目录。
学习目标 掌握 pg 指令浏览文件的方法
语法 pg[必要参数][选择性参数][文件]
功能说明 pg 指令用来显示文件内容。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

内建指令
more
基础应用
范例401 显示文件的内容。
root@localhost:~# pg iptables.sh //显示文件的内容
#!
echo "Enable IP Forwarding..."
echo 1 >/proc/sys/net/ipv4/ip_forward
echo "Starting iptables rules..."
/sbin/modprobe iptable_filter
/sbin/modprobe ip6table_filter
/sbin/modprobe ip_tables
/sbin/modprobe ip6_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
#iptables -P INPUT DROP
#iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A FORWARD -d 192.168.88.88 -j ACCEPT
iptables -t nat -A PREROUTING -d 202.112.146.70 -p tcp --dport 3389 -j DNAT --to-destination 192.168.88.88:3389
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i eth1 -p icmp -j ACCEPT
iptables -A INPUT -i eth1 -p udp --dport 2304 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 21:23 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 8888 -j ACCEPT
#iptables -A INPUT -i eth1 -p udp --dport 177 -j ACCEPT
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.88.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.88.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.88.88 -j SNAT --to-source 202.112.146.70(EOF):
本例使用指令“pg iptables.sh”显示文件 iptables.sh 的内容。
范例402 设置提示符。
root@localhost:~# pg -p aisinile iptables.sh //显示文件内容并设置提示符
#!
echo "Enable IP Forwarding..."
echo 1 >/proc/sys/net/ipv4/ip_forward
echo "Starting iptables rules..."
/sbin/modprobe iptable_filter
/sbin/modprobe ip6table_filter
/sbin/modprobe ip_tables
/sbin/modprobe ip6_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
#iptables -P INPUT DROP
#iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A FORWARD -d 192.168.88.88 -j ACCEPT
iptables -t nat -A PREROUTING -d 202.112.146.70 -p tcp --dport 3389 -j DNAT --to-destination 192.168.88.88:3389
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i eth1 -p icmp -j ACCEPT
iptables -A INPUT -i eth1 -p udp --dport 2304 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 21:23 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 8888 -j ACCEPT
#iptables -A INPUT -i eth1 -p udp --dport 177 -j ACCEPT
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.88.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.88.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.88.88 -j SNAT --to-source 202.112.146.70
(EOF)aisinile
本例使用指令“pg -p aisinile iptables.sh”显示文件内容并设置提示符为“aisinile”,取代默认的提示符“:”。
语法 info[必要参数][选择性参数]
功能说明 info 指令将以 info 的格式读取文档。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

基础应用
范例403 以info的格式查看帮助信息。
[root@localhost~]# info init >1.log //显示init的帮助信息
[root@localhost~]# cat 1.log //显示文件1.log
File: libc.info, Node: Setting Groups, Next: Enable/Disable Setuid, Prev: Setting User ID, Up: Users and Groups
29.7 Setting the Group IDs
==========================
This section describes the functions for altering the group IDs (real
and effective) of a process.To use these facilities, you must include
the header files 'sys/types.h' and 'unistd.h'.
-- Function: int setegid (gid_t NEWGID)
This function sets the effective group ID of the process to
NEWGID, provided that the process is allowed to change its group
ID.Just as with 'seteuid', if the process is privileged it may
change its effective group ID to any value; if it isn't, but it
has a file group ID, then it may change to its real group ID or
file group ID; otherwise it may not change its effective group ID.
Note that a process is only privileged if its effective _user_ ID
is zero.The effective group ID only affects access permissions.
The return values and error conditions for 'setegid' are the same
as those for 'seteuid'.
This function is only present if '_POSIX_SAVED_IDS' is defined.
The calling process is not privileged.
-- Function: int initgroups (const char *USER, gid_t GROUP)
The 'initgroups' function sets the process's supplementary group
IDs to be the normal default for the user name USER.The group
GROUP is automatically included.
This function works by scanning the group database for all the
groups USER belongs to.It then calls 'setgroups' with the list it
has constructed.
The return values and error conditions are the same as for
'setgroups'.
If you are interested in the groups a particular user belongs to,
but do not want to change the process's supplementary group IDs, you
can use 'getgrouplist'.To use 'getgrouplist', your programs should
include the header file 'grp.h'.
-- Function: int getgrouplist (const char *USER, gid_t GROUP, gid_t
*GROUPS, int *NGROUPS)
The 'getgrouplist' function scans the group database for all the
groups USER belongs to.Up to *NGROUPS group IDs corresponding to
these groups are stored in the array GROUPS; the return value from
the function is the number of group IDs actually stored.If
*NGROUPS is smaller than the total number of groups found, then
'getgrouplist' returns a value of '-1' and stores the actual
number of groups in *NGROUPS.The group GROUP is automatically
included in the list of groups returned by 'getgrouplist'.
Here's how to use 'getgrouplist' to read all supplementary groups
for USER:
gid_t *
supplementary_groups (char *user)
{
int ngroups = 16;
gid_t *groups
= (gid_t *) xmalloc (ngroups * sizeof (gid_t));
struct passwd *pw = getpwnam (user);
if (pw == NULL)
return NULL;
if (getgrouplist (pw->pw_name, pw->pw_gid, groups, &ngroups) < 0)
{
groups = xrealloc (ngroups * sizeof (gid_t));
getgrouplist (pw->pw_name, pw->pw_gid, groups, &ngroups);
}
return groups;
}
[root@localhost~]#
本例使用指令“info init”显示指令 init 的帮助信息。中间内容较多,部分已删除,不影响本例的阅读。
范例404 查询info的具体使用方法。
[root@localhost~]#info info //显示info的具体使用方法
【info文件的操作说明】
h:info 帮助信息。
空格:下一页。
[Del]键:上一页。
b:开始处。
e:结束处。
p:上一个主题。
n:下一个主题。
m:菜单。
Ctrl+L:重新显示画面。
q:退出。
?:帮助。
语法 compress[必要参数][选择性参数][目录或者文件]
功能说明 compress 指令通过使用 Lempel-Ziv 算法压缩指定文件的大小。每一个文件将被扩展名为.Z的文件代替,并保存与源文件相同的拥有权、读写权限和更新时间。如果没有文件指定,那么标准输入将被压缩,并且输出到标准输出。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

基础应用
范例405 压缩文件。
[root@localhost ~]# compress a.c //压缩文件a.c
[root@localhost ~]# ls
a.c.Z
本例使用指令“compress a.c”压缩文件 a.c,产生压缩文件 a.c.Z,源文件 a.c消失。
范例406 解压文件。
[root@localhost ~]# compress -d a.c.Z //解压缩文件a.c.Z
[root@localhost ~]# ls
a.c
本例使用指令解压文件 a.c.Z,得到文件 a.c。
范例407 压缩文件,保留原始文件,并且将结果输出到标准输出。
[root@localhost ~]# compress -c a.c //压缩文件a.c,并将结果输出到标准输出
范例408 按指定压缩比例进行压缩。
[root@localhost ~]# compress -b 7 a.c //按指定压缩比例进行压缩
范例409 强制压缩文件夹。
[root@localhost home]# compress -rf chord/ //压缩文件夹
[root@localhost home]#
本例使用指令compress -rfchord/强制压缩文件夹/chord下的所有文件。
范例410 解压文件夹下的所有文件。
[root@localhost home]# compress -rfd chord/ //解压文件夹
[root@localhost home]#
本例使用指令 compress -rfd chord/强制解压文件夹/chord下的所有文件。