linux终端执行命令 linux终端常用命令( 四 )


f是英语force的缩写 。
以上命令会强制删除file文件 。
r是英语recursive的缩写 , 表示“递归的” 。所以使用-r参数,可以使rm命令删除目录,并且递归删除其包含的子目录和文件 。
这个命令也挺危险的,用得不好可能你的子目录和文件都没了 。
以上命令会删除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号不相同 。

推荐阅读