Linux命令:ln

摘要: 转自 恋猫大鲤鱼
https://dablelv.blog.csdn.net/article/details/103065438

1. 命令简介

  ln 命令用来为文件创建链接, 分为软链接(symbolic link)和硬链接 (hard link), 默认创建硬链接。如果要创建软连接,使用 -s 选项。本文介绍 GNU 版本实现。

  注意:

    1) 硬链接不是一个独立的文件,只是一个文件名。一个文件可以有多个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉。

    2)软连接可以跨文件系统,但是硬链接不能跨文件系统,因为硬链接只是文件的别名,而非独立的文件。

    3)不能给目录建立硬链接,因为硬链接连接到目录可能会导致目录的 inode 和 实体的 block 形成环状。此时,如果删除目录,会导致目录实体 block 无法被系统访问,产生孤立的目录 (从根目录无法再访问)。

    4) 创建硬链接时,每个目标必须存在,创建软链接时, 目标文件可以不存在。

    5)软链接是一个包含了路径信息的独立文件, 类似于windows的快捷方式,他的许多属性依赖于源文件,所以给软链接文件设置权限是无意义的。

2. 命令格式

ln [OPTIONS] ... [-T] TARGET LINK_NAME   (1st form)
ln [OPTION] ... TARGET                             (2st form)
ln [OPTION] ... TARGET ... DIRECTORY       (3st form)
ln [OPTION] ... -t DIRECTORY TARGET        (4st form)

第一种格式,为指定的目标文件建立指定名称的链接,-T 选项可以省略, LINK_NAME 为目录时可以省略链接名称,此时链接与目录文件同名,该格式最为常用。

第二种格式,为指定的目标文件在当前目录下建立同名链接

第三种第四种, 分别为每一个目标文件在指定的目录下建立同名链接。

3. 参数解析

--backup[=CONTROL]
    备份每一个存在的目标文件
-b
    类似于 --backup, 但不接受参数
-d, -F, --directory
    允许超级用户尝试为目录建立硬链接
-f, --force
    强行建立文件或者目录的链接,与链接同名的文件或目录将被覆盖
-i, --interactive
    覆盖既有文件之前先询问用户
-L, --logical
    建立硬链接时,当目标文件是软链接时,进行解引用,指向软链接的目标文件
-n, --no-dereference
    把软链接视为一般文件,不进行解引用
-P, physical
    建立硬链接时,直接指向软链接本身,而不是指向软链接的目标文件(默认)。
-r, --relative
    创建相对于链接位置的符号链接
-s, --symbolic
  创建软链接
-S, --suffix=SUFFIX
  修改备份文件后缀。用 -b 参数备份目标文件后,备份文件后缀默认为 ~
-t, --target-directory=DIRECTORY
  指定存放链接文件的目录
-T, --no-target-directory
  将 LINK_NAME 视为链接文件而非存放链接文件的目录
-V, --verbose
  显示指令执行过程
--help
  显示帮助并退出
--version
  显示版本并退出

选项 --backup 的参数 CONTROL 控制文件备份后的版本生成方式,可取值如下:

none, nil
    不进行备份
number, t
    使用数字后缀进行滚动。备份文件名后缀一次递增 ~1~、
existing, nil
    如果有使用数字后缀则使用数字,否则使用简单的备份方式
simple, never
    只是用简单的备份方式。

使用选项 -s 生产软链接时,将忽略选项 -L, -P,建立硬链接, 默认使用 -P 选项,将硬链接指向软链接本身,相当于给软链接起了个别名。

4. 常用示例

  1)给 /etc/passwd 建立软链接

pi@raspberrypi:~ $ ln -s /etc/passwd passwdsoftlink
pi@raspberrypi:~ $ ls -l passwdsoftlink 
lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink -> /etc/passwd

  2)给 /etc/passwd 多次建立软链接, 软链接的名称相同,采用数字表示备份文件的版本号,多次备份,版本号依次递增

pi@raspberrypi:~ $ ls -l passwdsoftlink 
lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink -> /etc/passwd
pi@raspberrypi:~ $ ln -s --backup=number /etc/passwd passwdsoftlink
pi@raspberrypi:~ $ ls -l passwdsoftlink*
lrwxrwxrwx 1 pi pi 11 Jan 19 14:17 passwdsoftlink -> /etc/passwd
lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink.~1~ -> /etc/passwd
pi@raspberrypi:~ $ ln -s --backup=number /etc/passwd passwdsoftlink
pi@raspberrypi:~ $ ls -l passwdsoftlink*
lrwxrwxrwx 1 pi pi 11 Jan 19 14:18 passwdsoftlink -> /etc/passwd
lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink.~1~ -> /etc/passwd
lrwxrwxrwx 1 pi pi 11 Jan 19 14:17 passwdsoftlink.~2~ -> /etc/passwd
posted @ 2021-01-19 14:22  雨竹枫  阅读(25)  评论(0编辑  收藏  举报