Linux基础命令 您所在的位置:网站首页 linux创建源文件 Linux基础命令

Linux基础命令

2023-03-03 10:23| 来源: 网络整理| 查看: 265

文章目录

ln

命令介绍

命令格式

基本参数

参考实例

1) 创建文件的硬链接

2)创建文件的软链接

3)创建链接文件时,相同目标文件创建备份文件

命令总结

ln 命令介绍

        先看下帮助文档中的含义

NAME        ln - make links between files

ln(link)命令的主要功能是给源文件建立一个链接文件,系统中存在两种链接文件,一个是硬链接(hard link),一个是软连接(symbolic link)。

硬链接:硬链接的原理就是多个文件名指向同一个inode,因此多个文件名公用一个inode号,达到共享和备份的目的,即使将源文件删除,硬链接文件依然可以指向block读取该文件的数据;但硬链接只能针对文件进行操作,无法对目录建立硬链接,也不能进行跨分区建立。软链接:可以理解成是windows中的快捷方式,建立软链接之后,是重新生成一个新的inode号,软链接文件增加信息,源文件信息也会跟着修改,如果将源文件删除了,那么软链接也会跟着失效;优势是可以对文件和目录进行操作,也可进行跨分区建立。 命令格式

命令的语法格式:ln 【参数】【源文件】【目标文件】

SYNOPSIS        ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)        ln [OPTION]... TARGET                  (2nd form)        ln [OPTION]... TARGET... DIRECTORY     (3rd form)        ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

基本参数

先看下命令的参数有哪些,表格形式显示:

-b为已存在的目标文件创建备份文件-d允许root用户尝试创建硬链接目录(由于系统限制,大概率会失败)-f强制覆盖现有的目标文件-n把指向目录的符号链接视为一个普通文件-i提示是否删除目录文件-s对源文件建立(符号链接)快捷方式 参考实例 1) 创建文件的硬链接

创建文件的硬链接后,可以看到源文件和目标文件的inode号是一致的,并且文件的链接数是2。

[root@localhost ~]# cd data [root@localhost data]# ll 总用量 0 [root@localhost data]# touch a.txt [root@localhost data]# ln a.txt b.txt [root@localhost data]# ll 总用量 0 -rw-r--r--. 2 root root 0 2月 28 15:44 a.txt -rw-r--r--. 2 root root 0 2月 28 15:44 b.txt [root@localhost data]# ll -i 总用量 0 67259420 -rw-r--r--. 2 root root 0 2月 28 15:44 a.txt 67259420 -rw-r--r--. 2 root root 0 2月 28 15:44 b.txt

测试一:创建文件的硬链接后,删除源文件看看对硬链接文件有没有影响

首先先往文件中写入一些内容,让它成为一个有数据的文件。

[root@localhost data]# echo "hello world" > a.txt [root@localhost data]# cat b.txt hello world [root@localhost data]# cat a.txt hello world [root@localhost data]# rm -f a.txt [root@localhost data]# echo "this is centos7.9" >> b.txt [root@localhost data]# cat b.txt hello world this is centos7.9 [root@localhost data]# ll -hi b.txt 67259420 -rw-r--r--. 1 root root 30 2月 28 15:48 b.txt

删除源文件后,硬链接文件完全不受影响,依然可以往其中写入内容,只是链接数变回了1。

测试二:对目录创建硬链接,看是否能创建

可以看到加上了-d参数,还是不能创建硬链接目录

[root@localhost data]# ln -d test test1 ln: 无法创建硬链接"test1" => "test": 不允许的操作

测试三:把文件的硬链接放到/dev目录

结果显示无法创建硬链接,这个是因为硬链接无法进行目录,跨分区实现建立,因为每个分区都有自己独立的INODE编号。

[root@localhost data]# ll 总用量 4 -rw-r--r--. 1 root root 30 2月 28 15:48 b.txt drwxr-xr-x. 2 root root 6 2月 28 15:52 test [root@localhost data]# ln b.txt /dev/b.txt ln: 无法创建硬链接"/dev/b.txt" => "b.txt": 无效的跨设备连接 [root@localhost data]# df -ih 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 devtmpfs 488K 351 488K 1% /dev tmpfs 492K 1 492K 1% /dev/shm tmpfs 492K 1.4K 491K 1% /run tmpfs 492K 16 492K 1% /sys/fs/cgroup /dev/mapper/centos-root 18M 130K 18M 1% / /dev/sda1 512K 340 512K 1% /boot tmpfs 492K 22 492K 1% /run/user/0 /dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86_64 2)创建文件的软链接

创建软链接就需要加上-s的参数才行

[root@localhost data]# touch c.txt [root@localhost data]# ln -s c.txt d.txt [root@localhost data]# ll d.txt lrwxrwxrwx. 1 root root 5 2月 28 16:07 d.txt -> c.txt

创建好之后会显示d.txt文件指向了c.txt,当然可以看ll显示的文件类型,这里显示的文件类型是链接文件。

测试一:创建文件的软链接后,删除源文件看看对软链接文件有没有影响

还是一样,先写入一些内容到文件里

[root@localhost data]# touch c.txt [root@localhost data]# ln -s c.txt d.txt [root@localhost data]# ll -i c.txt d.txt 67259384 -rw-r--r--. 1 root root 9 2月 28 16:17 c.txt 67259421 lrwxrwxrwx. 1 root root 5 2月 28 16:17 d.txt -> c.txt [root@localhost data]# echo "hello world " > d.txt [root@localhost data]# rm -f c.txt [root@localhost data]# ll -h d.txt lrwxrwxrwx. 1 root root 5 2月 28 16:17 d.txt -> c.txt [root@localhost data]# cat d.txt cat: d.txt: 没有那个文件或目录

对比源文件和软连接文件的inode号是不一样的,删除了源文件也就意味着链接文件失效了,里面的内容也查看不到。

测试二:对目录创建软链接,看是否能创建

目录是无法创建硬链接的,看下能否创建软连接

[root@localhost data]# mkdir test [root@localhost data]# ln -s test test_dir [root@localhost data]# ll -id test test_dir 421301 drwxr-xr-x. 2 root root 6 2月 28 16:25 test 67259384 lrwxrwxrwx. 1 root root 4 2月 28 16:25 test_dir -> test

答案是肯定的,软链接是可以对目录进行创建的,创建出来的inode号是不相同的。

测试三:把文件的软链接放到/dev目录

前面有测试过硬链接是不能跨分区创建的,现在来看下软链接是否可行。

[root@localhost data]# ln -s test /dev/test_dir [root@localhost data]# ll -id /dev/test_dir 107112 lrwxrwxrwx. 1 root root 4 2月 28 16:28 /dev/test_dir -> test [root@localhost data]# ll 总用量 0 drwxr-xr-x. 2 root root 6 2月 28 16:25 test lrwxrwxrwx. 1 root root 4 2月 28 16:25 test_dir -> test [root@localhost data]# touch a.txt [root@localhost data]# ln -s a.txt /dev/a.txt [root@localhost data]# ll -i /dev/a.txt 107625 lrwxrwxrwx. 1 root root 5 2月 28 16:28 /dev/a.txt -> a.txt

 可以在其他分区创建软连接。

3)创建链接文件时,相同目标文件创建备份文件

相同的目标文件备份后会在同名称后加上一个“~”符号

[root@localhost data]# touch test/1.txt [root@localhost data]# touch 1.txt [root@localhost data]# ln -b 1.txt test/1.txt [root@localhost data]# ll test 总用量 0 -rw-r--r--. 2 root root 0 2月 28 16:34 1.txt -rw-r--r--. 1 root root 0 2月 28 16:34 1.txt~ 命令总结

        ln命令的硬链接其实可以看做是复制,只不过复制的是inode号,而软链接则是文件的快捷方式出现,一旦源文件删除了,快捷方式也会随之失效。若觉得以上内容还行的,可以点赞支持一下!

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有