linux的命令提示行 linux命令行没反应( 四 )


这个命令也挺危险的,用得不好可能你的子目录和文件都没了 。
以上命令会删除one这个目录,包括其子目录和文件 。
其实,也存在一个命令
看着和 rm -r 挺像的 。但是这个命令有个局限性:只能删除空的目录 。
创建链接
事实上,Linux下有两种链接类型:
为了区分这两种链接类型的不同 , 我们首先来谈一谈如Linux这样的操作系统中文件在硬盘上的存放 。
文件在硬盘上存储时,大致来说(请注意我用了“大致来说”) , 每个文件有两部分:
文件名的列表是储存在硬盘的其他地方的,和文件内容分开存放,这样方便Linux管理 。
注意:为什么我上面要用“大致说来”呢?因为此处我们简化了描述,其实每个文件有三部分:
我们这里简化地将文件分为两部分:文件名和文件内容 。因为我们不想把事情复杂化,我们想要理解两种链接类型的区别,暂时只要知道这些就够了 。
每个文件的文件内容被分配到一个标示号码,就是inode 。因此每个文件名都绑定到它的文件内容(用inode标识) 。原理如下图:
下面我们学习如何创建硬链接和软连接 。
比之软链接 , 硬链接的使用几率小很多 。但是我们还是要学习一下,毕竟可能会用到 。
硬链接的原理:使链接的两个文件共享同样的文件内容,也就是同样的inode 。
所以一旦文件1和文件2之间有了硬链接,那么你修改文件1或文件2,其实修改的是相同的一块内容 。只不过我们可以用两个文件名来取到文件内容 。
硬链接有一个缺陷:只能创建指向文件的硬链接 , 不能创建指向目录的硬链接 。但是软链接可以指向文件或目录 。当然了,事实上,通过一些参数的修改,也可以创建指向目录的硬链接,但是比较复杂,这里不再详述 。所以对于目录的链接,我们一般都是用软链接 。
硬链接原理图:
要创建硬链接,直接用ln命令,不加任何参数:
我们可以用ls -i命令查看一下(-i参数可以显示文件的inode) 。对于硬链接来说 , 删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除 。
我们用ls -l命令查看文件信息的时候,第二列的那个2 , 其实是表示拥有相同inode号的文件数 。不难理解,因为它们指向相同的文件内容,所以共享一个inode 。
这个第二列的数字,一般来说对于普通文件 , 都是1,因为不同文件inode不同嘛 。对于目录来说,这第二列的数字标明目录内所含文件数目 。
其实,软链接才是真正像我们在Windows下的快捷方式的,其原理很相似 。
创建硬链接是ln不带任何参数,但是要创建软链接需要加上-s参数 。s是symbolic(符号的)的缩写 。
file2指向的不再是file1的文件内容(和硬链接不同) , 而是指向file1的文件名 。
软链接原理图:
用ls -l命令查看一下 , 会发现形式和之前的硬链接不一样噢 , file2的信息是这样的: file2-file1,表示file2指向file1 。
而且file2前面的权限那里的第一个字母变成了l,表示link(链接) 。之前硬链接的时候是没有l的 , 硬链接外表看起来就和普通文件类似 。
我们用ls -l命令查看文件信息的时候,第二列的那个1,表示拥有相同inode号的文件数 。不难理解 , 因为file2指向file1,它们并没有指向同一块文件内容,所以它们的inode号不相同 。
软链接的特点:
Linux命令行提示符美化(PS1&PS2&PS3&PS4) PS1是主提示符变量,也是默认提示符变量 。默认值 [\u@\h \W]$ ,显示用户主机名称和工作目录 。

推荐阅读