Instrument: ln
NAME
ln - make links between files
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)
软连接和硬链接:
软连接文件的一种快捷方式,有自己的inode文件节点,并在磁盘上有一小片空间存放路径名;硬链接则是一个文件有多个别名,系统并不为它重新分配inode。软连接可以对目录进行连接;硬连接不行。
参数:
- -f: --force remove existing destination files
- -n: --no-dereference treat LINK_NAME as a normal file if it is a symbolic link to a drectory
- -s: --symbloic make symbolic links instead of hard links
- -v: --verbose print name of each linked file
*******************************************************************************************************
建立到文件的软链接:
-
ln -sv TARGET LINK_NAME
-
ln -svf TARGET LINK_NAME
覆盖原有软连接
*******************************************************************************************************
建立到目录的软链接:
-
ln -sv TARGET LINK_NAME
LINK_NAME不存在时,会直接创建软连接
-
LINK_NAME存在,且为一个目录时,会在目录下生成连接文件,且连接文件的目标为命令中给出的路径,如果是相对路径,则发生错误,故使用相对路径时,谨慎
- 如果LINK_NAME只给定了一个已经存在的目录, 在会在该目录下以TARGET的BASE_NAME创建连接, 并会不覆盖已经存在的目录, ln 使用 -f 会覆盖 已经存在的 连接 或 普通文件, 但绝不会覆盖LINK_NAME位置的目录(该目录已经存在)
- 使用rm删除连接文件的时候,如果连接文件指向目录,则加倍小心带/和不带/区别, 带 / 操作的是连接指向的目录, 不带 / 操作的是连接本身
带/删除的是连接文件指向的目录
不带/才是删除连接文件本身上图中b为指向目录的一个连接文件
-
如果要覆盖指向目录的连接文件则必须使用-n选项,否则ln会在连接文件指向的目录下创建新的连接文件,这通常不是我们所期望的,-n选项标明把连接文件作为普通文件对待,进行覆盖
上图示例中,在xx这个连接文件所指向的目录下,建立了以$(basename TARGET)为新名字的连接文件
-
覆盖指向目录的连接文件使用-n参数
- -b 备份
- --suffix 指定备份suffix
-
如果TARGET为文件则TARGET最后不能带 / , 目录无限制