详解ls命令中几个被忽视的可选项

2012-11-10
  在Unix操作系统中,利用ls命令可以列出当前目录或者指定目录下的所有目录文件、普通文件与设备文件。利用这个ls命令,搭配其丰富的可选项,其可以完成一些复杂的功能。不过可惜的是,大部分用户只知道ls命令的基本用法。有很多可选项很有用,但是却被大家所忽视了。笔者借这次机会,跟大家说说在ls 命令中几个经常被忽视的可选项。
  一、列出所有的文件。
  如上图所示,执行ls与ls –a命令,两者的执行结果有什么样的区别呢?若光光是一个ls命令,没有带上-a可选项,其显示的结果结果只有一个admin。而带上-a命令后,其显示的结果要多的多。可见,如果在不带可选项-a的情况下,其只显示了部分的目录文件或者普通文件。从以上的结果中可以看出,隐藏的目录文件或者普通文件、以及两个表示当前目录(.)与上级目录(..)的目录文件在不带-a可选项的情况下是不会显示出来的。对于系统工程师来说,主要关注的就是这些隐藏文件。因为有时候系统工程师需要编辑这些隐藏文件。他们在编辑或者复制移动之前,需要先判断一下这个隐藏文件是否存在。为此不得不先利用ls –a命令来查看一下所有的文件,包括隐藏文件。然后再决定下一步该如何走。
  从这里也可以看出,在Unix操作系统中查看隐藏文件与Windows操作系统的不同。在Windows中,需要选中“查看所有隐藏文件”的选项选中看,才可以查看隐藏文件。下次要将这些隐藏文件再度隐藏的话,还需要把这个选项去掉。操作起来相对麻烦一点。而在 Unix操作系统中,只需要在需要显示的时候,加上一个-a可选项即可。另外两者在显示上也有一个细微的区别。在Windows操作系统中,如果目录的数据是隐藏的,那么在显示的时候隐藏的文件夹会有一个淡淡的水印效果。用户可以一目了然的知道这是一个隐藏的文件夹。但是在Unix操作系统中,却没有这方面的特技效果。一般情况下,在Unix操作系统中判断这个目录文件或则普通文件是否是隐藏文件,主要根据其文件名来判断。如上图所示,如果文件名是以英文状态下的点号开头的,就表示这是一个隐藏的目录文件。
  二、以递归方式显示所有的目录与文件。
  虽然采用ls –a可以显示所有的当前目录下的文件。但是其仍然只能够显示当前目录下的目录文件、普通文件等等。而不能够显示下一级子目录中的文件。如上图所示,admin与.kde是当前目录下的两个子目录。若只是使用ls –a命令无法列出这个连个子目录文件夹的文件信息。但是有时候用户需要知道当前目录下的所有文件信息,包括其子目录下的文件内容。如现在用户需要删除一个包含多级子目录的目录文件,但是其又不能够保证这个目录下的文件都没有用了。为此其需要系统显示某个目录树里的所有文件和子目里的内容。让其可以一目了然的判断这些文件是否还有用。如果不能够实现在这个需求的话,用户不得不利用cd命令进入到对应的子目录中,然后再利用ls命令进行查看。如果这个目录的级数比较多或者同级子目录比较多,这个操作起来显然会很麻烦。所以,现在用户就喜欢能够一次性查看某个目录树理的所有文件和子目录里的内容。
  要实现这个目录就需要使用另外一个有用的可选项-R。这个命令又叫做递归选项。Ls命令搭配这个-R选项,可以列出在某个目录树理所有的文件和子目录里的内容。它会以递归的方式遍历整棵目录树,直到所有的目录(包括子目录)都被访问过为止。其实在系统后台就是一个循环。而且其还会以一个很友好的格式来显示相关的内容。如果目录中文件比较多的话,这个命令往往是搭配-x(多列显示)选项使用。如上图所示,执行命令ls –axR后,系统就会比较有条理的列出目录树立的所有文件和子目录中的内容。linux认证网,加入收藏看到上面的输出结果,应该不用笔者做过多的阐述大家就可以知道其代表的含义。
  不过笔者最后还是要啰嗦一句。这个R可选项跟其他的可选项不同,其是大写的。而在Unix操作系统中,大小写是敏感的。为此将这个参数-R写为 -r,系统就无法识别了。所以在使用这个选项的时候,大小写需要特别的注意。另外就是要说一个技巧性的东西了。在ls命令中可以同时多个可选项。一般情况下,多个可选项之间要利用空格分开,并且都需要使用-符号。即如上的命令需要写为ls –a –x –R。不过为了书写的方便,Unix操作系统允许将他们合并在一起写,即可以写为ls –axR。省掉了中间的空格分隔符和后面几个可选项的-前缀。只需要在第一个可选项前面加上-符号前缀即可。
  三、排序输出的结果。
  执行ls命令后在终端上显示的结果,其是排序过的。默认情况下,其是按照文件名的ASCII码排序的。此时可能将普通文件与目录文件混淆排列。其排序的顺序,主要是数字在前、大写字母在中、小写字母在后。这就好像Windows操作系统中按名字排序一样。不过又有所不同。在Windows操作系统中,即使选择按名字来排序,其仍然是文件夹归文件夹、文件归文件。通常情况下,会将文件夹放在前头,将文件排在后头。
  不过在有些情况下,用户可能不满足这个排序结果。如某个应用系统可能每天会产生日志信息。此时用户需要查看其最近建立的日志,其需要按这个文件的建立时间来进行排序。其实类似的情况很多。如笔者在Unix操作系统中部署了一个Oracle数据库系统。而在Oracle数据库系统中有多个日志文件。Oracle数据库系统会将数据库的更改信息循环的写入到这些日志文件中。为此数据库管理员往往需要根据文件的修改时间来排序这些日志文件,以判断日志文件切换是否过于频繁。所以说,在实际工作中,若单从的安ASCII码进行排序往往不能够满足用户的需求。在Windows中,只需要点点鼠标就可以按创建的时间或者修改的时间来进行排序。不过在Unix操作系统中,就有点麻烦。此时用户不得不搭配一些有用的可选项来完成对输出结果的排序。
  如现在用户需要按文件最后的修改时间来排序,那么就需要使用-t可选项;如果需要按最后的访问时间来排序,则需要利用-lu可选项。可见,在ls命令中通过采用不同的可选项,往往可以完成一些特定的排序功能。
  四、判断某个文件是否存在。
  利用ls命令不仅可以显示普通文件或者目录文件的信息,而且还可以用来判断某个文件或者目录是否存在。如利用ls 文件名字的形式,就可以判断需要查找的文件是否存在。如果存在的话,系统会显示这个文件的名字。如果不存在的话,系统会显示错误信息“文件或者目录不存在 ”。从这个提示信息中,我们也可以看出,其不仅可以用来判断普通文件是否存在,而且还可以用来判断目录文件是否存在。在目录中文件或者目录比较多的情况下,通过这种形式可以非常快的判断出某个文件或者目录是否存在。而不需要一个个的去查找。
  不过利用文件名字作为ls命令参数的话,需要注意一个问题。这个问题已经是老生常谈了,但是很多人仍然没有引起足够的重视,即在Unix操作系统中跟Windows操作系统不同,其无论是普通的文件还是目录文件,大小写都是敏感的。故如果大小写输入错误有时候就得不到正确的结果。文件命名存在系统也会说不存在,因为大小写不同,系统会认为是不同的文件。所以这一点在利用文件名作为参数时需要特别注意。
分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com