Linux命令行之ls

掐指一算,本屌丝进入Linux界已然两年了,虽然如今在shell上敲命令敲得风生水起,然而蓦然回首,才发现其实自己对各种命令只是一知半解。

在使用Linux的入门阶段,敲命令只求迅速解决问题,享受成就感,这是我坚持下来的动力,我很享受这种“直接”和系统底层对话并解决问题的过程;然而,人不能一直停留在那个水平,Linux命令行博大精深,我要将这种享受升级,就不可避免的回炉重造——将以前常用的命令重新认识一边,系统的在脑海中整理一遍,唯有如此才能更有效、精准的用这个强大的工具解决各种问题。

今天,我就从最基本的ls命令开始。
ls是list的简称,顾名思义其作用就是列出或显示。ls后面的参数一般目录,ls将列出这些目录下都有哪些文件(包括目录)。该命令的基本格式为:
ls 选项 文件列表
其中选项可以省略;文件列表中的各个文件以空格分开。文件既可以是目录,也可以是普通的文本文件,但是对于普通文本文件只是简单的将其在命令行显示一下,没什么实际意义。如果ls后面什么也没有,默认将当前目录作为参数,即列出当前目录下的文件。
* ls输出结果时,是以列的方式按字典顺序排序的,这个其实可以自己观察一下 *

那么下面进入关键话题:ls的选项。

  • -a :列出隐藏文件,包括隐藏目录
    很多目录中含有隐藏文件,就是以点号“.”开头的那些文件。如果不加-a选项默认是不会输出这些文件的。在图形界面中也是一样,可以打开自己的家目录,你所能看到的绝不会是家目录下的全部,在ubuntu系统中,你可以按下“Ctrl + H”,马上就会出现另外一大堆文件。

  • -F:在目录文件后面加上正斜线“/”
    这个参数用来区分目录文件和普通文件。其实默认情况下,ls的输出结果中,目录文件和普通文件会用不同的颜色显示;不过有些终端不支持颜色,导致所有文件使用同一种颜色,这时可以采用-F参数来加以区分。

  • -R:递归地列出参数子目录中的文件。也就是说,子目录、孙目录以及所有的后代目录中的文件都将被列出。

  • -l:这个参数对普通文本文件也是有用的,它将以行的形式列出出各个文件的各位详细的信息,每个文件一行,每行的信息从左到右依次为:文件类型、文件权限、文件硬链接总数、文件所属的用户及组、文件大小(以字节Byte为单位)、文件上次修改时间、文件名。如下:

m@sys:~/program/C_codes$ ll
总用量 40
drwxrwxr-x 5 m m 4096  512 19:47 ./
drwxr-xr-x 9 m m 4096  56 22:59 ../
drwxrwxr-x 2 m m 4096  512 20:12 algorithms/
-rwxrwxr-x 1 m m 7314  510 18:26 a.out*
drwxrwxr-x 8 m m 4096  512 20:12 .git/
-rw-rw-r-- 1 m m   24  54 00:15 .gitignore
-rw-rw-r-- 1 m m 1399  427 16:16 stone_scissors_cloth.c
-rw-rw-r-- 1 m m  322  512 19:47 test.c
drwxrwxr-x 3 m m 4096  424 11:24 tools/

上面的总用量到底是啥我还没搞清楚,以后补充。

  • -c:按文件的最后一次修改时间排序,最近的在最前
  • -d:将所有文件按照普通文件处理。有时候我们只想知道某个目录本身的信息,而不想列出其包含哪些文件,如下:
m@sys:~/program/C_codes/algorithms$ ls -ld /etc/
drwxr-xr-x 153 root root 12288  512 20:16 /etc/
  • -r:反序排列

  • -S:按照文件的实际大小排序:

m@sys:~/program/C_codes/algorithms$ ls -Sl
总用量 40
-rwxrwxr-x 1 m m 7399  512 20:11 a.out
-rw-rw-r-- 1 m m 1298  56 17:10 heapsort.c
-rw-rw-r-- 1 m m 1139  54 12:25 merge_sort.c
-rw-rw-r-- 1 m m  915  59 13:43 quicksort.c
-rw-rw-r-- 1 m m  909  512 20:12 stack.c
-rw-rw-r-- 1 m m  782  54 14:50 search_array_sum.c
-rw-rw-r-- 1 m m  687  52 21:28 binary_search.c
-rw-rw-r-- 1 m m  566  54 00:10 insert_sort.c
-rw-rw-r-- 1 m m   97  47 16:22 README.md
  • -s:显示为每个文件分配的磁盘的块(block)的数量,正好解释了上面-l参数总用量的疑惑:
m@sys:~/program/C_codes/algorithms$ ls -sl
总用量 40
8 -rwxrwxr-x 1 m m 7399  512 20:11 a.out
4 -rw-rw-r-- 1 m m  687  52 21:28 binary_search.c
4 -rw-rw-r-- 1 m m 1298  56 17:10 heapsort.c
4 -rw-rw-r-- 1 m m  566  54 00:10 insert_sort.c
4 -rw-rw-r-- 1 m m 1139  54 12:25 merge_sort.c
4 -rw-rw-r-- 1 m m  915  59 13:43 quicksort.c
4 -rw-rw-r-- 1 m m   97  47 16:22 README.md
4 -rw-rw-r-- 1 m m  782  54 14:50 search_array_sum.c
4 -rw-rw-r-- 1 m m  909  512 20:12 stack.c
  • -1:不让所有文件挤在一行,每行只显示一个文件。注意是数字“1”
  • -u:按最后访问时间排序;配合-l及-t参见man ls

以上就是我这次复习的结果,挑选了一些自己不太熟或好玩的选项。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。