目录
一、创建文件和目录
二、复制文件和目录
三、删除文件和目录
四、移动文件和目录
五、硬链接和软链接(软链接也指符号链接)
索引节点(inode)
硬链接
软链接(符号链接)
一、创建文件和目录
mkdir命令可以创建一个或多个目录和子目录,使用要创建目录的路径作为参数
如果要创建的文件父目录不存在,mkdir命令将显示创建失败,此时可以使用-p选项,-p选项可以级联的的去创建一个文件,补全创建目标位置缺少的父目录(如下图代码演示)
二、复制文件和目录
cp命令可复制文件,并在当前目录或其他指定目录中创建一个文件,cp命令可以将多个文件复制到一个目录中,此时的最后一个参数必须是目录,当目标目录中的文件与要复制的文件同名时,要复制的文件则会覆盖目标目录中和同名文件。
三、删除文件和目录
rm命令可删除文件,但一般不会删除目录,要想删除目录则要加上-r选项
rm命令加上-i选项可以以交互式的方式删除文件,rm命令加上-f则是强制删除而不提示用户进行确认
也可以使用rmdir命令删除空目录,使用rm命令-r选项删除非空目录。
四、移动文件和目录
mv命令可将文件从一个位置移动到另一个位置,如果将文件的绝对路径看作它的全名,那么移动文件实际上和重命名文件一样。文件的内容保持不变。
上述代码将test1文件在Music目录中重命名为test2
上述代码将test2文件从Music目录下移到Pictures目录下
五、硬链接和软链接(软链接也指符号链接)
在介绍硬链接和软链接之前,我们先引入索引节点的知识,便于更好的区分和理解硬链接和软链接。
索引节点(inode)
每个文件都有对应的inode,inode存储了文件的元信息,如文件的创建者,文件权限,uid,gid,以及创建时间,文件的大小等等。可以用stat命令查看文件的inode信息
inode也会消耗硬盘空间,因此,磁盘格式化的时候分为了两个区域,inode区域和数据区域,通过对inode区域的访问我们可以知道文件存储在磁盘上的那个位置,进而知道文件的具体内容(可以将索引节点比作一本书的目录,我们可以根据目录知道文件的基本信息,并找到文件在书中的具体位置进而阅读到文件的具体内容)
在linux中,打开文件实际上可以分为三个步骤:首先找到文件名对应的inode号码;其次,找到inode号码获取inode信息;最后,根据inode信息找到文件在磁盘上的位置,读出文件数据。
硬链接
在linux中,一个文件只会有一个索引节点,所谓的硬链接便是一个文件的多个文件名,即多个不同的文件名所指向的内容使相同的,它们实际上是一个索引节点(类似与一个人有多种外号,小原子,原原,原子,虽然名字不同,但都是指向同一个人),只占据一个硬盘区域。
使用ls -l 的命令加选项可以查看一个文件的硬链接数目
使用ln命令可以创建硬链接,ln命令需要两个参数:现有文件的路径和要创建硬链接的路径
如上图所示,文件text1和文件pro.2文件的硬链接数目都是2,并且它们有着相同的索引节点
硬链接的局限性:
由于硬链接只是创建了一个文件名,并没有占用新的硬盘空间,因此,创建硬链接只能在同一个文件系统下面进行。
其次,硬链接只能用于常规文件,不能用于目录(当在子目录中创建了父目录的硬链接时会造成循环)或者特殊文件,一般目录都会有两个硬链接("."和"..",即当前目录和它的父目录)
df -i 命令查看inode的总量和剩余量
df -h命令查看磁盘的使用量
软链接(符号链接)
软链接就相当于一个快捷键,它会创建一个新的索引节点,单独占据一块磁盘区域,新创建的软链接所存储的内容其实是你要访问的源文件的路径,因此新创建的软链接指向的文件内容为要访问的文件内容。所以本质上软链接创建的文件内容(实质为要访问文件的路径)和索引节点与源文件的内容和索引节点是不同的。
相较于硬链接,软链接可以指向目录和特殊文件,软链接也可以跨文件系统创建。
可以使用ln命令加-s选项创建软链接
上图创建了指向a目录的软链接c
上图查看各文件的索引节点
如上三个图,c是一个指向a目录的软链接,但是a与c的索引节点不同,删除c中的目录b的同时a中的目录b也被删除了,这说明a,c指向内容相同,且任意改变其中一个的内容另一个也会随之改变。