ls(list)

命令可以说是Linux下最常用的命令之一

#ls -l;列出文件的详细信息

#ll

以上两个命令一样,ll是ls -l的简写

#ls -al;列出目录下的所有文件,包括以 . 开头的隐藏文件。

#ls -R ;列出所有子目录下的文件

#ls -lh ;列出文件的大小,单位为K

#ls -l | less; 分屏显示,能用pgup,pgdw 翻页,但不能在当前位置退出

#ls usr/bin/*.pl;显示usr/bin目录下的以.pl结尾的文件

#ls -ltr;逆序显示文件,可以测试显示日志

例一:列出/home/peidachang文件夹下的所有文件和目录的详细资料

多个参数可以写在一起,也可以单个的分开写

#ls -l -R /home/peidachang;(#ls -lR /home/peidachang;效果完全一样)

例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令:

#ls -l t*

只列出常用的参数:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

-l 列出文件的详细信息。

-R 列出所有子目录下的文件。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-k 以 k 字节的形式表示文件的大小。
-m 横向输出文件名,并以“,”作分格符。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)。
-s 在每个文件名后输出该文件的大小。
-A 显示除 “.”和“..”外的所有文件。
-S 以文件大小排序。
-1 一行只输出一个文件。

--color=no 不显示彩色文件名

只列出子目录
1. ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(linux)
2. ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)

计算当前目录下的文件数和目录数
下面命令可以分别计算当前目录下的文件和目录个数:

#ls -l * |grep "^-"|wc -l ---文件个数

#ls -l * |grep "^d"|wc -l    ---目录个数

计算当前目录下的文件数量

#ls -|*|grep "^-"| wc -|

显示彩色目录列表
打开/etc/bashrc, 加入如下一行:
alias ls="ls --color"
下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
1. 蓝色-->目录
2. 绿色-->可执行文件
3. 红色-->压缩文件
4. 浅蓝色-->链接文件
5. 灰色-->其他文件

#ls -tl --time-style=full-iso sshd
#ls -ctl --time-style=long-iso

#ll --time=atime test;查看访问时间

$ll --full-time   //显示完整的时间(年,月,日,星期,时,分,秒)

说明:mtime:文件修改时间

atime:访问时间

ctime:状态时间,权限和属性改了

ls 命令的含义是list显示当前目录中的文件名字。注意不加参数它显示除隐藏文件外的所有文件及目录的名字。

1)ls –a 显示当前目录中的所有文件,包含隐藏文件;注意隐藏文件是在文件名字以“.”(英文句号)开头的文件。

# ls –a

.                .gnome2             .nautilus

..               .gnome2_private     oracle_rpm

.bash_profile    .gtkrc-1.2-gnome2   tnsnames.ora

.bashrc          .ICEauthority       types.h

2)ls –l 显示文件及其详细信息。

# ls –l

total 5

-rw-r--r--    1 root     root         1668 Oct 3 2007 anaconda-ks.cfg

drwxr-xr-x    2 root     root         4096 Nov 6 00:04 aa

显示的文件详细信息分别代表什么呢?以上面蓝色部分为例。

total 5 代表当前目录下文件大小的总和为5K(每个目录的大小都按4K算)

drwxr-xr-x 第一个字符有3种情况:“-”表示普通文件,“d”代表目录,“l”代表连接文件,“b”代表设备文件。

后面的9个字符每3个为一组,分别代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。每组中3个字符分别代表读、写、执行的权限,若没有其中的任何一个权限则用“-”表示。执行的权限有两个字符可选“x”代表可执行,“s”代表套接口文件。

紧接着的数字2代表 “aa”这个目录下的目录文件数目(这个数目=隐藏目录数目+普通目录数目)。我们进入“aa”目录用命令 ls –al (为了看到隐藏文件我们加上-a这个参数)

# ls -al

total 8

drwxr-xr-x    2 root    root         4096 Nov 6 00:04 .

drwxr-x---   14 root     root         4096 Nov 6 00:04 ..

(上面的第3行中的2代表当前目录中有子目录2个,即.和..

上面的第4行中的14代表这个目录的上一层目录中有14个子目录。)

再接下来的root代表这个文件(目录)的属主为 用户root

再接下来的root代表这个文件(目录)所属的用户组为 组root

4096 代表文件的大小(字节数),目录的大小总是为4096字节。

Nov 6 00:04 代表文件(目录)的修改时间。

aa代表文件(目录)在名字。

3)文件名颜色的含义

默认色代表普通文件。 例:install.log

绿色代表可执行文件。 例:rc.news

红色代表tar包文件。    例:vim-7.1.tar.bz2

蓝色代表目录文件。    例:aa

水红代表图象文件。    例:Sunset.jpg

青色代表链接文件。    例:rc4.d   (此类文件相当于快捷方式)

黄色代表设备文件。    例:fd0

4)几个比较常用的参数。

-t 按最后修改时间排序。

-S 按文件大小排序。(大写的S)

-r 排序时按倒序。

-h 显示文件大小时增加可读性 (例:1K 234M 2G)

如果这个aa是个普通文件,2就代表这个文件有2个别名(这个文件被人创建了一个硬链接文件)

ls -l 列表信息详解

 

[root@localhost ~]# ls -l

总计 152

-rw-r--r-- 1 root root 2915 08-03 06:16 a

-rw------- 1 root root 1086 07-29 18:35 anaconda-ks.cfg

…………………………………………

第1行:总计(total)

Total后面的数字是指当前目录下所有文件所占用的空间总和。使用ls –lh可查看,也可使用ls –alh查看

第1字段: 文件属性字段

-rw-r--r-- 1 root root 762 07-29 18:19 exit

文件属性字段总共有10个字母组成;第一个字符表示文件类型

-表示该文件是一个普通文件

普通文件分为三种:

文本文件:ASCI码

二进制文件:可执行文件,相当于windows下exe文件

数据文件:处理数据应用

d表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写

注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息

l表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式,表示只是一个符号文件,实际指向另外一个文件

b的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是 很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通 常一个数据块的大小为512字节)

c表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节

设备文件(linux上的硬件)分为两种

区块设备文件,block,以b打头,主要是磁盘

字符设备文件:以character,以c打头,主要是鼠标,键盘

p表示该文件为管道文件,pipe的缩写。与shell编程有关的文件

s表示该文件为sock文件,sock的缩写,即套接字文件。与shell编程有关的文件

链接文件分为硬链接或符号链接两种。

硬链接:多个指向同一文件。硬链接文件大小完全相同,如有多个硬链接,所链接的文件只是一个文件大小。

同一个文件所有的文件都是等价的,操作系统不区分链接创建的先后顺序,若一个文件存在两个链接,那么除去一个文件还可以通过另外一个文件来访问该文件,也可以除去创建链接时用到的文件,但只要还有一个链接存在,就可通过该连接访问文件。

符号链接(软链接):建立一个独立的文件,这个文件会让数据的读取指向它链接的文件内容。类似windows快捷方式。

第1字段后9个字母表示该文件或目录的权限位。

r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)

前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。

SUID和GUID解析:

s:4;g:2;o:1

4777即rwsrwxrwx。6777即rwsrwsrwx

第2字段:文件硬链接数

-rw-r--r-- 1 root root 762 07-29 18:19 exit

如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数

第2字段的值为1,说明文件exit只有exit这一个文件名。即只有一个指向该链接的硬链接。

如果使用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2

[root@localhost ~]# ln exit aexit

[root@localhost ~]# ls -l

总计 160

-rw-r--r-- 2 root root 762 07-29 18:19 aexit

-rw-r--r-- 2 root root 762 07-29 18:19 exit

此时exit 和aexit称为互为硬链接。同指向一个文件,无论是修改哪一个文件,另一个里也做相应的变化,即同一文件的不同文件名

互为硬链接的文件具有相同的文件节点。

[root@localhost ~]# ls -i aexit exit

162302 aexit 162302 exit

软链接设置格式:

Ln –s 源文件 目标链接文件

# ln -s exit bexit

# ls -l

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

-rw-r--r-- 1 root root 762 07-29 18:19 exit

注意:软链接时文件节点号不一样;

[root@localhost ~]# ls -i bexit exit

161765 bexit 162302 exit

如果知道一个文件有多个文件名(链接文件)如何查找他的其他文件名的路径?

使用ls -i 获得其节点号,find查找。

[root@localhost ~]# ls -i /etc/sysconfig/network-scripts/ifcfg-eth0

452946 /etc/sysconfig/network-scripts/ifcfg-eth0       #节点号为 452946

[root@localhost ~]# find /etc -inum 452946

/etc/sysconfig/network-scripts/ifcfg-eth0

第2字段: 链接占用的节点

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

该字段文件占用一个节点,属于软链接(符号链接)

如果是目录,则第2字段表示该目录所含子目录的个数

新建空目录,此目录的第二字段就是2,表示该目录下有两个子目录。

因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",此默认子目录是隐藏的。

每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加。

第3字段:文件(目录)拥有者

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

该字段表示该文件拥有者是谁。只有文件的拥有者才具有改动文件属性的权利。root具有改动任何文件属性的权利。对于目录,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利。

如果某一用户被删除,而该用户家目录还存在,ls -l 查看该文件将显示一个代表用户存在前ID号的数字。

创建用户test,将其加入wang用户组,su切换:

[root@localhost ~]# useradd test

[root@localhost ~]# usermod -g wang test #创建用户test,并将其加入到用户组wang中

[root@localhost ~]# su test

[test@localhost root]$ cd /home/test

[test@localhost ~]$ touch testing

[test@localhost ~]$ ls -l testing

-rw-r--r-- 1 test wang 0 08-03 18:02 testing #最后用ls -l 看到第三字段的文件拥有者为test

[test@localhost ~]$ su root                          #删除用户test

[root@localhost ~]# userdel test

[root@localhost ~]# cd /home/test #进入test的家目录,查看刚刚创建的文件testing。

[root@localhost test]# ls -l

总计 4

-rw-r--r-- 1 504 wang 0 08-03 18:02 testing

第三字段变成数字,此数字是原用户test的ID号。因为文件系统对每个文件记录文件所有者的ID,而非用户名。

第4字段:文件(目录)拥有者所在的组

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。

useradd -g指定该用户所在的主组,-G指定其他组

Useradd –g 组名 用户名

第5字段: 文件所占用的空间(以字节为单位)

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

第5字段表示文件大小,如果是目录,表示该目录大小。注意是目录本身大小,而非目录及其下面的文件的总大小。

第6字段:文件(目录)最近访问(修改)时间

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

可通过touch修改创建时间 # touch exit

把exit创建时间修改当前时间,文件还有最后访问时间,最后修改时间等属性。

可以用ls其它参数显示出来。

第7字段:文件名

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

如果是符号链接,会有"->"符号,跟着它指向的文件名

[转帖]ls命令的更多相关文章

  1. [转帖]Linux中的15个基本‘ls’命令示例

    Linux中的15个基本‘ls’命令示例 https://linux.cn/article-5109-1.html ls -lt 和 ls -ltr 来查看文件新旧顺序. list time rese ...

  2. 每天一个linux命令(1):ls命令

    1. 命令格式: ls [选项] [目录名] 2. 命令功能: 列出目标目录中所有的子目录和文件. 4. 常用范例: 例一:列出/home/peidachang文件夹下的所有文件和目录的详细资料 命令 ...

  3. Linux 常用命令 :ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  4. linux在home目录下使用ls命令卡死

    linux在home目录下使用ls命令卡死,原因可能是mount的某个服务器挂掉或出啥问题了,这个时候umount掉就正常了,如果umount提示device is busy,这时可以使用强制卸载   ...

  5. linux命令(1):ls命令

    ls命令是linux下最常用的命令. ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看lin ...

  6. 《The Linux Command Line》 读书笔记03 ls命令与长格式输出解释 文件权限

    ls命令与长格式输出解释 文件权限 ls命令 ls 命令用于列出目录内容,不带参数时列出当前工作目录的内容,也可以指定目标目录(可以指定多个),列出目标目录下的内容. ls命令的参数 ls -l 长格 ...

  7. Linux之ls命令

    s 命令可以说是linux下最常用的命令之一. -a 列出目录下的所有文件,包括以 . 开头的隐含文件.-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出.-c 输出文件 ...

  8. 从零开始学习Linux(ls命令)

    学习Linux已经两年了,可是仍然是小白一个.用过很多命令,可是很多都没记住,基础不扎实,很大程度上是不记笔记,得过且过. 从今天起,开始整理Linux笔记. Linux每个命令都有--help这个选 ...

  9. Linux命令详解之–ls命令

    今天开始为大家介绍下Linux中常用的命令,首先给大家介绍下Linux中使用频率最高的命令--ls命令. 更多Linux命令详情请看:Linux命令速查手册 linux ls命令用于显示指定工作目录下 ...

  10. ls命令

    ls(list) 命令可以说是Linux下最常用的命令之一 #ls -l;列出文件的详细信息 #ll 以上两个命令一样,ll是ls -l的简写 #ls -al;列出目录下的所有文件,包括以 . 开头的 ...

随机推荐

  1. rasa train nlu详解:1.2-_train_graph()函数

      本文使用<使用ResponseSelector实现校园招聘FAQ机器人>中的例子,主要详解介绍_train_graph()函数中变量的具体值. 一.rasa/model_trainin ...

  2. 大道如青天,协程来通信,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang通道channel的使用EP14

    众所周知,Go lang的作用域相对严格,数据之间的通信往往要依靠参数的传递,但如果想在多个协程任务中间做数据通信,就需要通道(channel)的参与,我们可以把数据封装成一个对象,然后把这个对象的指 ...

  3. 第十部分_Shell脚本之函数

    函数 1. 什么是函数? shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数 给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能 2. 如何定义函数? 方法1 ...

  4. Spark-submit执行流程,了解一下

    摘要:本文主要是通过Spark代码走读来了解spark-submit的流程. 1.任务命令提交 我们在进行Spark任务提交时,会使用"spark-submit -class .....&q ...

  5. Spring Boot Admin 自定义健康检查

    添加自定义类: /** * 监控接口的健康情况 * */ @Component public class ApiHealthIndicator implements HealthIndicator { ...

  6. mac下python3.7安装mysqlclient出错解决

    错误信息 Building wheel for mysqlclient (setup.py) ... error ERROR: Command errored out with exit status ...

  7. 数据结构——AVL树

    AVL树是一种特殊的二叉查找树,其特征在于:对所有节点来说,其左子树和右子树间的高度差小于等于1.本文简要总结下AVL树的几种基本操作. 节点结构体定义 typedef struct Node_s { ...

  8. 《机器学习实战》 | 第3章 决策树(含Matplotlib模块介绍)

    系列文章:<机器学习实战>学习笔记 本篇文章使用到的完整代码:Here 决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度 ...

  9. 将Sublime Text打造为轻量级的C++ IDE

    本文较为详细地介绍了在Windows系统下,如何配置Sublime Text的C++编译运行环境.目前实现了了可以在Sublime Text按下快捷键后,调出CMD或者终端来运行C/C++程序,从而解 ...

  10. Manjaro 上手使用简明教程

    Manjaro 是一个非常好用的系统,在被很多朋友介绍过很多次以后,我终于试着开始使用这个系统了,今天就简单记录一下,方便从别的系统来的移民,尤其是听说过 Arch 大名,也曾向往之,然而因为它的安装 ...