ls
1.列出文件和文件夹
ls命令应该是人们使用次数最多的一个命令。毕竟,在处理和使用目录中的文件之前,必须先知道目录中有哪些文件。这就是ls命令发挥作用的地方,因为它能够列出目录中的文件和子目录。
说明 ls命令听起来可能很简单,但这个命令的选项组合却是非常多,而且非常使用。
输入ls命令会列出当前所在目录的内容。第一次登录shell时,当前目录是你的home目录。输入ls,可能会看到以下内容:
$ ls Desktop iso pictures program_files todo bin documents music podcasts src videos
2.列出其他文件夹的内容
ls music
要查看某个目录的内容,不必先转到那个目录。假设你现在位于home目录,但是想要看看music目录中有什么内容,那么只需要输入ls命令,后面再跟上你想要查看其内容的文件夹名称,如下所示:
$ ls music Buddy_Holly Clash Donald_Fagen new
在上一个例子中使用的是相对路径,但绝对路径也同样有效。例如:
$ ls /home/scott/music Buddy_Holly Clash Donald_Fagen new
如果你不喜欢每次查看某个目录的内容时,还得在文件系统的各个目录之间来回切换,那么能够指定相对路径或绝对路径就非常方便了。尝试一下下面的命令(“~”字符就像一个别名,代表你的home目录)例如:
$ ls ~/videos Ubuntu_Talk.mpeg nerdtv_1_andy_hertzfeld airhorn_surprise.wmv nerdtv_2_max_levchin apple_navigator.mov nerdtv_3_bill_joy
3.使用通配符列出文件夹的内容
ls ~/videos/*.wmv
如何在包含多个文件的目录中查找文件,还有一种更快的方法。如果你知道正在找的文件格式,例如这个文件名是以.wmv为后缀的,这时就可以使用通配符只显示以.wmv结尾的文件。
$ ls ~/videos Ubuntu_Talk.mpeg nerdtv_1_andy_hertzfeld airhorn_surprise.wmv nerdtv_2_max_levchin apple_navigator.mov nerdtv_3_bill_joy b-ball-e-mail.mov RPG_Nerds.mpeg carwreck.mpg tiger_woods_just_did_it.wmv
$ ls ~/videos/*.wmv airhorn_surprise.wmv tiger_woods_just_did_it.wmv
还有一种更快的方法,也使用了通配符:只查找文件名包含tiger这个单词的文件。
$ ls ~/videos/*tiger* tiger_woods_just_did_it.wmv
4.查看子文件夹中的文件列表
ls -R
查看多个子目录的内容。运行以下命令(除了用ls–R,也可以用ls --recursive):
$ ls -R ~/iso iso: debian-31r0a-i386-netinst.iso knoppix ubuntu iso/knoppix: KNOPPIX_V4.0.2CD.iso KNOPPIX_V4.0.2DVD.iso
-R选项会递归地遍历iso目录,显示iso目录和它的每个子目录的内容。每个文件夹都以原命令中指定的目录作为开始,显示为它们各自相对于该目录的路径,路径名称后面跟着一个冒号,接着再列出相应子文件夹中的所有内容。记住,如果有很多子目录,子目录中又有很多内容的话,递归选项就不太起作用。因为显示的内容将会一屏接着一屏,很难找到你想要的内容。
以单独一列显示内容
ls -1
ls命令按照字母顺序列出目录的内容,每列之间最少保留两个空格,以便阅读。
如果多列显示方式不是你想要的,从逻辑上来讲,你也可以用单独一列的方式来查看ls命令的结果,这时用ls-1(或ls --format= single-column)。
$ ls -1 ~/
bin
Desktop
documents
iso
music
pictures
src
videos
如果目录中的内容多得数不清,这种列举方式可能会变得没完没了,尤其是使用递归选项时更是如此,例如ls -1R ~/。如果看到终端屏幕上没完没了地显示文件列表,这时可以按Ctrl+c组合键取消命令。
用逗号分隔的列表显示内容
ls -m
另外一种显示格式选择就是-m选项(或–format=commas)。
$ ls -m ~/
bin, Desktop, docs, iso, music, pix, src, videos
将-m中的m看作是“,(逗号)”的助记符,这样更容易记住这个选项。当然,如果你正在编写脚本,需要以逗号分隔的列表来表示目录的内容时,这个选项也很有用。不过,这是这个有价值的选项更为高级的一种用法。
查看隐藏的文件和文件夹
ls -a
home目录就有大量的隐藏文件和文件夹,都是在它们的名字前面加上一个“.”,就设置成了不可见的。如果想查看这些隐藏文件,只要使用-a选项(或–all)。
$ ls -a ~/
. .gimp-2.2 .openoffice.org1.9.95
.. .gksu.lock .openoffice.org1.9
.3ddesktop .glade2 .openoffice.org2
.abbrev_defs .gnome .opera.adobe .gnome2_private pictures
首先,ls –a[a代表all(所有)]命令既能显示隐藏内容,也能显示非隐藏内容,所以.gnome和pictures这两个文件都能看到。其次,你总是可以看到“.”和“…”,因为“.”代表当前目录,而“…”则代表上一级目录,即当前目录的父目录。这两个隐藏文件在系统的每个文件夹中都存在,不能删除。每次使用-a选项时就能看到它们。最后,根据不同的目录,-a选项可能显示出你以前没有注意到的大量隐藏文件。
显示文件的类型
ls -F
除了目录中各文件的名称以外,ls命令默认不会告诉你更多其他的信息。仅凭名称,很难区分清楚某项是文件、目录,或是其他什么东西。为了解决这一问题,可以让ls命令提供更多的信息,一种简单方法就是使用-F选项(或–classify)。
$ ls -F ~/bin
adblock_filters.txt fixm3u* pix2tn.pl*
addext* flash.xml* pop_login*
address_book.csv getip* procmail/
address_book.sxc homesize*
programs_kill_artsd*
address_book.xls html2text.py*
programs_usual*
这样显示的信息就多了些。文件后面的“*”(星号)表示该文件是可执行文件,“/”(斜杠)表示它是一个目录。如果文件名后面没有任何附加符号,那这个文件就是一个普通的文件。
字 符 | 含 义 |
---|---|
* | 可执行文件 |
/ | 目录 |
@ | 符号链接文件 |
I | 管道(FIFO) |
= | 套接字(socket) |