linux终端和命令行 linux终端命令行翻页( 六 )


保险起见,用rm命令删除文件时 , 可以加上 -i 参数,这样对于每一个要删除的文件,终端都会询问我们是否确定删除 。i是英语inform的缩写,表示“告知,通知” 。
有两种回答:
y:是英语yes的缩写 , 表示“是” 。那么回车确认后 , 文件就删除了 。
n:是英语no的缩写,表示“否” 。那么回车确认后,文件不会删除 。
如果在rm命令后加上-f参数,那么终端不会询问用户是否确定删除文件,不论如何,文件会立刻被强制删除 。
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(符号的)的缩写 。

推荐阅读