zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    xcode快捷键大全(转)
    a 和an 的用法区别
    如何在lion系统下安装Xcode 3.2.x版本
    xcode3.2.6升级至4.0.2经验加教训总结(转)
    堆与栈的关系与区别(转)
    [点评]谷歌发布Android 2.3 点评八大亮点
    浅谈关于nil和 null区别及相关问题(转)
    ObjectiveC中的继承与复合技术(转)
    MyEclipse 8.0.0 in Fedora 12
    如何判断两个链表相交及找到第一个相交点
  • 原文地址:https://www.cnblogs.com/jiaklop9/p/14297772.html
Copyright © 2011-2022 走看看