Linux 命令行与 shell 脚本编程大全 (3rd ed)(25):基本的 bash shell 命令 3.5&3.5.1

阅读数:13 2019 年 11 月 17 日 15:21

Linux命令行与shell脚本编程大全(3rd ed)(25):基本的bash shell命令 3.5&3.5.1

内容简介
这是一本关于 Linux 命令行与 shell 脚本编程的全方位教程,主要包括四大部分:Linux 命令行,shell 脚本编程基础,高级 shell 脚本编程,如何创建实用的 shell 脚本。本书针对 Linux 系统的新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的 shell 脚本。

(文件和目录列表)

要想知道系统中有哪些文件,可以使用列表命令(ls)。本节将描述ls命令和可用来格式化其输出信息的选项。

(基本列表功能)

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参数会继续进行遍历。正如你所看到的,如果目录结构很庞大,输出内容会变得很长。

评论

发布