返回列表 发帖

第4学时阅读与浏览命令

下载
第二部分
学习Linux操作系统的基本
命令
第4学时阅读与浏览命令
第5学时操作与搜索命令
第6学时使用shell
第7学时使用X窗口系统
第8学时探索K Desktop Environment桌面环境
下载
第4学时阅读与浏览命令
本学时教程介绍用于浏览、搜索和阅读文件系统中的文件和子目录及L i n u x分区上的子目
录结构的基本的L i n u x操作系统命令。学习完本学时教程之后,应该知道如何获得某个命令的
帮助信息、如何找到L i n u x操作系统中的位置还有如何在硬盘上找到文件。本学时教程从搜索
和浏览子目录的命令开始,接着讲解如何阅读子目录和文件。但是第一步,要先学会如何使
用m a n命令帮助自己。
4.1 使用man命令获取帮助
关于L i n u x操作系统首先要知道的事情之一是可以非常容易获得帮助。象大多数U N I X运
行版本一样, L i n u x操作系统发行版本也为几乎每个程序、工具、命令或系统编程调用编制了
使用手册页。可以得到几乎所有命令的有关信息,包括m a n命令本身。举例来说,输入下列命
令就可以阅读m a n命令的使用手册页:
# man man
使用手册页就像一页U N I X的命令汇总。每页使用手册页文件的名称以一个个位数字作为
文件后缀,存放在/ u s r / m a n的一个子目录下。许多O p e n L i n u x操作系统命令的使用手册页都在
最初的安装过程中或者在单独安装某个命令程序的时候拷贝到硬盘。比如, m a n命令的使用手
册页文件被命名为:
/ u s r / m a n / m a n 1 / m a n . 1 . g z
m a n命令的使用手册页的名称是m a n . 1,但后缀. g z表示m a n . 1文件已
经使用g z i p命令压缩过了。m a n命令在显示使用手册页内容之前会自动解
压缩这个文件。如果希望了解更多关于压缩文件方面的资料,请阅读第5
学时教程“操作和搜索命令“中的”压缩和解压缩文件”一节。
在子目录/ u s r / m a n / m a n 1中存放有超过一千个使用手册页的文件。但是如果想知道使用手
册页的格式和存放的位置,在m a n . 1中是找不到的,它们存放在/ u s r / m a n / m a n 7的m a n . 7文件中。
表4 - 1给出了每个使用手册组成部分的位置和内容。
表4-1 Linux操作系统的使用手册页的组成部分
目录内容
/ u s r / m a n / m a n 1 命令─在s h e l l中执行的命令
/usr/man/man2 系统调用─关于核心函数的文档
/usr/man/man3 库调用─l i b c函数的使用手册页
/usr/man/man4 特殊文件─关于/ d e v目录中的文件的信息
/usr/man/man5 文件格式─/ e t c / p a s s w d和其他文件的详细格式
/usr/man/man6 游戏
/usr/man/man7 宏命令包─对L i n u x文件系统、使用手册页等的说明
/usr/man/man8 系统管理─根操作员操作的使用手册页
/usr/man/man9 核心例程─关于L i n u x操作系统内核源例程或者内核模块技术指标的文档
每页使用手册页都传统地分成几个组成段;各种命令的文档也分成几个组成段。表4 - 2给
出了使用手册页的组织格式。
表4-2 使用手册页的组织格式
组成段说明
Name 命令的名称及简单说明
Synopsis 如何使用这个命令及命令行参数
Description 对这个程序命令及其参数的解释
Files 这个命令用到的文件清单和它们存放的位置
See Also 有相互联系的使用手册页的清单
Diagnostics 特殊输出情况的说明
Bugs 编程漏洞
Author 程序的主要编写者和其他维护人员
在线使用手册页包含特殊的用于n r o ff文本排版程序的排版控制符号,使用特殊的宏命令
(文档参见m a n . 7文件)来控制使用手册页的显示和打印。关于n r o ff文本排版程序更多的资料请
阅读第1 5学时“排版打印文档”。n r o ff格式对其他程序如m a k e w h a t i s,w h a t i s和a p r o p o s等(这
些命令将在本学时教程后面介绍)也极为重要。这些程序要求使用手册页有统一的格式,这样
在执行查询操作时信息就可以正确地显示,建立与O p e n L i n u x操作系统相关的程序数据库的时
候数据就可以正确地存储。
还可以在子目录/ u s r / d o c下找到更多的关于L i n u x操作系统的命令和其他主题的详细资料,
这个子目录中有那些常见问题答疑FA Q s文件和操作指导H O W TO s文件。另外,发行G N U软件
包的自由软件基金会(Free Software Foundation,简称F S F )也把它的许多文件存储为一种特殊
的超文本信息格式。本书中讨论的许多命令都是G N U程序。
有许多L i n u x操作系统使用的软件是来源于自由软件基金会的,它是
由e m a c s编辑器程序(参见第1 4学时教程”文字处理程序” )的编写者
Richard Stallman创立的。F S F组织按照G N U的通用出版许可证( G e n e r a l
Public License,简称G P L )的规定发行它自己的软件。L i n u x操作系统和
G N U软件成功与流行的部分原因就是得益于G P L的规定。如果想了解更
多关于L i n u x操作系统中使用的G N U软件程序、F S F、或者G N U的G P L的
资料,可以试试i n f o命令,它是一个G N U超文本文档的阅读器程序,可以
在子目录/ u s r / i n f o中找到。可以象下面这样使用m a n命令:
man GPL
m a n命令对使用手册页进行检索的时候,其依据主要是根据在子目录/ e t c中m a n . c o n f文件
内容中详细说明的原则。这些原则规定了查找使用手册页的缺省子目录。查找这些使用手册
页的缺省位置有:
M A N PATH /usr/man
M A N PATH /usr/Te X / m a n
M A N PATH usr/local/man
M A N PATH /usr/X11 R 6 / m a n
M A N PATH /usr/openwin/man
第4学时阅读与浏览命令使用47
下载
在X窗口系统中有一个m a n命令的图形化界面的版本,叫做x m a n。不
仅可以使用x m a n阅读使用手册页,还可以看到存放这些使用手册页的子
目录的路径名。如果使用的是X 11下的K D E桌面环境(在第8学时教程“探
索K Desktop Environment桌面环境”中介绍),将会发现K D E的使用手册
页是超文本标记语言格式,即H T M L格式的。
4.2 浏览及搜索文件系统
本小节介绍基本的浏览命令并演示在L i n u x文件系统中移动、查找文件以及如何在L i n u x
操作系统中建立文件信息数据库供诸如w h a t i s之类的命令使用。还会学到具有同样功能的其他
方法和程序以及如何加速搜索,尽快找到文件。
4.2.1 使用cd命令进入不同的目录
新术语cd (切换子目录)命令是在L i n u x文件系统的不同部分之间移动的基本工具。当登录进
入O p e n L i n u x操作系统之后,你处在用户子目录中。这个子目录有一个名字,也就是“路径名”,
它是由/ h o m e /开头,后面跟着你的用户名。
输入c d命令,后面跟着一个路径名,就可以直接进入到另外一个子目录中去。举例来说,
下面的命令把你带到/ u s r / b i n子目录中去:
# cd /usr/bin
在/ u s r / b i n子目录中时,可以用下一个命令进入/ u s r子目录:
# cd ..
在/ u s r / b i n子目录中你还可以使用下面的命令直接进入根目录,即“ /”目录:
# cd .. / ..
最后,你总能够用下面的命令回到自己的用户子目录(也就是保存自己文件的子目录):
# cd 或者
# cd ~
如果想使用m a n命令查看c d命令的使用手册页,会什么也找不到。为
什么呢?因为c d命令是内建在s h e l l中的,而s h e l l在敲过回车键之后就直接
解释执行命令行。第6学时教程“使用s h e l l”的b a s h一节中有更多的详细
资料。
4.2.2 使用pwd命令查看自己所在的位置
p w d (显示工作子目录)命令告诉你自己所在的位置,并显示当前工作子目录。例如,如果
执行命令:
# cd /usr/bin
接着输入:
# pwd
会看到:
/ u s r / b i n
48使用第二部分学习L i n u x操作系统的基本命令
下载
p w d命令虽然有一个使用手册页,但是实际上每次使用p w d命令的时候使用的都是一个内
建在s h e l l中的p w d命令。怎样来区别它们呢?如果试用下面的方式调用p w d命令,就会看到它
只给出当前的工作子目录:
# pwd --help
反之,试着调用子目录/ b i n中的p w d命令,如下所示:
# /bin/pwd --help
这将执行子目录/ b i n中的p w d命令而不是内建在s h e l l中的p w d命令。会看到一个简短的
p w d命令的帮助文件而不是当前工作子目录。如果确实搞不清自己到底在什么位置,可以使用
子目录/ b i n中的p w d命令。
4.2.3 使用find命令在子目录中搜索匹配的文件
f i n d命令是一个功能强大的操作命令,可以使用它在硬盘驱动器上查找文件。只用一条很
简单的f i n d命令就可以在硬盘驱动器上很容易地查找文件。比如说,如果想查找子目录/ u s r中
的s p e l l命令,可以采用下面的方法:
# find /usr -name spell -print
还可以用f i n d命令按照日期查找文件,或者可以指定一个日期范围。例如,如果想查找子
目录/ u s r / b i n中最近一百天没有使用过的程序,可以采用下面的命令:
# find /usr/bin -type f -atime +100 -print
- a t i m e参数后面跟着代表日期的一个数字。如果想在子目录/ u s r / b i n中查找建立不到一天的
新文件或者二十四小时内修改过的文件,可以使用下面的参数:
# find /usr/bin -type f -mtime -1 -print
- m t i m e参数后面跟一个表示天数的数字(本例中是一天或者更短的时间),用来查找修改过
的文件。f i n d命令的搜索字符串中还接受统配符(如*或? ),将在第5学时教程学到这些。举个
简单的例子,可以用f i n d命令下面的格式来显示子目录/ u s r中所有的P o s t S c r i p t格式的文件:
# find /usr -name '; *.ps '; - p r i n t
将在第1 6学时教程“图形工具程序”的“了解L i n u x操作系统的图形文件格式”小节中讨
论P o s t S c r i p t格式。
- x d e v是f i n d命令另外一个很便于使用的参数。我们前面所举的查询操作的例子都局限在
子目录/ u s r中。那么如果想从根目录( / )中开始查找会发生什么事情呢? - x d e v参数把查询操作
限制在当前的文件系统之中,本例中就是L i n u x文件系统。如果没有在当前的文件系统中使
用- x d e v参数,f i n d命令就会不停地检索已挂装的所有的C D - R O M光盘、D O S和Wi n d o w s分区,
这样就可能会找到一些并不感兴趣的文件、减慢搜索过程、输出杂乱的检索结果。
例如,可以用- x d e v参数限制f i n d命令查找一个Wi n d o w s分区。如果希望检索子目录
/ m n y / d o s下已经安装Wi n d o w s中的所有以. s y s结尾的文件,可以按照下面的方法使用- x d e v参数:
# find /mnt/dos -name *.sys -print -xdev
f i n d命令还有许多的不同的参数可以使用。
可以在搜索与删除任务中使用f i n d命令,这样就可以从计算机中删除
选定的文件。请阅读第2 1学时教程“系统监管基础”中“节省硬盘空间”
一节中的详细内容。
f i n d命令能够非常迅速地检索硬盘驱动器和文件系统,但是另外还有一些方法也可以用来
第4学时阅读与浏览命令使用49
下载
快速地查找文件,特别是可执行程序。请继续读下去吧。
4.2.4 使用whereis命令查找文件
w h e r e i s命令可以迅速地找到文件,而且它还可以提供这个文件的二进制可执行文件、源
代码文件和使用手册页存放的位置。例如,下面的命令给出f i n d命令是放在子目录/ u s r / b i n中
的;而它的使用手册页是放在子目录/ u s r / m a n / m a n 1中的:
# whereis find
f i n d: /usr/bin/find /usr/man/man1/find.1.gz
可以采用下面的方法让w h e r e i s命令只查找这个程序的二进制可执行文件:
# whereis -b find
f i n d: / u s r / b i n / f i n d
这在只想查找某个程序的存储位置而不需要知道它的文档存储位置时特别方便。如果
w h e r e i s找不到你让它查找的东西,就会只看见返回一个空字符串,例如:
# whereis foo
f o o:
w h e r e i s命令找不到某个文件的部分原因可能是这个文件没有存在于任何w h e r e i s命令搜索的
子目录中。w h e r e i s命令检索的子目录是固定编写在它的程序中的。虽然这看起来有点象是个缺
陷,但把搜索限制在固定的子目录如/ u s r / m a n、/ u s r / b i n或/ u s r / s b i n中可以加快文件查找的进度。
虽然whereis 命令在查找程序及其使用手册页时就已经比使用f i n d命令快了,但是你还可
以使用一个更快的搜索功能,那就是将在下一小节讨论的l o c a t e命令。
4.2.5 使用locate命令定位文件
加快文件搜索的方法之一是不去搜索文件子目录!可以使用像l o c a t e命令这样的程序来做
到这一点。l o c a t e命令使用的是一个文件名数据库,而检索区区一个文件当然要比搜索整个硬
盘驱动器要节省时间。使用l o c a t e命令查找文件要比使用f i n d命令快得多,其原因是l o c a t e命令
直接去检索这个数据库文件,从中找到匹配的文件名并显示它的查询结果。
l o c a t e命令很容易使用。比如说,如果你想查找你的系统上的所有P o s t S c r i p t格式的文件,
可以使用下面的命令:
# locate *.ps
文件查询结果几乎是立刻就出现在屏幕上了。我想你会认为l o c a t e命令比f i n d命令还要容
易使用一些。但是还是需要注意它们之间的区别: f i n d命令在L i n u x操作系统安装完成后可以
立刻开始进行文件的查询;而l o c a t e命令则需要先为计算机上所有的文件建立一个数据库。这
一点也不必操心,因为建立数据库的工作几乎是完全自动化的。
安装好O p e n L i n u x操作系统之后, l o c a t e命令的数据库文件会在每天凌晨的五点五十分自
动更新。如果想为l o c a t e命令的数据库文件立刻生成一个最新的版本,可以使用u p d a t e d b命令。
以根操作员的身份登录进入系统,或者使用s u命令(参见第2 1学时教程“系统监管基础” )取得
根操作员的权限之后,在提示符下敲入:
# updatedb
u p d a t e d b命令的操作大概需要一分钟左右才能完成。而当它完成的时候,就会在子目录
/ v a r / s t a t e中生成l o c a t e命令的数据库文件l o c a t e d b。对大约9 0 0兆左右的文件容量来说,l o c a t e d b文
件大约会有7 0万个字符。使用l o c a t e命令唯一的不足是随着时间推移,它的数据库文件会因为在
50使用第二部分学习L i n u x操作系统的基本命令
下载
你的计算机系统中添加或者删除文件而跟不上变化。好在O p e n L i n u x操作系统能够自动更新l o c a t e
命令的数据库文件,具体实现方法请阅读第2 4学时教程“使用任务计划实现系统管理自动化”。
4.2.6 使用whatis和apropos命令获取命令简介
第一次探索O p e n L i n u x操作系统的时候,可能会遇上一些不太了解其功能作用的程序。虽
说大部分的L i n u x程序在编写的时候都为它的命令行参数“ ?”、“- h e l p”、或者“- - h e l p”多少
准备了一点帮助信息,但是如果不了解某个程序的具体作用,一般是不会去运行这个程序的。
w h a t i s命令能够从某个程序的使用手册页中抽出一行简单的介绍性文字,帮助你迅速了解
这个程序的具体功能。例如,如果希望了解w h o命令有什么作用,可以输入下面的内容:
# whatis who
显示器清屏,然后w h a t i s命令显示下面这样的一行文字:
who ( 1 ) - show who is logged on
按下字母“Q”键退出w h a t i s命令。类似于l o c a t e命令,需要使用m a k e w h a t i s命令—可以
在子目录/ u s r / s b i n中找到这个命令—来生成一个命令的简介数据库。如果你想这么做,请以
根操作员的身份登录系统并输入:
# makewhatis
m a k e w h a t i s命令就象u p d a t e d b命令一样也需要几分钟来建立w h a t i s命令使用的数据库文
件,这个数据库文件的名字也叫w h a t i s,存放在子目录/ u s r / m a n / m a n 1中。m a k e w h a t i s命令有
几个参数,但它没有使用手册页。如果想看看它的快速简介,可以使用下面的方法:
# makewhat -?
另外,也需要定期更新w h a t i s数据库文件以便跟踪记录那些新安装的程序。第2 4学时教程“使用
任务计划实现系统管理自动化”中介绍了怎样才能让O p e n L i n u x操作系统自动进行这类操作的方法。
现在已经学会了如何使用w h e r e i s和w h a t i s命令帮助你来查找程序和了解某个程序的具体
功能。可是如果打算执行某个操作,却又想不起来哪个程序能够完成这个操作的时候,该怎
么办?在这种情况下,就需要求助于a p r o p o s命令了。
例如,如果你记不起哪个命令是用来搜索文件的,只需要敲入:
可以看到一个从w h a t i s数据库文件中挑选出来的程序清单。阅读完这个清单之后,请按
第4学时阅读与浏览命令使用51
下载
“Q”键退出a p r o p o s命令。a p r o p o s命令在这个数据库文件中按照给出的关键字进行搜索。如果
能保证w h a t i s数据库文件及时更新,就可以使用a p r o p o s命令来帮助找到需要的程序。
也可以使用m a n命令的- K参数来实现a p r o p o s命令同样的功能,但其
搜索过程会很慢,而且搜索结果给出的是每个含有匹配字符串的使用手
册页。例如,如果想检索有那些程序可以处理P o s t S c r i p t格式的数据,可
以试用如下的命令
# man -K PostScript
按“Q”键退出之前会得到如下所示的输出结果:
4.3 阅读子目录和文件
现在已经学会了如何进入不同的子目录、查找文件以及如何进一步查找与程序有关的资
料。下面将介绍在L i n u x操作系统中可以使用的其他的基本命令。本小节将介绍怎样列出一个
子目录中的内容清单、如何对硬盘驱动器上的文件进行归类以及如何阅读文件的内容等等。
为了帮助你入门,我们从学习这些命令的基本格式开始。
4.3.1 使用ls命令列出子目录的内容清单
l s (列出子目录内容清单)命令会是你最经常使用的程序命令之一。使用它最简单的格式,
l s命令可以列出当前子目录下几乎所有的文件。虽然这个命令本身只有两个字母,但是它的命
令行参数可能比其他任何程序都多(最新统计超过7 5个)!
为什么会有这么多的L i n u x命令?为什么这些命令的名称又这么短
呢?如果对L i n u x操作系统不熟悉,很快会发现有许许多多的程序有着很
短的,由每一种命令的首字母组合构成的如c d、p w d、d f、d u、p s、l s、
a s、a r、a t、w等形式的命令名。不要害怕!相反,应该感谢L i n u x操作系
统继承了U N I X中的这么一大笔程序工具的财富。U N I X的哲学是一个好
的程序是一个能够非常好地完成一种操作的小代码段;而操作系统的威
力则来源于它能够把来自几个程序的输出完美地结合到一起。在选择命
令名称的时候,很多情况是根据减少字符输入的原则选定的。一两个字
符就可以表达清楚的事为什么需要敲入一大堆程序名字符呢?另外,许
多早期的U N I X用户是通过非常慢的(波特率只有11 0 )终端线与远端U N I X
主机通讯的,所以短小精炼的命令程序可以传输得更加快一些。在学习
第6学时教程的时候,会更深地体会到这一点。
52使用第二部分学习L i n u x操作系统的基本命令
下载
l s命令的基本格式列出当前子目录中的文件,如下所示:
[ home/bball ] $ ls
N e w s a x h o m e n s m a i l s e a r c h
a u t h o r. m s g d o c u m e n t s r e a d i n g v u l t u r e s . m s g
a u t o m a i l r e s e a r c h
上面的例子中列出了用户子目录中的文件。
也可以使用- m参数把文件用逗号分隔显示在一行上:
# ls -m
News , author.msg , auto , axhome , documents , mail , nsmail , reading ,
å research , search , vultures.msg
如果不喜欢l s命令输出的这种排列方式,也可以用- x参数按水平对齐的方式而不是缺省的
垂直对齐方式列出文件,如下所示:
# ls -x
N e w s a u t h o r. m s g a u t o a x h o m e d o c u m e n t s
m a i l n s m a i l r e a d i n g r e s e a r c h s e a r c h
v u l t u r e s . m s g
但是所有列出来这些都是文件吗?其中有没有子目录呢?区分它们的一个办法就是使
用-F参数:
# ls -F
N e w s / a x h o m e / n s m a i l / s e a r c h *
a u t h o r. m s g d o c u m e n t s / r e a d i n g / v u l t u r e s . m s g
a u t o / m a i l / r e s e a r c h /
正如所看到的,- F参数使得l s命令可以在显示子目录的时候在它的文件名之后加上一个斜
线(“/”)字符。而s e a r c h文件后面的星号(“*”)字符表示这是一个可执行程序。但是这些就
是这个子目录里所有的文件吗?如果希望看到所有的文件,可以将- a参数和- F参数一起使用,
如下所示:
正如你所看到的,除非明确地指出显示所有的文件,那些以句号(“.”)开头的文件或者
子目录是无法通过l s命令显示出来的。使用- F参数是在文件列表清单中查看文件和子目录的一
种方法,但是如果有一台彩色显示器,或者使用的是彩色状态下的X 11的话,就可以让l s命令
以不同的颜色来显示文件、子目录、或者可执行文件。如果想这么做,可以像下面这样使
用- -c o l o r参数:
# ls --color
如果在X 11环境中使用的是x t e r m终端程序,那么子目录将会是蓝色的,程序将会是绿色
的,普通文件则会是黑色的。还可以自己设定不同类型的文件使用不同的颜色。
举例来说,如果希望把所有的图形文件如P C X或者G I F格式的图形显示为红色,并且把所
第4学时阅读与浏览命令使用53
下载
有以. t x t结尾的文本文件显示为淡紫色,需要先建立一个名为L S _ C O L O R S的s h e l l环境变量
—也就是系统或者用户定义的值,定义这些颜色并把这个变量通过下面的办法通知操作系
统:
# LS_COLORS = " *pcx = 31 : *gif = 31 : *txt = 35 " ; export LS_COLORS
在l s命令的使用手册页中给出了缺省的颜色设置值。可以把自己定义的
设置值放入. b a s h r c文件中,这样在下一次登录到O p e n L i n u x操作系统中的时
候就可以使用新的颜色设置了。作为根操作员,还可以为所有的用户设置
系统全局范围的缺省颜色。请阅读第6学时教程去了解如何在O p e n L i n u x操
作系统中定义LS_COLORS及其他环境变量供所有的用户使用。
1. 列出文件的全部信息
想了解更多关于文件的信息吗?可以使用l s命令的- l参数来列出文件的全部信息,如下所
示:
正如你所看到的,总共有八个不同的信息栏。第1栏是文件的权限标志,将在第2 2学时教
程“管理文件和文件系统”中讨论。这些标志通常表明了某个文件的类型以及其他的用户是
否能够对这个文件进行读、写(修改或者删除)、或者运行等操作。
第2栏给出的是这个文件的链接个数,将在第5学时教程中讨论。第3栏是文件所有者的用
户名,第4栏是这个用户所在的用户组组名。所有者和用户组的概念将在第2 2学时教程中讨论。
第5栏给出文件的长度。接下来两栏是这个文件或者子目录创建或者最后一次被修改时的日期
和时间。而最后一栏很明显就是这个文件的文件名。
2. 指定其他的子目录
也可以在l s命令的命令行上指定其他的子目录或者路径名,这个方法可以用来查看其他子
54使用第二部分学习L i n u x操作系统的基本命令
下载
目录中的内容。举例来说,如果想查看子目录/ u s r / b i n中的全部的文件(看到的可能远不止下面
列出的这些),可以使用下面的方法:
新术语规则表达式一种特殊的字符串描述格式语言。l s命令支持使用通配符和规则表达式,
也就是说可以使用与那些你在学习f i n d和l o c a t e命令时看到的例子中相类似、但更加复杂的参
数形式。例如,如果只想列出当前子目录中的文本文件,可以使用下面的方法:
# ls *.txt
最后,如果想看到计算机系统中全部的文件,可以使用l s命令的- R参数,它将逐层进入所
有的子目录并把其中的内容全部显示出来。虽然你可以使用这个方法来检索文件和归类系统
中的文件,但我得告诉你显示的文件可能需要好几分钟。而它的输出结果可能还包括那些不
想列出的文件或者是其他操作系统的文件系统如D O S或Wi n d o w s上的文件,特别是在使用了
下面的命令的时候:
# ls -R /
一个比较好的办法是把- d参数和- R参数一起使用,这样可以只列出有限的子目录层次下
的文件。例如,下面的命令将沿着根目录(即“/”目录)列出三层子目录中的内容:
# ls -Rd /*/*/*
另外,还有一个更好的获得你系统上的目录结构图的办法—t r e e命令—我们马上就要
讲到。
是否喜欢ls -aF显示子目录的方式?是否喜欢l s命令一直使用彩色?
如果希望l s命令能够一直保持这类特色,请阅读第6学时教程。
4.3.2 使用dir和vdir命令列出子目录的内容清单
如果不喜欢在列出子目录内容清单的时候使用l s命令那么多的参数,可以使用d i r或v d i r命
令。与l s命令相比,这两个命令大概只有4 5个命令行参数,但在功能上它们毫不逊色。它们在
使用上与l s命令类似,但是使用了一些缺省的参数。
使用d i r命令的时候就像普通的l s命令那样把文件按列对齐输出,如下所示:
第4学时阅读与浏览命令使用55
下载
使用v d i r命令的时候就像l s命令的- l参数,它缺省地列出文件的全部信息,如下所示:
虽然找不到d i r和v d i r命令它们各自的使用手册页(在l s的使用手册页里提到了它们),但是
可以使用- - h e l p参数得到它们各自的帮助信息。
4.3.3 使用cat命令列出及合并文件
新术语c a t (合并文件)命令用来把文件内容送到你的屏幕上去显示。你也可以使用这个命令
通过一个叫做输出“重定向”的过程把文件内容送到其他的文件中去。本小节只介绍这个命
令的一些基本用法。请阅读第6学时教程中对标准输入、标准输出和重定向等概念的详细讲解。
虽然c a t命令在阅读短文件的内容的时候很有用,但它更经常地被用来进行文件的合并、建立、
覆盖或者添加内容等操作。如果想使用c a t命令查看一个短文件,可以输入如下的命令:
# cat test.txt
This text file was created by the cat command .
56使用第二部分学习L i n u x操作系统的基本命令
下载
Cat could be the world';s simplest text editor .
If you read this book , you’ll learn how to use cat .
This is the last line of text in this file .
c a t命令也有一些参数。如果想在阅读文件的时候加上行号,比方想要注明某个特殊的段
落,可以使用- n参数:
# cat-n test.txt
1 This text file was created by the cat command .
2 Cat could be the world';s simplest text editor .
3 If you read this book , you’ll learn how to use cat .
4 This is the last line of text in this file .
还可以使用c a t命令一次查看多个文件,因为c a t命令也接受通配符:
# cat -n test*
1 This text file was created by the cat command .
2 Cat could be the world';s simplest text editor .
3 If you read this book , you’ll learn how to use cat .
4 This is the last line of text in this file .
5 This is the first line of test2.txt .
6 This file was also created by cat .
7 This is the last line of test2.txt .
正如所看到的, c a t命令在它的输出中包含了另外一个文件,并为整个输出结果的每一行
(不是每个文件)加上了行号。请注意还可以使用下面的方法来查看这两个文件:
# cat test.txt test2.txt
这个命令的输出结果与使用通配符的时候看到的结果是完全一样的。
但是同时查看几个文件只是c a t命令的一种用法。还可以使用c a t命令和重定向操作符
(“>”)来合并文件。例如,如果想把文件t e s t . t x t和文件t e s t 2 . t x t合并到另外一个叫做t e s t 3 . t x t
的文件中去,可以使用下面的方法:
# cat test* > test3.txt
可以用下面的方法检查操作结果:
# ls -l test*
- r w - r - - r - - 1 bball u s e r s 190 Jan 4 16 : 06 t e s t . t x t
- r w - r - - r - - 1 bball u s e r s 108 Jan 4 16 : 07 t e s t 2 . t x t
- r w - r - - r - - 1 bball u s e r s 298 Jan 4 16 : 07 t e s t 3 . t x t
但是如果只是想把t e s t . t x t和t e s t 2 . t x t文件合并,但是并不想再生成另外一个更大的文件的
时候又该怎么办呢? 如果是这种情况,首先需要决定是把t e s t . t x t的内容加到文件t e s t 2 . t x t中去,
还是把t e s t 2 . t x t的内容加入t e s t . t x t中去。然后,使用c a t命令和重定向符“ > >”,敲入下面的内
容:
# cat test.txt >> test2.txt
上面的命令把文件t e s t . t x t的内容添加到文件t e s t 2 . t x t的后面去了。可以再使用c a t命令检查
一下操作结果:
# cat test2.txt
This is the first line of test2.txt .
This file was also created by cat .
This is the last line of test2.txt .
This text file was created by the cat command .
Cat could be the world’s simplest text editor .
第4学时阅读与浏览命令使用57
下载
If you read this book , you’ll learn how to use cat .
This is the last line of text in this file .
需要注意的是如果使用了下面的命令:
# cat -n test.txt >> test2.txt
现在t e s t 2 . t x t文件的内容会是这样的:
# cat test2.txt
This is the first line of test2.txt .
This file was also created by cat .
This is the last line of test2.txt .
1 This text file was created by the cat command .
2 Cat could be the world';s simplest text editor .
3 If you read this book , you’ll learn how to use cat .
4 This is the last line of text in this file .
最后,介绍一个小技巧,可以使用这个技巧在不使用字处理或者文本编辑程序的情况下
建立一个短的文本文件。因为c a t命令可以读取标准输入,所以可以使用c a t命令建立一个文件
并通过键盘直接向这个文件中输入内容。我们以m y f i l e . t x t为示例文件说明如下。先输入以下
命令:
# cat > myfile.txt
现在,输入一些文本内容,如下所示:
This is the cat word processor .
This is the end of the file.
现在,按下C t r l + D组合键关闭这个文件。使用下面的命令看看是否完成了操作:
# ls -l myfile.txt
- r w - r - - r - - 1 bball u s e r s 61 Jan 4 16 : 11 m y f i l e . t x t
# cat myfile.txt
This is the cat word processor .
This is the end of the file.
c a t命令可以把任何文件(不仅仅是文本文件)的内容显示出来。虽然c a t命令在查看一个或
者几个短文件的时候很有用,但是当你想读取一个很长的文本文件的时候,又该怎么办呢?
我们继续往下学习,将会学习到页命令,它们能够使阅读长文件的工作变得简单些。
4.3.4 使用more命令阅读文件
新术语m o r e命令是L i n u x操作系统命令中我们称之为页命令的家族中的一员。页命令使你在
浏览文件的时候可以一次阅读一屏或者一行。这在阅读大量使用手册页的时候特别有帮助,
因为m a n命令是使用了一个页命令来显示每一页的。
m o r e命令是一个传统意义上的页命令,因为它提供了早期页命令的基本特色,可以在命
令行上像下面这样使用m o r e命令,如下所示:
# more longfile.txt
如果需要帮助,请按下“ H” 键,将看到一个帮助画面。如果使用了惊叹号( ! ),还可以
从m o r e命令中去执行其他的命令。阅读一个文本文件是相当容易的,因为可以敲空格键阅读
后一页,也可以敲B键阅读前一页。
m o r e命令也有一些命令行参数。在各种常见的参数之外,还可以自行设置屏幕提示( m o r e
命令会显示正在阅读的文件的读取百分比)、设置屏幕画面大小(前后翻阅文本时显示的行数)、
58使用第二部分学习L i n u x操作系统的基本命令
下载
使用多个文件名或通配符及打开或关闭滚屏功能。
虽然可能会觉得在阅读文件方面m o r e命令的表现相当不错,可是l e s s页命令可能会更让你
喜欢。
4.3.5 使用less命令浏览文件
l e s s命令多少有点象m o r e命令,但是l e s s命令的功能比m o r e命令更强大。l e s s命令和m o r e
命令一样都是页命令。但是它的编写者Mark Nudelman,改进了m o r e命令中的一些特色,并
又添加了许多其他的特色。
l e s s命令提供了许多比m o r e命令优秀的功能:
• 可以使用光标键在文本文件中前后滚屏。
• 可以用行号或百分比作为书签来浏览文件。
• 可以实现在多个文件中进行复杂的检索、格式匹配、高亮度显示等操作。
• 键盘操作与字处理程序如e m a c s兼容。
• 阅读到文件结束或者标准输入结束的时候l e s s命令不会退出。
• 屏幕底部的信息提示更容易控制使用,而且提供了更多的信息。
• 带有许多的附件,包括一个独立的键定义程序l e s s k e y,这样就可以定义使用哪些按键来
控制l e s s命令.
当安装了L i n u x操作系统之后, l e s s页命令将是许多程序(比如m a n命令等)使用的缺省的页
命令。如果想阅读压缩文件(那些带有. g z后缀的文件,我们将在第5学时教程中学习),可以使
用保存在子目录/ u s r / b i n下的z l e s s命令。
作为演示,首先使用l s命令建立一个内容为子目录/ u s r / b i n中所有O p e n L i n u x操作系统命令
的文本文件,如下所示:
# ls /usr/bin > programs.txt
上面的命令建立了一个名为p r o g r a m s . t x t的文本文件。然后,使用l e s s命令阅读这个文件,
如下所示:
# less programs.txt
l e s s命令装入这个文件并显示这个文件开头的一些行。如果想向下翻一页,按空格键。如
果想向上翻一页,按B键。也可以用光标键向前、后、甚至左右移动。在一般的情况下, l e s s
命令的命令提示符是显示在屏幕左下角的一个冒号( : )。总之,可以使用命令行参数- M看到更
多关于文件的信息,如下所示:
# less -M programs.txt
现在,当浏览文件的时候, l e s s命令将显示出这个文件的名字、当前页码及总的页码,表
示当前位置在整个文件中的位置的百分比数值。这个提示符看起来有点象下面这个样子:
programs.txt line 91/1221 8%
这表明正在阅读的是文件p r o g r a m s . t x t,当前屏幕最顶端显示的是总数为1 2 2 1行文本的第
9 1行。如果想运行其他的程序,比如w c字数统计程序,需要敲入一个惊叹号( ! ),后面再跟上
命令行,然后按下回车键,如下所示:
! wc programs.txt
w c程序将在屏幕上回显文件p r o g r a m s . t x t的行数、字数和字符数。当这个命令执行完毕之
后,l e s s命令显示单词d o n e (完成)并等你按下回车键。
第4学时阅读与浏览命令使用59
下载
还可以使用l e s s搜索命令在一个文本文件中进行快速查找。先按下斜杠键( / ),再输入一个
单词或者词组的一部分。l e s s命令会在文本文件中进行快速查找,并把找到的第一个搜索目标
高亮度显示。如果希望继续查找,请按下斜杠键( / ),再按下回车键。如果想退出阅读,请按
下Q键,就返回到s h e l l命令行。
4.4 使用head或tail命令阅读文件的开头和结尾
虽然h e a d和t a i l命令并不是页命令,但是只想阅读一个文件的开头或者结尾的部分的时候,
它们可以让工作变得更简单一些。虽然这两个程序象大多数L i n u x操作系统命令一样,只是被
设计用来完成一两个功能的,但是它们的确做得很好。
除了传统的用来显示文件开头x行的-n x参数之外, h e a d命令还有一些其他的参数。在
L i n u x操作系统发行版本中的h e a d命令是G N U文本工具包的一个组成部分,它还可以从一个文
件的开头显示任何数目的5 1 2个字符、1K (1024个字符)或者兆字节规模大小的文本块。象c a t
命令一样, h e a d命令也可以处理二进制文件。如果按照传统方式使用h e a d命令,它就会从一
个或几个文件的开头节选几行文本。比如,如果想看看L i n u x操作系统安装指南中每个H T M L
文件的开头的前两行,应该使用h e a d命令的参数-n 2,再输入这些文件的路径,如下所示:
请注意,我在上面只给出了头两个文件的输出结果,并且h e a d命令的缺省输出是包括了
文件名的(放在= = >和< = =之间)。如果只是想阅读那些不带文件名的信息,请使用参数- q,如
下所示:
当面临的任务是阅读一个很长的文件,而最有用的信息却是在这个文件的结尾部分的时
候,使用t a i l命令就特别有帮助了。我们举个例子,假定需要在系统信息中查看出错信息。在
子目录/ v a r / l o g中有一个m e s s a g e文件,这里面有系统操作的详细记录,但是登录记录是在这个
m e s s a g e s文件的末尾更新的。换句话说,这个文件的内容是不断添加上去的,所有最新的信
息都在文件的结尾部分。如果想使用t a i l命令查看这个m e s s a g e s文件末尾最后的十二行,必须
先以根操作员的身份登录,然后再输入下面的命令:
60使用第二部分学习L i n u x操作系统的基本命令
下载
如果在你试用这个例子的时候, O p e n L i n u x给出下面的信息:
tail : /var/log/messages : Permission denied
这意味着必须以根操作员的身份登录!因为安全的原因, O p e n L i n u x
操作系统禁止无关的用户阅读系统登录记录。因此,可以试试使用下面
的命令:
su -c tail -n 12 /var/log/messages
当按下回车键之后, s u命令会向你提问根操作员口令字。输入根操作
员口令字,再按下回车键,就可以查看信息了。这是一个以根操作员身
份运行命令的好方法。
象这样阅读大型文件的确是很方便的,特别是在系统的m e s s a g e s文件有可能增大到一百
万个字符以上的情况下。
4.5 课时小结
本学时教程介绍了十多个可以在O p e n L i n u x操作系统中使用的基本命令。知道如何获得帮
助、怎样列出子目录内容清单以及如何在文件系统中移动等都是非常重要的技能。在继续学
习O p e n L i n u x操作系统的过程中,将会反复地用到许多这样的命令。
4.6 专家答疑
问:我在子目录/ u s r / d o c中的不同的子目录下发现许多文件名为R E D A M E的文件,怎样才
能阅读某个R E A D M E文件?
答:在命令行中使用l e s s页命令,后面再跟上想阅读的文件的路径名。比如说,如果想阅
读关于pdksh shell的R E D A M E文件,输入下面这样一个l e s s命令的命令行,然后按下回车键:
less /usr/dos/pdksh-5.2.13/README
问:有一些路径名实在太长了!有没有一个容易点的阅读或者列文件清单的方法?
答:还使用上面的例子,可以象下面那样在路径名中使用一个星号(★):
第4学时阅读与浏览命令使用61
下载
less /usr/doc/pdksh*/REDAME
问:我使用了上面的例子,但是是这样使用星号的: less /usr/doc/p★/ R E A D M E,而l e s s
命令说它在读总数是三十五个文件的第一个!怎么回事,我怎样才能阅读到其他的文件?
答:在子目录/ u s r / d o c下至少有3 7个不同的子目录是以字母p开头的。很明显,有2 5个子
目录中包含有名称为R E D A M E的文件。在l e s s页命令中,如果想跳到下一个文件,需要输入
一个冒号( : ),再按下N键。
问:怎样才能只列出子目录的名称?比如说,我想看看子目录/ u s r / d o c下所有以字母z开头
的子目录的名称。
答:使用l e s s命令的- d参数,即子目录命令行参数。如果想查看所有名称以字母z开头的
子目录,请输入下面的命令:
ls -d /usr/doc/z*
4.7 练习题
1. 使用c d命令进入子目录/ u s r / b i n。然后输入c d并按下回车键。现在你在哪儿?
2. 接着,再用c d命令进入/目录。输入cd ~并按下回车键。再输入cd -并按下回车键。现在
你在哪儿?
3. cat目录的- n参数会把显示在屏幕上面的文本行加上行号。怎样才能在使用l e s s命令阅读
的文件中加上行号?
62使用第二部分学习L i n u x操作系统的基本命令
下载

第4学时阅读与浏览命令

谢了呵呵

TOP

第4学时阅读与浏览命令

支持一下楼主!

TOP

返回列表 回复 发帖