开发者社区> 我爱的人玲> 正文

ln命令解析_学习笔记

简介: 时间:2017.11.16 作者:李强 参考:man,info,magedu讲义 声明:以下英文纯属个人翻译,英文B级,欢迎纠正,盗版不纠,才能有限,希望不误人子弟为好。 1、使用目的与场景     2、官方说明   make links between files 3、写在前面   不管是说cp,mv.rm,还有文件的权限管理来说,都离不开对数据的元数据和数据基本的inode的操作,我们要先了解文件存放在磁盘空间的形式是inode表与数据存放块的表,目录也是文件,只不过它的date里存放的是文件名与子目录对应的inode号而已。
+关注继续查看

时间:2017.11.16

作者:李强

参考:man,info,magedu讲义

声明:以下英文纯属个人翻译,英文B级,欢迎纠正,盗版不纠,才能有限,希望不误人子弟为好。

1、使用目的与场景

   

2、官方说明

  make links between files

3、写在前面

  不管是说cp,mv.rm,还有文件的权限管理来说,都离不开对数据的元数据和数据基本的inode的操作,我们要先了解文件存放在磁盘空间的形式是inode表与数据存放块的表,目录也是文件,只不过它的date里存放的是文件名与子目录对应的inode号而已。关于link和symlink,硬链接和软链接的概念可以自行 man 2 link 和man 2 symlink 查看。

4、修改文件及涉及的环境变量

   

5、用法

提要:
   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)
参数描述:
          
   --backup[=CONTROL]  为每一个存在的目标文件生成一个备份
             
   -b  类似--backup 但是不接收参数
   
   -d, -F, --directory 允许超级用户尝试硬链接目录 
        (注意: 由于系统制约, 可能会失败即使是超级用户)           
   -f, --force       移除存在的目标文件?
               
   -i, --interactive   提示是否移除目标
    
   -L, --logical    对符号链接的源文件生成一个硬链接
             
   -n, --no-dereference  
                 
   -P, --physical    生成一个符号链接的硬链接,相当于备份一下符号链接
          
   -s, --symbolic    生成一个symbolic link(符号链接/软链接),而不是硬链接 
                  
   -S, --suffix=SUFFIX  重写通常的备份后缀名
                 
   -t, --target-directory=DIRECTORY 指定要在其中创建硬链接的目录
                  
   -T, --no-target-directory     将 LINK_NAME 作为普通文件处理
                  
   -v, 显示创建的链接的过程
                   
    注意:
    备份默认后缀是"^",除非指定-S --suffix=SUFFIX或者--backup[=control]
    使用-s创建软链接时-LP是无效的,没有-s时,看LP谁在后谁生效。


6、命令背后的哪些事(原理解析)

此处应该插入图片的更直观,我还没想好用什么工具怎么画,以后再搞。

ln 是针对inode表的一个操作,所以无法跨分区的磁盘的,因为inode是针对分区而言唯一的,

ln 创建一个硬链接的过程就是在这个link_name文件的父目录的inode表中添加一项内容link_name↘TARGET文件的inode号。

ln -s 创建一个符号链接的过程呢就是在symbolic_link_name的父目录下建立一项内容symbolic_link_name↘symbolic_link_name_inode,而symbolic_link_name_inode的内容写的是TARGET pathname,这里的pathname可以相对路径(target file相对symbolic_link_name的相对路径)也可以是绝对路径。

总而言之,link改变的是磁盘空间,symbolic link 改变的是磁盘空间和inode数量。


7、cp,rm,mv和软硬连接的哪些事

  cp: 
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...
       
  -l   --link          生成一个硬链接而不是目录的副本,
  -s  --sysmbolic-link 生成一个软链接而不是目录的副本, source从/开始,写绝对路径
  #    -l -s 后面都不能加目录,跟上目录都是复制的效果,相当于sl的功能是失效的。
  -d   复制符号链接而不是链接的源文件
  -P   后面接的是source是符号链接,复制链接符号本身而不是链接文件
  -H   当cp指定的参数是一个symbolic-link的时候,复制的是symbolic-link的源文件而不是
  symbolic-link 目录里面的sl不会做操作,只对第一层进行操作  
  -L   和-H有啥区别?-L在源里面的sl文件复制到目标文件里是真实的文件内容,但是名字不变
  还是sl的名字,-L操作的文件里没有符号链接文件了。dest也是一个文件而不是sl文件。
  递归进行操作。
  
   #ps. 此处应该插入测试图片更直观。

 


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
spark streaming 初始_1 | 学习笔记
快速学习 spark streaming 初始_1
36 0
Linux中常用命令【新手学习小白篇】
以下为Linux中常用命令【新手学习】新手上路,希望给你带来帮助
168 0
未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib 错误的解决办法
VS2010有时候莫名出现下面问题: 未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib 错误 相关的工程出现这个问题,可能是使用同步盘同步的引起的。
2568 0
命名空间 - PHP手册笔记
原文:命名空间 - PHP手册笔记 概述 命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念,比如在操作系统中,目录用来将相关文件分组,对于目录中的文件来说,目录就扮演了命名空间的角色。这个原理应用到程序设计领域就是命名空间的概念。
992 0
再学习之Spring(面向切面编程).
一、概念 1、理论     把横切关注点和业务逻辑相分离是面向切面编程所要解决的问题。如果要重用通用功能的话,最常见的面向对象技术是继承(inheritance)或 组成(delegation)。但是,如果在整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系;而使用组成可能需要对委托对象进行复杂的调用。
901 0
命令及版本 | 学习笔记
快速学习命令及版本.
32 0
再读《Parallel Programming with Python》并作笔记
并发编程,在哪个语言里都属于高端应用,一定得会了才好意思说懂了这门语言。 在工作中用得并不是很多,忘了一些内容,就慢慢看,慢慢补上。 今天一天看了近三分之一(我看外文越来越快了??:)), 实践一下多线程的threading模块。
1158 0
Linux sed命令学习
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] ‘command’ 输入文本         常用选项:        -n∶使用安静(silent)模式。
798 0
+关注
我爱的人玲
不知说什么
53
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载