每天一个linux命令:ln命令

ln命令 – 为文件创建链接

ln命令是linux系统中一个非常重要命令,英文全称是“link”,即链接的意思,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 一种是hard link,又称为硬链接;另一种是symbolic link,又称为符号链接。 通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。符号链接可以理解为类似windows一样的快捷方式。

  1. 命令语法:

    ln [参数] [源文件或目录] [目标文件或目录]
    
  2. 命令功能:

    软链接:
    1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
    2.软链接可以 跨文件系统 ,硬链接不可以
    3.软链接可以对一个不存在的文件名进行链接
    4.软链接可以对目录进行链接
    硬链接:
    1.硬链接,以文件副本的形式存在。但不占用实际空间。
    2.不允许给目录创建硬链接
    3.硬链接只有在同一个文件系统中才能创建
    注意:
    1.ln命令会保持每一处链接文件的同步性,动了一处,其它文件都会发生相同的变化。
    2.ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
    
  3. 常用参数:

参数描述
-b为每个已存在的目标文件创建备份文件
-d此选项允许“root”用户建立目录的硬链接
-f强制创建链接,即使目标文件已经存在
-n把指向目录的符号链接视为一个普通文件
-i交互模式,若目标文件已经存在,则提示用户确认进行覆盖
-s对源文件建立软链接(符号链接),而非硬链接
-v详细信息模式,输出指令的详细执行过程
  1. 参考实例:

    1. 给文件创建软链接

      [root@master1 home]# cat log2021.log 
      hello world
      [root@master1 home]# ln -s log2021.log link2022
      [root@master1 home]# ll
      总用量 4
      drwx------. 2 dev_1 git_p1 62 1112 09:10 dev_1
      lrwxrwxrwx. 1 root  root   11 16 09:34 link2022 -> log2021.log
      -rw-r--r--. 1 root  root    0 16 09:34 log2021.log
      -rw-r--r--. 1 root  root   10 14 09:40 number.txt
      [root@master1 home]# cat link2022 
      hello world
      [root@master1 home]# rm log2021.log 
      rm:是否删除普通文件 "log2021.log"?y
      [root@master1 home]# cat link2022 
      cat: link2022: 没有那个文件或目录
      # 给log2021.log文件创建软链接link2021,如果文件删除,链接将失效
      
    2. 给文件创建硬链接

      [root@master1 home]# touch file.txt
      [root@master1 home]# ln file.txt lnfile.txt
      [root@master1 home]# ll
      总用量 4
      drwx------. 2 dev_1 git_p1 62 1112 09:10 dev_1
      -rw-r--r--. 2 root  root    0 16 09:55 file.txt
      -rw-r--r--. 2 root  root    0 16 09:55 lnfile.txt
      -rw-r--r--. 1 root  root   10 14 09:40 number.txt
      [root@master1 home]# ln -s file.txt linkfile.txt
      [root@master1 home]# ll
      总用量 4
      drwx------. 2 dev_1 git_p1 62 1112 09:10 dev_1
      -rw-r--r--. 2 root  root    0 16 09:55 file.txt
      lrwxrwxrwx. 1 root  root    8 16 09:56 linkfile.txt -> file.txt
      -rw-r--r--. 2 root  root    0 16 09:55 lnfile.txt
      -rw-r--r--. 1 root  root   10 14 09:40 number.txt
      [root@master1 home]# cat lnfile.txt 
      hostnamebaidu=baidu.com
      hostnamesina=sina.com
      hostnames=true
      [root@master1 home]# cat linkfile.txt 
      hostnamebaidu=baidu.com
      hostnamesina=sina.com
      hostnames=true
      #硬链接和软链接跟本文件都是一致的内容
      
    3. 链接完成后,删除和重建链接原文件

      [root@master1 home]# ls -l
      总用量 12
      drwx------. 2 dev_1 git_p1 62 1112 09:10 dev_1
      -rw-r--r--. 2 root  root   61 16 09:58 file.txt
      lrwxrwxrwx. 1 root  root    8 16 09:56 linkfile.txt -> file.txt
      -rw-r--r--. 2 root  root   61 16 09:58 lnfile.txt
      -rw-r--r--. 1 root  root   10 14 09:40 number.txt
      [root@master1 home]# rm file.txt 
      rm:是否删除普通文件 "file.txt"?y
      [root@master1 home]# ll
      总用量 8
      drwx------. 2 dev_1 git_p1 62 1112 09:10 dev_1
      lrwxrwxrwx. 1 root  root    8 16 09:56 linkfile.txt -> file.txt
      -rw-r--r--. 1 root  root   70 16 10:03 lnfile.txt
      -rw-r--r--. 1 root  root   10 14 09:40 number.txt
      [root@master1 home]# touch file.txt
      [root@master1 home]# ll
      总用量 8
      drwx------. 2 dev_1 git_p1 62 1112 09:10 dev_1
      -rw-r--r--. 1 root  root    0 16 10:05 file.txt
      lrwxrwxrwx. 1 root  root    8 16 09:56 linkfile.txt -> file.txt
      -rw-r--r--. 1 root  root   70 16 10:03 lnfile.txt
      -rw-r--r--. 1 root  root   10 14 09:40 number.txt
      [root@master1 home]# vim file.txt 
      [root@master1 home]# cat file.txt 
      121
      221
      131
      331121
      221
      131
      [root@master1 home]# cat linkfile.txt 
      121
      221
      131
      331121
      221
      131
      331121
      221
      131
      [root@master1 home]# cat lnfile.txt 
      hostnamebaidu=baidu.com
      hostnamesina=sina.com
      hostnames=true
      newline
      #源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在。重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效。
      
    4. 将文件链接为另一个目录中的相同名字

      [root@master1 home]# mkdir test
      [root@master1 home]# cd test/
      [root@master1 test]# ll
      总用量 0
      [root@master1 test]# cd ..
      [root@master1 home]# ln -v file.txt test
      "test/file.txt" => "file.txt"
      [root@master1 home]# ll
      总用量 12
      drwx------. 2 dev_1 git_p1  62 1112 09:10 dev_1
      -rw-r--r--. 2 root  root   181 16 10:05 file.txt
      lrwxrwxrwx. 1 root  root     8 16 09:56 linkfile.txt -> file.txt
      -rw-r--r--. 1 root  root    70 16 10:03 lnfile.txt
      -rw-r--r--. 1 root  root    10 14 09:40 number.txt
      drwxr-xr-x. 2 root  root    22 16 10:23 test
      [root@master1 home]# cd test
      [root@master1 test]# ll
      总用量 4
      -rw-r--r--. 2 root root 181 16 10:05 file.txt
      [root@master1 test]# cat file.txt 
      121
      221
      131
      331121
      221
      131
      331121
      221
      131
      331121
      221
      131
      331121
      221
      131
      331121
      221
      131
      331121
      221
      131
      331
      [root@master1 test]# vi file.txt 
      [root@master1 test]# cat file.txt 
      121
      221
      131
      331121
      [root@master1 test]# cd ..
      [root@master1 home]# ll
      总用量 12
      drwx------. 2 dev_1 git_p1 62 1112 09:10 dev_1
      -rw-r--r--. 2 root  root   57 16 10:24 file.txt
      lrwxrwxrwx. 1 root  root    8 16 09:56 linkfile.txt -> file.txt
      -rw-r--r--. 1 root  root   70 16 10:03 lnfile.txt
      -rw-r--r--. 1 root  root   10 14 09:40 number.txt
      drwxr-xr-x. 2 root  root   22 16 10:24 test
      [root@master1 home]# cat file.txt 
      121
      221
      131
      331121
      #在test目录中创建file.txt硬链接,修改test目录中的file.txt文件,同时也会同步到源文件
      
    5. 给目录创建软链接

      [root@master1 test]# mkdir test1 test2
      [root@master1 test]# ll
      总用量 4
      -rw-r--r--. 3 root root 19 16 10:27 file.txt
      drwxr-xr-x. 2 root root  6 16 10:31 test1
      drwxr-xr-x. 2 root root  6 16 10:31 test2
      [root@master1 test]# cd test2
      [root@master1 test2]# ll
      总用量 0
      [root@master1 test2]# ln -sv ../test1 ../test2
      "../test2/test1" -> "../test1"
      [root@master1 test2]# ll
      总用量 0
      lrwxrwxrwx. 1 root root 8 16 10:32 test1 -> ../test1
      [root@master1 test2]# cd test1/
      [root@master1 test1]# ll
      总用量 0
      [root@master1 test1]# cd ..
      [root@master1 test2]# cd ..
      [root@master1 test]# ls
      file.txt  test1  test2
      [root@master1 test]# cd test1
      [root@master1 test1]# touch {1..8}.test
      [root@master1 test1]# ll
      总用量 0
      -rw-r--r--. 1 root root 0 16 10:33 1.test
      -rw-r--r--. 1 root root 0 16 10:33 2.test
      -rw-r--r--. 1 root root 0 16 10:33 3.test
      -rw-r--r--. 1 root root 0 16 10:33 4.test
      -rw-r--r--. 1 root root 0 16 10:33 5.test
      -rw-r--r--. 1 root root 0 16 10:33 6.test
      -rw-r--r--. 1 root root 0 16 10:33 7.test
      -rw-r--r--. 1 root root 0 16 10:33 8.test
      [root@master1 test1]# cd ../test2
      [root@master1 test2]# cd test1/
      [root@master1 test1]# ll
      总用量 0
      -rw-r--r--. 1 root root 0 16 10:33 1.test
      -rw-r--r--. 1 root root 0 16 10:33 2.test
      -rw-r--r--. 1 root root 0 16 10:33 3.test
      -rw-r--r--. 1 root root 0 16 10:33 4.test
      -rw-r--r--. 1 root root 0 16 10:33 5.test
      -rw-r--r--. 1 root root 0 16 10:33 6.test
      -rw-r--r--. 1 root root 0 16 10:33 7.test
      -rw-r--r--. 1 root root 0 16 10:33 8.test
      # 目录只能创建软链接,目录创建链接必须用绝对路径,在源目录中文件变化链接目录也会同步变化。
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值