Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

Linux目录的基本架构(基本上所有Linux版本的目录架构都遵循Linux基金会发布的标准文件系统架构规范,即FHS)

FHS规定,Linux是一个树形目录。最重要的是根目录,所有的目录都位于根目录下。根目录下至少应该包括如下12个目录:


当使用Linux时,我们总是处于某一个目录下,这个所处的目录被称为“工作目录”。登录系统时,默认的工作目录总是登录用户的“家目录”,也即/root。

我们可以再提示符中观察到当前所处的工作目录,也可以通过pwd命令用来显示当前完整的“工作目录”


可以用cd命令切换工作目录,(change directory)。比如,输入命令 cd /temp把工作目录切换到tmp目录中。

如果想要切换的目录和当前工作目录在同一层,用“cd  /要切换的目录名”;

如果想要切换的目录在当前工作目录的下一层,用“cd 要切换的目录名”(不需要加斜杠)

为了方便操作,Linux的外壳程序BASH提供了一些特殊字符代表特定目录,有如下几种:

1. “.”:表示当前工作目录,

2. “..”表示工作目录的上层目录,

3.“-”表示前一个工作目录,

4. “~”表示用户“家目录”,比如:

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接


mkdir(Make Directory):用于创建目录。

在当前目录的下,创建一个子目录,只需要将创建的目录名跟在命令mkdir空格后面就可以了。或者后面跟空格加上完整的文件绝对路径。

比如:

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

也可以通过添加一个-p选项来创建嵌套目录,比如:(在图片目录下创建cv5,同时在cv5下创建picture目录)

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

rmdir(Remove Directory):用于删除目录。(只能删除空目录)

比如:(在图片目录中删除cv3空目录)

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

删除cv空目录

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

删除文件名时,文件名的后缀要带上。

rm -f ./要删除的文件。终端不会提醒发问“是否删除文件”。(带参数f,表示强制删除)

rm 文件名。终端会提醒发问“是否要删除文件”。

rm -R ./要删除的文件或目录。终端会提醒发问“是否要删除文件”。

如果要删除的对象里面包含目录,那么一定要带上-r或者-R选项。

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接


列出文件和文件属性

列出文件:命令ls,ls后可以跟一个文件名(列出该文件)、一个目录名(列出该目录下的文件)或者不跟任何东西(列出当前所属工作目录下的文件)

ls往往带选项使用,-a:表示列出包括隐藏文件的所有文件,-l:表示长格式列出文件,列出文件名外,还要列出文件的详细主键信息。 -a和-l可以连用,表示以长格式列出指定目录下的所有文件

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

-al后,每一行都表示每个文件的详细属性信息。(文件的大小的单位为字节)

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

重点关注第1,3,4字段:

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

1、3、4字段三个一起决定了文件的访问权限。第一个字段表示文件的类型和权限、第三个字段表示文件的拥有者,第四个字段表示文件从属的用户组。

那么,什么是文件的拥有者?什么又是文件从属的用户组呢?

——>在Linux中,与一个文件有关系的用户被分成三类:

1. 文件拥有者(owner):文件的拥有者只能有一个

2.文件所属的用户组(group):一个用户组里的用户,可以是多个

3.其他用户(others)

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

这就要看第一个字段了,即文件的类型和权限,第一个字段由10个字符组成,第一个字符表示文件的类型,如果是'd',表示目录文件;‘-’表示普通文件;‘c’表示字符设备文件;‘b’表示块设备文件;‘l’表示符号链接文件。其中后9个字符分为3组,表示是每三个字符分别规定了文件拥有者、文件所属的用户组里的用户和其他用户对于这个文件的访问权限。

访问权限可以分为三类:r(读权限)、w(修改或者删除权限)、x(执行权限,表示可以运行这个文件),特定位上如果是‘-’字符,就表示没有相应的权限。

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

这个文件对于它的拥有者是"rwx",表示“可读、可写、可执行”

这个文件对于它所属的用户组的用户是"r-x",表示“可读、不可写、可执行”

这个文件对于其他用户是“r--”,表示仅仅“可读”

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

用命令chmod可以修改文件的访问权限

用命令chown来修改文件拥有者和文件从属用户组的属性


命令cp(copy的缩写):拷贝文件

命令mv(move的缩写):移动文件

命令rm(remove的缩写):删除文件

命令touch:创建文件,把要创建的文件名跟在touch命令后面就可以了,命令创建的是一个没有任何内容的空文件。(可以查看文件大小为0字节)注意:如果touch创建的文件已经存在时,那么会改变该文件的时间戳属性。


命令ln-s(创建符号链接,Link-symbolic):后跟两个参数,第一个参数是源文件,即链接要指向的文件,第二个参数为创建的链接文件名。

符号链接文件和源文件不是同一个文件,不仅名字不一样,文件的各个属性不一样。符号链接文件名不仅有自己的名字,还有源文件的名字。

 

硬链接:硬链接和符号链接完全不一样。在搞清楚硬链接是什么的之前,要搞清楚Linux是怎么存储文件呢。

——>在Linux中,当划分分区和磁盘格式化的时候,整个分区会被划分为两个部分:Inode区和Data Block区。

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

在Linux中,每个文件都被分为两个部分存放,一部分是文件的唯一标识,inode-number以及文件属性信息放在inode区的一个inode中。inode和inode-number是一一对应的。另一部分是文件的实际数据,放在data block区中。

在Linux中,我们需要通过每个文件的inode来找到存放文件数据的data block。在一个硬盘中,不可能有两个文件共有一个inode,自然不可能有两个文件的inode-number是一样的。

如果我们将一个硬盘分区比作一本书的话,Inode区就是目录,data block区就是其内容。(必须通过目录找到具体内容)

命令ls -il:列出文件的inode-number来进行观察。


Linux中的目录到底是什么样的文件?

简单来说,目录是一张表,目录中有多少文件,这张表中就有多少表项。

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

因为Linux存储文件的过程是:通过文件名找到文件对应的inode-number,然后找到文件的inode,最后找到文件的数据。

硬链接就是在目录这张表中,让一个indo-number对应多个文件名,文件inode和数据还是一份没有变,只不过文件多了一个名字,这个名字就被称为硬链接。

Linux入门——第二课——切换创建删除目录、列出文件和文件属性、拷贝剪切删除链接

命令ln(link):后带两个参数,第一个参数是链接指向的文件,第二个参数是创建的硬链接文件名。


如果将源文件删除,硬链接文件不会失效。只有文件还存在一个文件名,那么文件就会正常。

注意:1. 强烈不推荐为目录创建硬链接,容易造成目录遍历死循环

          2. 不能跨硬盘分区创建硬链接,因为在不同的磁盘分区中,文件的Inode不再是唯一的。