Linux命令系列之ls——原来最简单的ls好复杂看起来是最简单的事情了。介绍ls命令的格式如下:ls[option][specificfile]#[]表示可选,直接在命令行输入ls,列出当前目录下的文件和目录。$lsLICENSEREADME.mdhello.c也可以指定具体的目录和文件$ls/bindevhomelib32libx32mntprocrunsrvtmpvarbootetcliblib64mediaoptrootsbinsysusr显示隐藏文件(所谓的隐藏文件以.目录或文件),添加-a选项。$ls-a。...gitLICENSEREADME.mdhello.c#.表示当前目录..表示显示文件的上级目录的详细信息。$ls-altotal44drwxr-xr-x3rootrootroot4096Oct604:20.drwx------1rootroot4096Oct703:16..drwxr-xr-x8rootroot4096Aug2615:28.git-rw-r--r--1rootroot18027Aug2615:28LICENSE-rw-r--r--1rootroot210Aug2615:28README.md-rw-r--r--1rootroot72Aug2615:32hello.c详细信息现在我们仔细分析一下ls的输出:第一行total44表示该目录下所有文件的总大小,单位为KiB。然后下面的每一行在每一行的开头都有10个字符。它们的含义如下:文件类型描述的第一个字符,有的是d,有的是-,在linux系统中,第一个字符表示一个文件的类型,他有以下几种类型:d,表示目录,对于例如,以上。当前目录,..上一级目录。-,表示一般文件,比如上面的hello.c.b,表示块设备,比如我们的磁盘是块设备,它们的位置都是b。$ls-al/开发/|grepsdabrw-rw----1rootdisk8,0Apr3023:16sdabrw-rw----1rootdisk8,1Apr3023:16sda1brw-rw--1rootdisk8,2Apr3023:16sda2brw-rw----1rootdisk8,3Apr3023:16sda3l,意思是符号链接文件,也叫软链接。比如我们创建一个软链接文件并查看。软链接相当于windows中的快捷方式。它并不真正存储数据,而只是存储指向文件的链接。$ln-shello.csoftlink.c$ls-altotal52drwxr-xr-x3rootroot4096Oct703:39.drwx------1rootroot4096Oct703:33..drwxr-xr-x8rootroot4096Aug2615:28.git-rw-r--r--1rootroot18027Aug2615:28LICENSE-rw-r--r--1rootroot210Aug2615:28README.md-rw-r--r--3rootroot72Aug2615:32copy.c-rw-r--r--3rootroot72Aug2615:32dcopy.c-rw-r--r--3rootroot72Aug2615:32hello.clrwxrwxrwx1rootroot7Oct703:39softlink.c->hello.c#表示是软链接p,表示管道。我们在做多个进程通信可能需要这个设备文件。例如,我们创建一个特定的管道:$mkfifotest$lltotal52drwxr-xr-x3rootroot4096Oct705:06./drwx------1rootroot4096Oct703:40../drwxr-xr-x8rootroot4096Aug2615:28.git/-rw-r--r--1rootroot18027Aug2615:28LICENSE-rw-r--r--1rootroot210Aug2615:28README.md-rw-r--r--3rootroot72Aug2615:32copy.c-rw-r--r--3rootroot72Aug2615:32dcopy.c-rw-r--r--3rootroot72Aug2615:32hello.clrwxrwxrwx1rootroot7Oct703:39softlink.c->hello.cprw-r--r--1rootroot0Oct705:06test#这里是你创建的管道s,代表网络通信的套接字。最后9个字符,权限描述用于表示文件的相关权限。对于每个文件,主要有读、写、执行三个权限。这三个权限我们很容易理解。对于一个文件,我们当然要读写。对于某些文件,我们希望它是可执行的。后面会举个例子,我们先看看9位分表的含义。在这9个位置的字符中,如果用-表示,则表示没有对应的权限,如果用对应的r,w,x表示,则表示有对应的权限。这9个字符中的每一个都是一组三个字符。第一组表示文件作者的权限,第二组表示作者组内其他人的权限,第三组表示其他人的权限,即除了作者和Permissions以外的人作者组。比如上图中有一个可执行文件a.out,但是当我们用chmod命令删除它所有的可执行权限时,它就不能执行了,程序的输出显示没有权限。修改前,author、group、others的权限为-rwxr-xr-x,这些人都有可执行权限。但是在执行完命令chmod-xa.out,去掉所有人的可执行权限后,如果我们再想执行a.out,就会报错,提示权限不够。如果我们还想执行a.out,需要重新设置权限补充一下:上面主要讲了权限的问题。让我们谈谈chmod命令。该命令主要用于修改文件的权限,如上。在chmod中,我们可以通过以下方式修改文件的权限:直接通过+r、+w、+x和-r、-w、-x来修改三个不同位置的权限,如下例所示。此外,我们还可以指定特定的人或组。在上面的例子中,我们同样使用了一个数组来表示权限,因为无论哪一类用户都有三种权限,每种权限都有两种状态,有这个权限和没有这个权限。那么每个位置都可以用一个二进制位来表示。当二进制位为1时表示有此权限,为0时表示没有此权限。那么三个二进制数代表一类用户(author,group,others),所以我们可以用三个二进制数来代表每个用户的权限,比如上图中命令chmod746hello.c的输出结果下图一一对应,打击可以仔细对比考虑。OtherNotes至此我们已经完成了对ls输出的第一步分析,接下来我们看第二行,第二行的输出数据是文件中的链接数。对于目录,链接数就是子目录数,对于文件,就是硬链接数。对于一个新创建的文件,硬链接数为1。我们可以使用ln命令来增加一个文件的硬链接数。比如下图中硬链接和软链接的主要区别在于,软链接不会影响链接的数量,他只是指向一个文件,而硬链接不同,他会增加一个文件的链接数量,当我们删除一个文件的时候,其实我们并不是直接从磁盘中删除文件,而是删除文件的链接数减一,当链接数等于0时文件就会被删除,并且删除一个软链接不会影响链接数,当发现是软链接时,它只是读取它指向的那个文件的内容。第三和第四列主要是用户名和用户所在组的组名。第五列是文件的大小,单位是Byte。接下来的三列是对应月日分秒的文件最后修改时间,最后一列是文件名。彩蛋我们可以使用stat命令查看一个文件的详细元数据信息,这些信息保存在文件的inode信息中。$stathello.c文件:hello.c大小:72块:8IO块:4096常规文件设备:91h/145dInode:1577767链接:3Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)访问:2022-10-0705:41:32.685021010+0000修改:2022-10-0705:41:27.547021008+0000更改:2022-10-0705:41:27.552021008+00Birth:2022-08-2615:32:43.726183003+0000对应信息如下:ls-R递归列出子目录下的文件。ls-S按大小排序文件ls-t按最后修改时间排序。ls-r逆序排序。以上就是本文的全部内容,我是LeHung,我们下期再见!!!更多精彩内容合集可以访问项目:https://github.com/Chang-LeHu...关注公众号:一个没用的研究僧,学习更多计算机知识(Java,Python,计算机系统基础,算法和数据结构)知识。
