我的世界做外国壁纸网站,设计logo网站官网,企业自助建站策划方案,建设门户网站的意见和建议1 使用通配符列出文件夹的内容
ls ~/videos/*.wmv
刚才你已经学会了如何在包含多个文件的目录中查找文件#xff0c;但是还有一种更快的方法。如果你知道正在找的Tiger Woods的视频文件是Windows Media格式的#xff0c;那么这个文件名一定是以.wmv为后缀的#xff0c;这时…1 使用通配符列出文件夹的内容
ls ~/videos/*.wmv
刚才你已经学会了如何在包含多个文件的目录中查找文件但是还有一种更快的方法。如果你知道正在找的Tiger Woods的视频文件是Windows Media格式的那么这个文件名一定是以.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 2 查看子文件夹中的文件列表
ls -R
也可以用一个命令来查看多个子目录的内容。假如你正在参加一个LUGLinux Users Group聚会大家都在紧张地安装着Linux。有人说话了“嗨谁有新的Kubuntu的ISO镜像文件能给我用用吗”你记得前几天下载过这么个文件为了确定一下运行以下命令除了用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 iso/ubuntu: kubuntu-5.10-install.iso ubuntu-5.10-install.iso kubuntu-5.10-live.iso ubuntu-5.10-live.iso 就是这个文件在~/iso/ubuntu : kubuntu-5.10-install-i386.iso中。-R选项会递归地遍历iso目录显示iso目录和它的每个子目录的内容。每个文件夹都以原命令中指定的目录作为开始显示为它们各自相对于该目录的路径路径名称后面跟着一个冒号接着再列出相应子文件夹中的所有内容。记住如果有很多子目录子目录中又有很多内容的话递归选项就不太起作用。因为显示的内容将会一屏接着一屏很难找到你想要的内容。当然如果你想做的只是验证一下目录中确实有很多文件和文件夹这时滚动浏览所有内容是很有用的不过这种情况并不经常有。
3 以单独一列显示内容
ls -1
到目前为止你使用的都是ls命令的默认输出格式。注意ls命令按照字母顺序列出目录的内容每列之间最少保留两个空格以便阅读。但是如果你想要用不同的方式来查看内容又该怎么做呢
如果多列显示方式不是你想要的从逻辑上来讲你也可以用单独一列的方式来查看ls命令的结果这时用ls-1或ls --format single-column就够用了。 $ ls -1 ~/ bin Desktop documents iso music pictures src videos 如果目录中的内容多得数不清这种列举方式可能会变得没完没了尤其是使用递归选项时更是如此例如ls -1R ~/。如果看到终端屏幕上没完没了地显示文件列表这时可以按Ctrlc组合键取消命令。
4 用逗号分隔的列表显示内容
ls -m
不论是一列还是多列对于不喜欢标准显示方式的人来说另外一种显示格式选择就是-m选项或--formatcommas。 $ ls -m ~/ bin, Desktop, docs, iso, music, pix, src, videos 将-m中的m看作是“逗号”的助记符这样更容易记住这个选项。当然如果你正在编写脚本需要以逗号分隔的列表来表示目录的内容时这个选项也很有用。不过这是这个有价值的选项更为高级的一种用法。
5 查看隐藏的文件和文件夹
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 –aa代表all所有命令既能显示隐藏内容也能显示非隐藏内容所以.gnome和pictures这两个文件都能看到。其次你总是可以看到“.”和“..”因为“.”代表当前目录而“..”则代表上一级目录即当前目录的父目录。这两个隐藏文件在系统的每个文件夹中都存在不能删除。每次使用-a选项时就能看到它们。最后根据不同的目录-a选项可能显示出你以前没有注意到的大量隐藏文件。
6 显示文件的类型
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* 这样显示的信息就多了些。文件后面的“*”星号表示该文件是可执行文件“/”斜杠表示它是一个目录。如果文件名后面没有任何附加符号那这个文件就是一个普通的文件。表2-1总结了一些其他可能的结尾附加符号。 表2-1 符号和文件类型 字 符 含 义 * 可执行文件 / 目录 符号链接文件 | 管道FIFO 套接字socket
7 用不同的颜色显示内容
ls --color
除了使用-F选项在文件和文件夹名称后面附加特殊的符号还可以让shell用不同的颜色显示内容这样就能够用另一种方法把不同的内容进行分类将它们区分开来。很多Linux系统在安装时就已经设置好shell显示不同的颜色但是如果你的shell还没有设置好就得使用--color选项。 $ ls --color adblock_filters.txt fixm3u pix2tn.pl addext flash.xml pop_login address_book.csv getip procmail 在我安装的系统中可执行文件显示为绿色文件夹显示为蓝色普通文件显示为黑色在我的shell中文本的默认颜色是黑色。表2-2列举了所有常见的颜色关联但要记住特定的Linux发行版本中这些颜色的含义可能会有所不同。 表2-2 颜色和文件类型 颜 色 含 义 默认的shell文本颜色 普通文件 绿色 可执行文件 蓝色 目录 紫红色 符号链接文件 黄色 管道FIFO 紫红色 套接字socket 红色 压缩文件.tar、.zip、.deb、.rpm 紫红色 图片文件.jpg、.gif、.png、.tiff 紫红色 音频文件.mp3、.ogg、.wav
提示 知道系统为各种文件映射了什么颜色吗输入dircolors --print-database自己慢慢看结果吧。也可以使用dircolors命令修改这些颜色配置。
结合--color和-F选项当前目录中有哪些类型的文件一目了然。现在我们就来试一把 $ ls -F --color adblock_filters.txt fixm3u* pix2tn.pl* addext* flash.xml* pop_login* address_book.csv getip* procmail/ 8 显示权限、所有者等详细信息
ls -l
现在你已经学会了如何格式化ls命令的结果以获取更多关于目录内容的信息但是实际内容本身的情况会怎么样呢如何了解文件和文件夹的更多信息例如它们的大小、所有者以及谁可以对它们进行什么样的处理为了获取这些信息需要使用-l选项或—formatlong。 $ ls -l ~/bin total 2951 -rw-r--r-- 1 scott scott 15058 2005-10-03 18:49 ➥adblock_filters.txt -rwxr-xr-- 1 scott root 33 2005-04-19 09:45 ➥addext -rwxr--r-- 1 scott scott 245 2005-10-15 22:38 ➥backup drwxr-xr-x 9 scott scott 1080 2005-09-22 14:42 ➥bin_on_bacon -rw-r--r-- 1 scott scott 237641 2005-10-14 13:50 ➥calendar.ics -rwxr-xr-- 1 scott root 190 2005-04-19 09:45 ➥convertsize drwxr-xr-x 2 scott scott 48 2005-04-19 09:45 ➥credentials -l选项代表long可以看到它提供了目录中文件的大量数据。我们按从右到左的顺序依次介绍你看到的内容。
最右边一列是最简单的内容所列文件的名称。需要ls命令显示文件名的更多信息吗将-F选项加到-l上如ls-lF。设置颜色也非常容易就是用ls -lF --color。
向左一列接下来看到的是日期和时间。这是文件最后被修改的时间包括日期按照年—月—日的格式和时间按照24小时制的格式。
再向左一列是文件的大小单位是字节。对于文件夹来说它的大小计算有些难捉摸。例如前面的计数显示bin_on_bacon目录是1 080 B或者说只比1 KBkilobyte多一点而实际上它里面包含887 KB。根据ls –l命令credentials目录是48 B但它里面却什么也没有怎么回事
还记得在第1章中我们介绍目录只是一种特殊的文件它包含了内部一系列内容吗在这个例子中credentials目录除了“..”以外什么也没有所有目录都必须引用它们的父目录所以它仅有48 B。而bin_on_bacon目录包含30多个文件所以它的大小超过了1080 B。
再往左的两列分别是文件的所有者和所属的组。从前面的列表可以看到几乎每个文件都属于用户scott和组scott只有addext和convertsize文件例外它们属于用户scott和组root。
说明 如果需要修改权限第7章将介绍如何进行操作提示用到的命令是chown和chgrp。
再向左紧接着最后一列这一列包含了一个数字。如果你正在处理一个文件这个数字可以告诉你该文件有多少个硬链接hard link如果它是目录这个数字是指该目录中包含有多少项内容。
提示 有关硬链接和软链接soft link的更多信息可以看看Soft and Hard Links | Scott Granneman或者在Google中搜索“linux hard links”。
现在轮到最左边的第一列了每个文件和目录的真正权限。初看起来它们像是某种神秘的代码不过只要有点知识其实也非常容易理解。每个代码有10个字符分成4组虽然看起来不是这样的。第一组由第一个字符组成第二组由第二个到第四个字符组成第三组包括第五个到第七个字符组成第四组即最后一组由第八个到第十个字符组成。例如可以将credentials目录的权限划分成d|rwx|r-x|r-x。
第一组告诉你它是什么类型的文件。前面已经看到-F和--color选项用不同的方式来展现这一内容-l也是如此。d表示credentials是目录而第一个位置上的–则表示该项是一个文件即便文件是可执行的ls–l仍然只用一个-来表示所以-F和--color选项可以为你提供更多的信息。当然在第一个位置还可能看到其他选项详细内容如表2-3所示。 表2-3 权限字符和文件类型 字 符 含 义 - 普通文件 - 可执行文件 d 目录 l 符号链接文件 s 套接字socket b 块设备block device c 字符设备character device p 命名管道named pipe
提示 要查看表2-3中列出的每种设备至少会有一种的文件可以试试ls –l /dev。
接下来的9个字符组成第二组、第三组、以及第四组分别代表对文件的所有者、文件的组以及系统中所有其他用户的权限。以在前面显示的addext文件为例它的权限是rwxr-xr--这表明所有者scott的权限是rwx组在这个例子中还是scott的权限是r-x系统中其他用户的权限是r--。这些字符代表什么意思呢
每个例子中r表示“允许读取”w表示“允许改写”改写意味着修改和删除x表示“允许执行”–则表示“不允许执行这个操作”。如果原本应该出现r字符的位置现在出现的是-则表示“不允许读取”。这一点对于w和x也同样适用。
这时再看看addext和它的权限rwxr-xr--你就会一下子明白过来所有者scott可以读取、改写和执行文件组root的成员可以读取和执行文件但是不能改写文件主机上的其他任何人通常称为“world”能够读取文件但是不能改写文件或者把它作为程序运行。
现在你已经明白了权限的意义以后会开始注意到某些组合似乎经常出现。例如“rw-r--r--”权限对于很多文件都很常见表示所有者既可以读取也可以修改文件但是组和其他类型的用户就只能读取文件。对于程序文件来说通常会看到rwxr-xr-x的权限表示使用计算机的任何人都可以读取和运行程序但是只有所有者才能修改文件。
然而目录文件则有些不同了。对于一个文件来说r、w、x权限的意义非常明确即读、写或修改或者执行这个文件。但是如何“执行”一个目录呢
我们先从简单的入手r。对于目录这种情况r表示用户可以使用ls命令列出目录的内容。w则表示用户可以在目录中增加更多的文件重命名已经存在的文件或者删除不再需要的文件。x相当于为了运行命令而访问目录的权力需要访问和使用目录中的文件或者是访问目录中的子目录。
可以看到-l选项本身的功能非常强大但是如果和其他选项结合起来它还能发挥更大的作用。你早已学会-a选项的用法它能显示出目录中的所有文件那么现在应该非常明白-la的用法或者用--formatlong --all。 $ la -la ~/ drwxr-xr-x 2 scott scott 200 2005-07-28 01:31 alias drwx------ 2 root root 72 2005-09-16 19:14 .aptitude -rw-r--r-- 1 scott scott 1026 2005-09-25 00:11 .audacity drwxr-xr-x 10 scott scott 592 2005-10-18 11:22 .Azureus -rw------- 1 scott scott 8800 2005-10-18 19:55 .bash_history 说明 根据本章前面学到的内容如果某个文件的所有者和组用户都是scott就可以从列表中删除这一文件数据。
9 以相反的顺序显示列表内容
ls -r
如果你不喜欢-l选项使用的默认字母顺序则可以使用-r或者--reverse选项以相反的顺序来排列显示内容。 $ ls -lar ~/ -rw------- 8800 2005-10-18 19:55 .bash_history drwxr-xr-x 592 2005-10-18 11:22 .Azureus -rw-r--r-- 1026 2005-09-25 00:11 .audacity drwx------ 72 2005-09-16 19:14 .aptitude drwxr-xr-x 200 2005-07-28 01:31 alias 说明 要记住这里使用的是-r而不是-R。-r表示反向而-R则表示递归。
当使用-l选项时输出的结果按照文件和文件夹名称的字母顺序来排序。添加-r选项后将以相反的顺序输出结果但仍然是基于文件名排序的。也要记住在使用ls命令时如果你想将输入的命令和选项的默认输出结果按相反的顺序排列可以随时增加这个-r选项。
10 按文件的扩展名排序
ls -X
文件名称并不只是字母排序时唯一可用的排序对象。也可以对文件的扩展名进行字母顺序的排序。换句话说你可以使用ls命令把所有以.doc结尾的文件分为一组接着是以.jpg结尾的文件最后是以.txt结尾的文件。使用-X选项或--sortextension如果你想按相反的顺序排序只需加上-r选项或者--reverse。 $ ls -lX ~/src drwxr-xr-x 320 2005-10-06 22:35 backups drwxr-xr-x 1336 2005-09-18 15:01 fonts -rw-r--r-- 2983001 2005-06-20 02:15 install.tar.gz -rw-r--r-- 6683923 2005-09-24 22:41 DuckDoom.zip 在结果中最先显示的是文件夹毕竟它们没有文件扩展名后面接着显示具有扩展名的各个文件。尤其是注意install.tar.gz这个文件有两个扩展名但ls命令在排序时使用最后一个扩展名.gz。
11 按日期和时间排序
ls -t
按字母排序是不错但是有时还需要按日期和时间对目录的内容进行排序。要想这样做可以在-l选项的基础上使用-t选项或者--sorttime要按相反顺序排序可以在-l选项的基础上使用-tr选项或者--sorttime –reverse。 $ ls -latr ~/ -rw------- 8800 2005-10-18 19:55 .bash_history drwx------ 368 2005-10-18 23:12 .gnupg drwxr-xr-x 2760 2005-10-18 23:14 bin drwx------ 168 2005-10-19 00:13 .Skype 除了最后一项以外其他所有项都是在同一天修改的。如果不使用-r选项结果将按相反的顺序排列最后一项会出现在第一个位置。
说明 注意在前面这个命令中一次使用了4个选项-latr。你原本可以用-l -a -t –r来代替上述选项但是谁愿意输入所有这么多连字符呢将所有选项组合成一个大选项更快捷也更容易。这些选项的加长版本以两个连字符开始由一个或者两个单词组成的选项就不能组合在一起而必须单独输入如-la --sorttime --reverse。
12 按文件大小进行排序
ls -S
除了按照文件名或者扩展名的字母顺序以及日期和时间对文件排序还可以使用-S或--sortsize选项按照文件大小来排序。 $ ls -laS ~/ -rw-r--r-- 109587 2005-10-19 11:53 .xsession-errors -rw------- 40122 2005-04-20 11:00 .nessusrc -rwxr--r-- 15465 2005-10-12 15:45 .vimrc -rw------- 8757 2005-10-19 08:43 .bash_history 当按照文件大小排序时体积最大的文件会排在第一位。要按相反顺序排序让体积最小的文件排在第一位只需使用-r选项。
13 用K、M和G显示文件大小
ls -h
在上一节中.vimrc文件那一行上的15 465表示这个文件大概有15 KB但是需要自己动脑将字节转换为相应的千字节、兆字节或者吉字节并不总是很方便。通常使用-h或--human-readable选项会更方便也更容易理解。 $ ls -laSh ~/ -rw-r--r-- 100K 2005-10-19 11:44 .xsession-errors -rw------- 40K 2005-04-20 11:00 .nessusrc -rwxr--r-- 16K 2005-10-12 15:45 .vimrc -rw------- 8.6K 2005-10-19 08:43 .bash_history 在这个例子中K代表千字节kilobyte。如果文件足够大还会看到代表兆字节megabyte的M甚至是代表吉字节gigabyte的G。或许你会问使用-h选项时为什么.nessusrc文件的40 122字节显示为40 KB。记住1 KB等于1024字节用40 122除以1 024时得到的是39.1816406千字节ls–h就取整为40 KB。1 MB实际上是1 048 576字节1 GB则是1 073 741 824字节所以在显示这些值时也会进行类似的取整。
说明 在我的~/.bashrc文件中定义了以下别名它们是我用了许多年的。可以使用在本章节学到的内容扩展这些例子并创建满足自己需要的别名。 alias l ls -F alias l1 ls -1F alias la ls -aF alias ll ls -laFh alias ls ls -F