Linux文件链接

简介: 这篇文章将学习Linux中的文件链接,文件链接分为软链接和硬链接,今天通过本篇文章希望读者可以了解软链接和硬链接的特性以及区别,并学会如何创建软链接和硬链接,下面进入学习吧!

前言


这篇文章将学习Linux中的文件链接,文件链接分为软链接和硬链接,今天通过本篇文章希望读者可以了解软链接和硬链接的特性以及区别,并学会如何创建软链接和硬链接,下面进入学习吧!


一、什么是文件链接?


链接文件在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。


二、详细介绍


1.符号链接(软链接)


命令:ln   -s  源文件  链接文件

s:symbolic link/软链接,所以-s就是创建软链接。


1)创建文件输入内容,并创建软链接


代码如下(示例):

//创建file1文件并输入内容
[root@localhost ~]# echo "这是file1" > /mnt/disk3/file1
//创建file1的链接在桌面名为file1-1
[root@localhost ~]# ln -s /mnt/disk3/file1 /root/桌面/file-1


d2811bd9beef46a4a74791f02e202184.png


如图可看到桌面的链接已经创建成功了,发现文件图标的右下角有个箭头,和Windows的快捷方式是一样的标志,当然它的功能也和快捷方式相同,这个时候file1成为源文件。


2)查看file1-1的内容


代码如下(示例):

//查看file1-1的内容
[root@localhost ~]# cat /root/桌面/file1-1
这是file1
//追加信息到file1中
[root@localhost ~]# echo "软链接创建成功"  >> /mnt/disk3/file1
//查看file1-1的内容
[root@localhost ~]# cat /root/桌面/file1-1
这是file1
软链接创建成功
//查看file1内容
[root@localhost ~]# cat /mnt/disk3/file1
这是file1
软链接创建成功


更改 file1的内容后,查看file1和file1-1的信息是一致的。


3)删除软链接文件和删除源文件的区别


代码如下(示例):

//创建file1的另一个软链接名为file1-2
[root@localhost ~]# ln -s /mnt/disk3/file1  /root/桌面/file1-2
//删除file1-1文件
[root@localhost ~]# rm -rf /root/桌面/file1-1
//查看file1文件,仍然可以查看
[root@localhost ~]# cat /mnt/disk3/file1
这是file1
软链接创建成功
//删除file1文件(源文件)
[root@localhost ~]# rm -rf /mnt/disk3/file1
//查看file1-2内容,已经查不到了
[root@localhost ~]# cat /root/桌面/file1-2
cat: /root/桌面/file1-2: 没有那个文件或目录


0f6b133fc6a343d88d99d81fba0f1aa4.png


如图看到此时的file1-2文件信息爆红,并且链接源文件名称闪烁白色。


4)重新在disk3目录下创建file1文件查看file1-2内容


代码如下(示例):

[root@localhost ~]# echo 1111 > /mnt/disk3/file1
[root@localhost ~]# cat /root/桌面/file1-2
1111

重新在原来位置创建文件,链接文件又可以打开查看。


5)对目录进行软链接创建


代码如下(示例):

//创建文件夹content1
[root@localhost ~]# mkdir /test/content1
//创建content1的软链接---content1-1
[root@localhost ~]# ln -s /test/content1 /root/桌面/content1-1
//在content1下创建一个file0文件
[root@localhost ~]# touch  /test/content1/file0
//查看content1目录下的文件
[root@localhost ~]# ll /test/content1
总用量 0
-rw-r--r--. 1 root root 0 10月 25 19:31 file0
//查看content1-1下的文件
[root@localhost ~]# ll /root/桌面/content1-1/
总用量 0
-rw-r--r--. 1 root root 0 10月 25 19:31 file0

总结


       软链接像快捷方式,可以对文件和目录做软链接。

       软链接记录的只是源文件。

       软链接失去源文件不可用。


2.硬链接


命令:ln   源文件   链接文件

注意:硬链接只能和源文件在同一分区才能成功创建,不在同一分区创建会失败;

          不允许将硬链接指向目录;

          硬链接的inode号相同,但并不占用inode。


1)在不同分区下创建硬链接


代码如下(示例):

//在disk1创建disk3下file1的硬链接,创建失败
[root@localhost ~]# ln /mnt/disk3/file1 /mnt/disk1/file1-1
ln: 无法创建硬链接"/mnt/disk1/file1-1" => "/mnt/disk3/file1": 无效的跨设备连接


2e1a3d669f80442285e97d3f72c573b5.png


在/mnt/disk1下创建/mnt/disk3/file1文件的硬链接创建失败,因为如图,disk1是sdb1分区的挂载点,disk3是sdb3分区的挂载点 ,所以创建硬链接失败。


2)在相同分区下创建硬链接,并观察


代码如下(示例):

//在disk3下创建file1的硬链接
[root@localhost ~]# ln /mnt/disk3/file1 /mnt/disk3/file1-1
[root@localhost ~]# ll /mnt/disk3
总用量 16
-rw-r--r--. 2 root root     5 10月 25 16:59 file1
-rw-r--r--. 2 root root     5 10月 25 16:59 file1-1
drwx------. 2 root root 12288 10月 19 13:56 lost+found
//在file1中输入内容
[root@localhost ~]# echo "hello" > /mnt/disk3/file1
[root@localhost ~]# cat /mnt/disk3/file1
hello
[root@localhost ~]# cat /mnt/disk3/file1-1
hello
[root@localhost ~]# cat /mnt/disk3/file1-2
hello
[root@localhost ~]# cat /mnt/disk3/file1-3
hello


48130ed2c0a942cbbdc3895de337272b.png


注意看如图红色框内的内容,第一次创建一个file1的硬链接,查看file1和file1-1的文件信息,链接数都是2,当接下来创建flie1-2和file1-3两个file1的硬链接后查看他们的文件信息发现链接数都变成了4,所以之前文章的链接数代表的是硬链接的数目。


3)创建目录的硬链接


代码如下(示例):

//创建目录
[root@localhost ~]# mkdir /mnt/disk3/content1
//在同一分区创建目录的硬链接,失败
[root@localhost ~]# ln /mnt/disk3/content1 /mnt/disk3/content1-1
ln: "/mnt/disk3/content1": 不允许将硬链接指向目录


如代码提示所示,满足在同一分区创建硬链接,但是因为是目录的硬链接所以创建失败,所以硬链接不能指向目录。


4)查看所有硬链接的inode


代码如下(示例):

//查看inode号
[root@localhost ~]# ll -i /mnt/disk3/
总用量 22
13 drwxr-xr-x. 2 root root  1024 10月 25 20:01 content1
12 -rw-r--r--. 4 root root     6 10月 25 20:03 file1
12 -rw-r--r--. 4 root root     6 10月 25 20:03 file1-1
12 -rw-r--r--. 4 root root     6 10月 25 20:03 file1-2
12 -rw-r--r--. 4 root root     6 10月 25 20:03 file1-3
11 drwx------. 2 root root 12288 10月 19 13:56 lost+found
[root@localhost ~]# df -i /mnt/disk3
文件系统       Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb3      51200      13   51187       1% /mnt/disk3
[root@localhost ~]# ln /mnt/disk3/file1 /mnt/disk3/file1-4
[root@localhost ~]# df -i /mnt/disk3
文件系统       Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb3      51200      13   51187       1% /mnt/disk3


3ef8e3bba2cd451b96217a98428187e1.png


如代码输出所示:file1、file1-1、file1-2、file1-3的inode号都是12,并且在创建file1-4硬链接之前disk3的可用inode数为51187,在创建file1-4之后,disk3的可用inode数仍然是51187,所以硬链接是不占用inode的。


5)删除源文件,查看硬链接


测试软链接的时候,我们删除源文件后,软链接的文件就打不开了,对比软链接,看看硬链接删除源文件之后,硬链接文件是否能够打开。


代码如下(示例):


//删除file1文件
[root@localhost ~]# rm -rf /mnt/disk3/file1
[root@localhost ~]# ls /mnt/disk3
content1  file1-1  file1-2  file1-3  file1-4  lost+found
[root@localhost ~]# cat /mnt/disk3/file1-1
hello
[root@localhost ~]# cat /mnt/disk3/file1-2
hello
[root@localhost ~]# cat /mnt/disk3/file1-3
hello
[root@localhost ~]# cat /mnt/disk3/file1-4
hello


如上述代码所示:在删除源文件之后,硬链接文件依然可以查看。


总结


       硬链接只能针对文件做,不能对目录做。

       硬链接只能在同分区做。

       在删除源文件之后,硬链接依然可以打开。

       硬链接不占用inode。


3.软链接与硬链接的区别


软链接:

 软链接可以在不同分区下创建,可以对目录和文件进行操作,当源文件被删除的时候,软链接也会无法使用,我们一般使用的是软链接,在我们下载软件的时候会发现,桌面的软件图标都是软件应用程序的软链接,因为应用程序需要和各种文件在一个目录下才能使用,如果不用软链接,我们打开软件的时候需要到指定的目录下进行打开应用程序,这就显得很麻烦,有了软链接我们只需要打开应用程序的软链接即可打开一个软件。

硬链接:

 硬链接只能针对文件来做,不可以对目录进行操作,并且硬链接只能在和源文件同一分区下才能进行创建,这就比软链接有局限性,硬链接在删除源文件后,硬链接依然可以使用,和复制有着一样的效果,只是硬链接不占用inode。


总结


 本篇文章主要介绍了软链接和硬链接,以及学习如何使用这两种链接,了解这两种链接的区别,还有软链接的应用场景,对两种链接进行了详细的测试。





相关文章
|
9天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
34 5
|
9天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
26 6
|
9天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
35 6
|
10天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
24 4
|
15天前
|
网络协议 Linux
linux系统重要文件目录
本文介绍了Linux系统中的重要目录及其历史背景,包括根目录、/usr、/etc、/var/log和/proc等目录的结构和功能。其中,/etc目录下包含了许多关键配置文件,如网卡配置、DNS解析、主机名设置等。文章还详细解释了各目录和文件的作用,帮助读者更好地理解和管理Linux系统。
39 2
|
15天前
|
缓存 监控 Linux
|
18天前
|
Linux Shell 数据库
文件查找是Linux用户日常工作的重要技能介绍了几种不常见的文件查找方法
文件查找是Linux用户日常工作的重要技能。本文介绍了几种不常见的文件查找方法,包括使用`find`和`column`组合、`locate`和`mlocate`快速查找、编写Shell脚本、使用现代工具`fd`、结合`grep`搜索文件内容,以及图形界面工具如`Gnome Search Tool`和`Albert`。这些方法能显著提升文件查找的效率和准确性。
38 2
|
21天前
|
Linux 数据库
linux 全局搜索文件
在 Linux 系统中,全局搜索文件常用 `find`、`locate` 和 `grep` 命令。`find` 根据文件名、类型、大小、时间戳等条件搜索;`locate` 通过预构建的数据库快速查找文件;`grep` 在文件中搜索特定文本,常与 `find` 结合使用。选择合适的命令取决于具体需求。
|
25天前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
37 4
|
24天前
|
运维 安全 Linux
Linux文件清空的五种方法总结分享
每种方法各有优势,选择最合适的一种或几种,可以极大提高您的工作效率。更多有关Linux系统管理的技巧与资源,欢迎访问,持续提升您的运维技能。
62 1