要想知道系统中有哪些文件,可以使用列表命令( ls )。本节将描述 ls 命令和可用来格式化
其输出信息的选项。
3.5.1 基本列表功能
ls 命令最基本的形式会显示当前目录下的文件和目录:

$ ls
Desktop Downloads Music Pictures Templates Videos
Documents examples.desktop my_script Public test_file
$

注意, ls 命令输出的列表是按字母排序的(按列排序而不是按行排序)。如果用户用的是支
持彩色的终端仿真器, ls 命令还可以用不同的颜色来区分不同类型的文件。 LS_COLORS 环境变
量控制着这个功能。(第6章中会讲到环境变量。)不同的Linux发行版根据各自终端仿真器的能力
设置这个环境变量。
如果没安装彩色终端仿真器,可用带 -F 参数的 ls 命令轻松区分文件和目录。使用 -F 参数可
以得到如下输出:

$ ls -F
Desktop/ Downloads/ Music/ Pictures/ Templates/ Videos/
Documents/ examples.desktop my_script* Public/ test_file
$

-F 参数在目录名后加了正斜线(/),以方便用户在输出中分辨它们。类似地,它会在可执行
文件(比如上面的my_script文件)的后面加个星号,以便用户找出可在系统上运行的文件。
基本的 ls 命令在某种意义上有点容易让人误解。它显示了当前目录下的文件和目录,但并没有
将全部都显示出来。Linux经常采用隐藏文件来保存配置信息。在Linux上,隐藏文件通常是文件名
以点号开始的文件。这些文件并没有在默认的 ls 命令输出中显示出来,因此我们称其为隐藏文件。
要把隐藏文件和普通文件及目录一起显示出来,就得用到 -a 参数。下面是一个带有 -a 参数
的 ls 命令的例子:

$ ls -a
. .compiz examples.desktop Music test_file
.. .config .gconf my_script Videos
.bash_history Desktop .gstreamer-0.10 Pictures .Xauthority
.bash_logout .dmrc .ICEauthority .profile .xsession-errors
.bashrc Documents .local Public .xsession-errors.old
.cache Downloads .mozilla Templates
$

所有以点号开头的隐藏文件现在都显示出来了。注意,有三个以.bash开始的文件。它们是bash
shell环境所使用的隐藏文件,在第6章会对其进行详细的讲解。
-R 参数是 ls 命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中
的文件。如果目录很多,这个输出就会很长。以下是 -R 参数输出的简单例子:

$ ls -F -R
.:
Desktop/ Downloads/ Music/ Pictures/ Templates/ Videos/
Documents/ examples.desktop my_script* Public/ test_file
./Desktop:
./Documents:
./Downloads:
./Music:
ILoveLinux.mp3*
./Pictures:
./Public:
./Templates:
./Videos:
$

注意,首先 -R 参数显示了当前目录下的内容,也就是之前例子中用户home目录下的那些文
件。另外,它还显示出了用户home目录下所有子目录及其内容。只有Music子目录中包含了一个
可执行文件ILoveLinux.mp3。
窍门 选项并一定要像例子中那样分开输入: ls –F –R 。它们可以进行如下合并: ls –FR 。
在上一个例子中,子目录中没再包含子目录。如果有更多的子目录, -R 参数会继续进行遍历。
正如你所看到的,如果目录结构很庞大,输出内容会变得很长。

3.5.2 显示长列表
在基本的输出列表中, ls 命令并未输出太多每个文件的相关信息。要显示附加信息,另一个
常用的参数是 -l 。 -l 参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。

$ ls -l
total 48
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Desktop
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Documents
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Downloads
-rw-r--r-- 1 christine christine 8980 Apr 22 13:36 examples.desktop
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fall
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
-rw-rw-r-- 1 christine christine 0 May 21 13:44 full
drwxr-xr-x 2 christine christine 4096 May 21 11:39 Music
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_file
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
-rw-rw-r-- 1 christine christine 0 May 21 13:42 new_file
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Pictures
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Public
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Templates
-rw-rw-r-- 1 christine christine 0 May 21 11:28 test_file
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Videos
$

这种长列表格式的输出在每一行中列出了单个文件或目录。除了文件名,输出中还有其他有
用信息。输出的第一行显示了在目录中包含的总块数。在此之后,每一行都包含了关于文件(或
目录)的下述信息:
  文件类型,比如目录( d )、文件( - )、字符型文件( c )或块设备( b );
  文件的权限(参见第6章);
  文件的硬链接总数;
  文件属主的用户名;
  文件属组的组名;
  文件的大小(以字节为单位);
  文件的上次修改时间;
  文件名或目录名。
-l 参数是一个强大的工具。有了它,你几乎可以看到系统上任何文件或目录的大部分信息。
在进行文件管理时, ls 命令的很多参数都能派上用场。如果在shell提示符中输入 man ls ,
就能看到可用来修改 ls 命令输出的参数有好几页。
别忘了可以将多个参数结合起来使用。你不时地会发现一些参数组合不仅能够显示出所需的
内容,而且还容易记忆,例如 ls –alF 。
3.5.3 过滤输出列表
由前面的例子可知,默认情况下, ls 命令会输出目录下的所有非隐藏文件。有时这个输出会
显得过多,当你只需要查看单个少数文件信息时更是如此。
幸而 ls 命令还支持在命令行中定义过滤器。它会用过滤器来决定应该在输出中显示哪些文件
或目录。
这个过滤器就是一个进行简单文本匹配的字符串。可以在要用的命令行参数之后添加这个过
滤器:
$ ls -l my_script
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$
当用户指定特定文件的名称作为过滤器时, ls 命令只会显示该文件的信息。有时你可能不知
道要找的那个文件的确切名称。 ls 命令能够识别标准通配符,并在过滤器中用它们进行模式匹配:
  问号( ? )代表一个字符;
  星号( * )代表零个或多个字符。
问号可用于过滤器字符串中替代任意位置的单个字符。例如:

$ ls -l my_scr?pt
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$

其中,过滤器 my_scr?pt 与目录中的两个文件匹配。类似地,星号可匹配零个或多个字符。

$ ls -l my*
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_file
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$

使用星号找到了三个名字以my开头的文件。和问号一样,你可以把星号放在过滤器中的任
意位置。

$ ls -l my_s*t
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$

在过滤器中使用星号和问号被称为文件扩展匹配(file globbing),指的是使用通配符进行模
式匹配的过程。通配符正式的名称叫作元字符通配符(metacharacter wildcards)。除了星号和问
号之外,还有更多的元字符通配符可用于文件扩展匹配。可以使用中括号。

$ ls -l my_scr[ai]pt
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$

在这个例子中,我们使用了中括号以及在特定位置上可能出现的两种字符: a 或 i 。中括号表
示一个字符位置并给出多个可能的选择。可以像上面的例子那样将待选的字符列出来,也可以指
定字符范围,例如字母范围 [a – i] 。

$  ls -l f[a-i]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fall
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
$

另外,可以使用感叹号(!)将不需要的内容排除在外。

$ ls -l f[!a]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
-rw-rw-r-- 1 christine christine 0 May 21 13:44 full
$

在进行文件搜索时,文件扩展匹配是一个功能强大的特性。它也可以用于 ls 以外的其他shell
命令。本章随后的部分会有到更多相关的例子。

Linux命令+shell脚本大全:文件和目录列表相关推荐

  1. Linux命令+shell脚本大全:处理目录

    在Linux中,有些命令(比如 cp 命令)对文件和目录都有效,而有些只对目录有效.创建新 目录需要使用本节讲到的一个特殊命令.删除目录也很有意思,本节也会讲到. 3.7.1 创建目录 在Linux中 ...

  2. Linux命令+shell脚本大全:查看文件内容

    Linux中有几个命令可以查看文件的内容,而不需要调用其他文本编辑器(参见第10章).本 节将演示一些可以帮助查看文件内容的命令. 3.8.1 查看文件类型 在显示文件内容之前,应该先了解一下文件的类 ...

  3. Linux命令+shell脚本大全:处理数据文件

    当你有大量数据时,通常很难处理这些信息及提取有用信息.正如在上节中学习的 du 命令, 系统命令很容易输出过量的信息. Linux系统提供了一些命令行工具来处理大量数据.本节将会介绍一些每个系统管理员 ...

  4. Linux命令+shell脚本大全:操作文件系统

    Linux提供了一些不同的工具,我们可以利用它们轻松地在命令行中进行文件系统操作.可 使用键盘随心所欲地创建新的文件系统或者修改已有的文件系统.本节将会带你逐步了解命令行 下的文件系统交互的命令. 8 ...

  5. Linux命令+shell脚本大全:用 aptitude 管理软件包

    免费教程推荐: python.C++.Java.JS.Rust.Go语言入门完全手册(6合1).zip-Python文档类资源-CSDN下载 Linux系统管理员面对的一个常见任务是确定系统上已经安装 ...

  6. Linux命令+shell脚本大全:用 aptitude 安装软件包

    免费教程推荐: python.C++.Java.JS.Rust.Go语言入门完全手册(6合1).zip-Python文档类资源-CSDN下载 了解了怎样在系统中列出软件包信息之后,本节将带你逐步学习怎 ...

  7. Linux中 shell 脚本获取当前工作目录的方法

    Linux中 shell 脚本获取当前工作目录的方法 1. 示例 2. 注意: 参考: 1. 示例 test.sh target_dir=$(cd $(dirname $0); pwd) echo $ ...

  8. linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]

    Shell脚本相关命令 介绍 一句话说明shell脚本是个啥 shell脚本就是将多个shell指令汇集到一起去完成一个复杂的功能 类似windows下的批处理文件 一般以sh为文件后缀 语法 程序结 ...

  9. linux中脚本退出函数,Linux 命令 shell 脚本之09(函数)

    1.使用函数 [oracle@XAG143 myshell]$ cat test_fun1.sh #!/bin/bash # using a function in a script function ...

最新文章

  1. 【iOS开发】企业版证书($299)In-House方式发布指南 (转)
  2. python 学习笔记 运算符优先级(8)
  3. SQLite复杂表的更新方式
  4. 声明与函数、函数指针
  5. LeetCode 402. 移掉K位数字 中等难度
  6. 玩玩自动化测试之selenium篇
  7. spring aop环绕通知@Around
  8. 华为S5700系列交换机配置文件导出、导入
  9. python调用电脑蓝牙_python-从蓝牙设备获取响应
  10. web-使用wsgiref模块模拟web框架
  11. Java 持久化操作之 --io流与序列化
  12. img 隐藏_仙女山美食美景色,那些隐藏在深处角色味香
  13. Day04:继承的意义(下) / 访问控制 / static和final
  14. 详细解读windows无法ping通虚拟机的原因
  15. 【MQTT】MQTT测试工具mqttfx和国内MQTT X工具下载
  16. Win10查看电脑上次的开机时间
  17. 什么是信息安全,怎么保障信息安全?
  18. 微信“小程序”要来了,简单点,解释的方式简单点
  19. 浏览器性能对比测试技术研究与应用
  20. U盘在远程电脑安装软件

热门文章

  1. [Hadoop基础]-- hadoop shell命令汇总
  2. 联想ideapad700重装系统小结
  3. 计算机应用技术要打字快,怎么快速练习计算机打字?
  4. 微信小程序 | 吐血整理的日历及日程时间管理
  5. python语句print type 1234的结果是_python语句print(type(123))的数据结果是( )。_学小易找答案...
  6. 索尼w810c属于java,JAVA测试 vs W810c/W900i/K750c_索尼爱立信 K618i_手机其它OS-中关村在线...
  7. CMake 手册详解之一 语法
  8. oracle数据库数据字典应用
  9. autocad 2014 安装
  10. 《推荐系统实践》读书笔记