Linux命令学习之原来最简单的ls命令这么复杂

news2024/11/27 2:26:46

ls命令的使用格式如下

ls [选项] [具体的文件] # [] 表示可选

直接在命令行输入ls将当前目录下的列出当前目录下的文件和目录。

1

2

$ls

LICENSE  README.md  hello.c

也可以指定具体的目录和文件

1

2

3

$ls /

bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var

boot  etc  lib   lib64  media   opt  root  sbin  sys  usr

展示隐藏文件(所谓隐藏文件就是以.开头的目录或者文件),增加-a选项。

1

2

$ls -a

.  ..  .git  LICENSE  README.md  hello.c # . 表示当前目录 .. 表示上一级目录

展示文件的详细信息。

1

2

3

4

5

6

7

8

$ls -al

total 44

drwxr-xr-x 3 root root  4096 Oct  6 04:20 .

drwx------ 1 root root  4096 Oct  7 03:16 ..

drwxr-xr-x 8 root root  4096 Aug 26 15:28 .git

-rw-r--r-- 1 root root 18027 Aug 26 15:28 LICENSE

-rw-r--r-- 1 root root   210 Aug 26 15:28 README.md

-rw-r--r-- 1 root root    72 Aug 26 15:32 hello.c

详细信息说明

我们现在来仔细分析一下ls输出结果:

第一行 total 44,表示这个目录下面所有的文件的大小总和,单位是KiB

然后是接下来的每一行,每一行的开头都有10个字符,他们的含义具体如下:

文件类型说明

第一个字符,有的是d, 有的是-,在linux系统当中,这第一个字符表示文件的类型,他有如下几种类型:

  • d,表示目录,比如说上面的.当前目录,..上一级的目录。
  • -,表示一般的文件,比如说上面的hello.c.
  • b,表示块设备,比如我们的磁盘就是一种块设备,他们的这个位置都是b

1

2

3

4

5

$ls -al /dev/ grep sda

brw-rw----  1 root disk      8,   0 Apr 30 23:16 sda

brw-rw----  1 root disk      8,   1 Apr 30 23:16 sda1

brw-rw----  1 root disk      8,   2 Apr 30 23:16 sda2

brw-rw----  1 root disk      8,   3 Apr 30 23:16 sda3

l,表示一个符号链接文件,也叫做软链接。比如我们创建一个软链接文件,并且查看它,软链接就相当于windows中的快捷方式,它并不真正的去存储数据,简单说来只是存储来一个指向一个文件的链接。

1

2

3

4

5

6

7

8

9

10

11

12

$ln -s hello.c softlink.c

$ls -al

total 52

drwxr-xr-x 3 root root  4096 Oct  7 03:39 .

drwx------ 1 root root  4096 Oct  7 03:33 ..

drwxr-xr-x 8 root root  4096 Aug 26 15:28 .git

-rw-r--r-- 1 root root 18027 Aug 26 15:28 LICENSE

-rw-r--r-- 1 root root   210 Aug 26 15:28 README.md

-rw-r--r-- 3 root root    72 Aug 26 15:32 copy.c

-rw-r--r-- 3 root root    72 Aug 26 15:32 dcopy.c

-rw-r--r-- 3 root root    72 Aug 26 15:32 hello.c

lrwxrwxrwx 1 root root     7 Oct  7 03:39 softlink.c -> hello.c # 这里就表示是软链接

p,表示一个管道,我们在进行多进程通信的时候可能需要使用到这个设备文件。比如我们创建一个具体的管道:

1

2

3

4

5

6

7

8

9

10

11

12

13

$mkfifo test

$ll

total 52

drwxr-xr-x 3 root root  4096 Oct  7 05:06 ./

drwx------ 1 root root  4096 Oct  7 03:40 ../

drwxr-xr-x 8 root root  4096 Aug 26 15:28 .git/

-rw-r--r-- 1 root root 18027 Aug 26 15:28 LICENSE

-rw-r--r-- 1 root root   210 Aug 26 15:28 README.md

-rw-r--r-- 3 root root    72 Aug 26 15:32 copy.c

-rw-r--r-- 3 root root    72 Aug 26 15:32 dcopy.c

-rw-r--r-- 3 root root    72 Aug 26 15:32 hello.c

lrwxrwxrwx 1 root root     7 Oct  7 03:39 softlink.c -> hello.c

prw-r--r-- 1 root root     0 Oct  7 05:06 test # 这里就是我么你创建的管道

s,这个表示一个套接字,用于网络通信。

权限说明

对于后面9个字符来说,是用于表示文件的相关权限的。对于每一种文件来说,它主要有三个权限,读、写和执行,我们很容易理解这三种权限,对于一个文件来说我们当然是想要读和写的,对于有的文件来说我们希望他是可执行的。我们稍后具体具一个例子,我们先来看这个9个位置分表表示的含义。

在这9个位置的字符当中如果是用-表示,则说明没有对应的权限,如果是用对应的r,w,x表示,则说明有对应的权限。这9个字符每三个字符是一组,第一组表示文件的作者的权限,第二组表示作者所在组内的其他人的权限,第三组表示其他人的权限,也就是除了作者和作者所在的组之外的其他人的权限。

比如在上图当中有一个可执行文件a.out,但是当我们使用chmod命令将他的所有的可执行权限都删掉的时候他就不可以被执行了,程序输出的结果表示没有权限。在没有修改之前,作者、组和其他人的权限为-rwxr-xr-x,所有的这些人都有可执行的权限。但是当执行命令chmod -x a.out之后去除了所有人的可执行权限之后,再想执行a.out就会报错了,表示权限不够,如果我们还想执行a.out的话就需要将权限重新加回去:

上面主要谈到了关于权限的问题,我们现在来好好谈一谈chmod命令,这条命令主要是用来修改文件的权限的,比如上面那样。在chmod当中我们可以有如下的几种方式去修改文件的权限:

直接通过+r+w+x-r-w-x去修改三个不同的位置的权限,具体如下面这个例子所示。

除此之外我们还可以指定特定的人或者组。

在上面的例子当中我们还使用数组去表示权限,因为不管是那中类型的用户都有三种权限,每一种权限有具有两种状态,有这个权限和没有这个权限。那么每一个位置都可以使用一个二进制位进行表示,当二进制位为1的时候就说明有这个权限,为0的时候就没有这个权限。那么三个二进制位就表示一类用户(作者、组和其他),因此每一个用户的权限我们可以用三个二进制数进行表示,比如在上图当中的chmod 746 hello.c这条命令的输出结果和下图当中是相互对应的,打击可以仔细对照的思考一下。

其他说明

至此我们已经完成了ls输出的第一步分析,接下来我们来看第二行,第二行输出的数据是文件的链接的数目。对于目录来说这个链接的数目就是子目录的数目,对于文件来说就是硬链接的数量。对于一个新创建的文件来说硬链接的数目为1,我们可以是使用ln命令去增加一个文件的硬链接的数量,比如下图

硬链接和软链接的主要区别就是,软链接不会影响链接的数量,他只是指向一个文件,而硬链接不一样,他会增加一个文件链接的数量,当我们删除一个文件的时候事实上并不是直接将这个文件从磁盘当中删除,而是将这个文件的链接数减去一,当这个链接数等于0的时候才会删除这个文件,而删除一个软链接是不会影响链接的数量的,他只是在被发现是软链接的时候去读它指向的那个文件的内容。

第三列和第四列主要是用户名和用户所在的组的组名。第五列是文件的大小,单位是Byte。后面三列是文件上一次修改时间分别对应月、日、分秒,最后一列则是文件名。

彩蛋

我们可以使用stat命令去查看一个文件详细的元数据信息,这些信息是存储在文件的inode信息里面的。

1

2

3

4

5

6

7

8

9

$stat hello.c 

  File: hello.c

  Size: 72         Blocks: 8          IO Block: 4096   regular file

Device: 91h/145d Inode: 1577767     Links: 3

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2022-10-07 05:41:32.685021010 +0000

Modify: 2022-10-07 05:41:27.547021008 +0000

Change: 2022-10-07 05:41:27.552021008 +0000

 Birth: 2022-08-26 15:32:43.726183003 +0000 

对应的信息如下:

  • ls -R 递归列出子目录当中的文件。
  • ls -S 根据文件大小排序
  • ls - t 根据最后一次修改时间排序。
  • ls -r 逆序排列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27288.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin 基础学习笔记第七章——运算符重载及其他约定

如你所知,java在标准库中有一些与特定的类相关联的语言特性。例如,实现java.lang.Iterable接口的对象可以在for循环中使用;实现了java.lang.AutoCloseable接口的对象可以在try-with-resource语句中使用。 一、重载算术运算符 1、重载二元运算…

IIC的使用

借鉴于:蓝桥杯嵌入式快速通关篇,IIC通讯及EEPROM_穿上我的格子衫的博客-CSDN博客 IIC原理超详细讲解---值得一看_Z小旋的博客-CSDN博客_iic 总线空闲:SDA 1,SCL 1; 启动信号:SCL 1,SDA 1 -> 0; 停止信号:SCL …

【王道计算机网络笔记】物理层-通信基础

文章目录物理层接口特性典型的数据通信模型数据通信相关术语三种通信方式(交互方式)串行传输&并行传输(数据传输方式)同步传输&异步传输码元速率带宽失真失真的一种现象——码间串扰奈氏准则(奈奎斯特定理&…

矩阵股份上市首日跌破发行价:振幅达10%,王冠为实际控制人

11月22日,矩阵纵横设计股份有限公司(下称“矩阵股份”,SZ:301365)在深圳证券交易所创业板上市。本次上市,矩阵股份的发行价为34.72元/股,发行数量为3000万股,募资总额约为10.42亿元,…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.15 SpringBoot 整合 task

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.15 SpringBoot 整合 task5.15.1 SpringBoot 整合 …

对zygote的理解

一、 zygote的作用 启动SystemServer SystemServer需要用于zygote准备好的一些系统资源,比如常用类、注册的JNI函数、主题资源、共享库等等,直接从zygote那继承过来,SystemServer就不用重新再加载一遍,这样对性能有很大的提升。 …

CRM系统中联系人管理的十大好处

联系人管理通常是你的CRM策略中的一个关键部分。它是存储和组织联系人数据以便于访问的做法。简而言之,就是管理联系人数据的过程。如今联系人管理已内置到 CRM 系统中。因此,我们可以考虑利用系统软件将以下优点应用于联系人管理中。 1、更好、更持久的…

Matplotlib用法使用、Matplotlib绘图作图画图

一、Matplotlib Matplotlib:专门用于开发2D或3D图表,以渐进、交互式方式实现数据可视化 可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法 能将数据进行可视化,更直观的呈现使数据…

希望所有计算机学生能看到这篇c语言教程

大部分程序员走入编程世界第一个学习的语言就是C语言。 作为一门古老的编程语言,c语言拥有48年的发展历程。 为什么要学习 C语言? C语言是学习计算机程序设计语言的入门语言。C语言是一门偏底层的语言,学好它,可以让你更好的了…

E - Fire! (双向bfs)

UVA-11624-Fire! 题意:在n*m的网格内,有一个人和n堆火,人可以往上下左右四个方向走,同时所有的火也会想四周蔓延,问你人可不可以在火包围他之前逃离这个n*m的范围。 思路:问人可不可以逃离这个范围&#xf…

m基于VDLL的矢量型GPS信号跟踪算法matlab仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 载波跟踪环是传统独立式GPS接收机最脆弱的环节,针对弱信号环境下其比伪码跟踪环路更容易失锁的问题,给出一种基于矢量频率锁定环(vector-frequency lo…

集成学习-Boosting

Boosting 采用串行的方式训练,各基分类器之间有依赖。根据当前模型损失函数的负梯度训练新的弱分类器,将训练好的弱分类器以累加的形式结合到现有模型中。 过程中会不断减小损失函数,使模型偏差不断降低,方差不会降低。因为各弱分…

《CTFshow - Web入门》02. Web 11~20

Web 11~20web11知识点题解web12知识点题解web13知识点题解web14知识点题解web15知识点题解web16知识点题解web17知识点题解web18知识点题解web19知识点题解web20知识点题解web11 知识点 dns检查查询:http://dbcha.com/,输入域名,获取flag。…

MySQL数据库期末考试试题及参考答案(07)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 如果不想提交当前事务,可以使用_____语句回滚事务。每个事务都是完整不可分割的最小单元是事务的_____性。MySQL中,显式开启事务的语句…

屏幕视频捕获组件-ByteScout Screen Capturing SDK

使用 ByteScout Screen Capturing SDK,您可以轻松地将屏幕视频捕获功能添加到您的应用程序中。输出带有音频、鼠标移动和点击的高质量桌面屏幕视频录制。 主要优势 只需几行代码即可在您的应用中启用屏幕视频捕获和屏幕录制功能;无需互联网连接即可离线…

Django day1

在windows下可以直接的创建django项目 但是需要把自动生成的templates和setting里面的DIRS里面字段删除(templates自动生成的可以删不删都行,我是看视频那个老师删了,但是setting DIRS里面的字段需要删,至于具体为啥我已经忘了&am…

TiDB数据库概述——PD

PD PD的架构与功能TSO的分配PD的调度原理label的作用 PD的架构 PD的个数一般是奇数个的。 PD的主要功能: 整个集群TiKV的元数据存储分配全局ID和事务ID生成全局时间戳TSO收集群信息进行调度提供label,支持高可用提供TiDB Dashboard 路由功能 用key…

vue3使用富文本编辑器wangEditor-v5(未使用composition api写法)

效果 安装 安装核心库和其vue组件库 yarn add wangeditor/editor yarn add wangeditor/editor-for-vuenext使用v-model封装富文本组件editor.vue <template><div class"editor-box"><Toolbar class"toolbar" :editor"editor" …

Flink是什么?场景?处理流的发展演变?

Flink是什么&#xff1f;Flink是什么&#xff1f;为什么选择Flink&#xff1f;什么场景需要处理流数据?处理流的发展演变Flink是什么&#xff1f; Apache Flink 是一个在无界和有界数据流上进行状态计算的框架和分布式处理引擎。Flink 能在所有常见集群环境中运行&#xff0c…

线性表的链式存储的基本

链表是线性表的链式存储方式&#xff0c;逻辑上相邻的数据在计算机内的存储位置不一定相邻&#xff0c;因此&#xff0c;我们需要为每一个元素设置有一个指针来指向与它逻辑相邻的元素。 为此&#xff0c;我们为每个元素设置一个结点&#xff0c;每个结点由数据域和指针域组成…