要学习 ln命令之前先要了解linux中软链接和硬链接的概念
linux中软链接和硬链接的概念
在Unix系统中链接就是指向文件的指针。就像其他程序中的指针,Unix中的链接指向一个文件或文件夹。创建链接以一种快捷的访问文件方式,允许多个链接指向同一个文件。
有两种链接类型:
- 软链接或符号链接
- 硬链接
两者区别在于当链接的资源被移动或被删除时的行为不一样。符号链接(几乎是一个目标文件的路径字符串)不会更新,而硬链接总是指向资源,甚至移动或被删除。
举例来说。 如果我们创建了一个a.txt文件,我们为其创建一个硬链接,当我们把文件删除时,我们通过硬链接仍能访问到文件。但是如果我们创建的是软链接,当删除文件时,我们访问不到该文件了。通俗来说硬链接是创建了一个位置的引用计数,而软链接像一个快捷方式(类似于Window系统)
1. 硬链接特点
- 每个硬链接都会被分配到和初始文件一样的节点访问值,因此他们都引用同样的物理文件地址。硬链接更加的可变动并且即使初始文件或链接文件在文件系统中被删除,但是硬链接不可以跨不同文件系统引用
-
ls -l
命令显示所有的链接并且在链接列显示链接的数量 - 链接包含实际的文件内容
- 移出一个链接,只会减少链接数量,但不会影响其他的链接。
- 没有办法不通过递归循环来给一个文件夹创建硬链接
- 如果初始文件被删除,硬链接将依然会显示文件的内容
- 创建硬链接的命令
ln [original filename] [link name]
2.软链接特点
- 一个软链接就像windows中的快捷方式。每个软链接文件包含了独立的指向初始文件引用值,像硬链接一样,通过软链接访问的文件的任意改动,都能相互影响。软链接可以跨文件系统引用。如果初始文件被删除,软链接将不能使用。
- 软链接包含的是初始文件的路径,不是内容
- 删除一个软链接不影响其他事情,但是删除源文件,软链接就失去作用,执行不存在的文件
- 软链接可以指向文件夹
- 能跨越文件系统
- 创建软链接命令
ln -s [original filename] [link name]
ln 命令的使用
语法
ln [OPTION]... [-T] TARGET LINK_NAME (方法1)
ln [OPTION]... TARGET... DIRECTORY (方法2)
ln [OPTION]... -t DIRECTORY TARGET... (方法3)
方法1: 这个用法很简单,需要列出链接的资源文件和链接名称
现有一个内容为hello world
的a.txt文件,为其创建链接:
# ls
a.txt
# cat a.txt
hello world
# ln a.txt link.txt
# ls -lhr
total 16
-rw-r--r-- 2 wangyong staff 12B 7 30 09:27 link.txt
-rw-r--r-- 2 wangyong staff 12B 7 30 09:27 a.txt
# cat link.txt
hello world
#
方法2: 这个用法,需要列出资源文件和放置链接的文件夹,链接名称和源文件名称一样。
# ls
a.txt b.txt c.txt linkDir
# ls linkDir
# ln a.txt b.txt c.txt linkDir
# ls linkDir
a.txt b.txt c.txt
#
可以看出资源文件可以是一个也可以是多个,名称和原文件名称一样
方法3: 这个用法是将方法2中的资源文件和目标文件夹互换
常用选项
- -v: 这个选项可以让你在创建链接的过程中看到哪个链接对应哪个文件。
# ln -v a.txt b.txt c.txt linkDir
linkDir/a.txt => a.txt
linkDir/b.txt => b.txt
linkDir/c.txt => c.txt
#
网友评论