由于教学上的原因,需要下载Android源码,后来使用repo时,系统提示需要python2,我的系统中是两个都有的,但是默认是python3,无法下载,通过创建了个链接搞定,下面就来说说linux下的链接。

  1.Linux链接概念
  Linux下链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接,通过使用-s选项,产生符号链接,也就是软链接。硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode

Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

  2.通过实验加深理解
[munication@develop LinuxCode]$ touch file1.txt              #创建一个测试文件file1.txt
[munication@develop LinuxCode]$ ln file1.txt file2.txt            #创建f1的一个硬连接文件file2.txt
[munication@develop LinuxCode]$ ln -s file1.txt file3.txt           #创建f1的一个符号连接文件file3.txt
[munication@develop LinuxCode]$ ls -li                  # -i参数显示文件的inode节点信息
总用量 0
11688147 -rw-r--r-- 2 munication munication 0 5月   8 05:26 file1.txt
11688147 -rw-r--r-- 2 munication munication 0 5月   8 05:26 file2.txt
11688148 lrwxrwxrwx 1 munication munication 9 5月   8 05:27 file3.txt -> file1.txt

从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为11688147,然而符号连接文件的inode节点11688148,明显是不同的。

[munication@develop LinuxCode]$ echo "I'm file1.txt" >> file1.txt      #向file1.txt文件中写入内容 I'm file1.txt
[munication@develop LinuxCode]$ cat file1.txt               #查看file1.txt内容
I'm file1.txt
[munication@develop LinuxCode]$ cat file2.txt               #查看file2.txt内容
I'm file1.txt
[munication@develop LinuxCode]$ cat file3.txt              #查看file3.txt内容
I'm file1.txt
[munication@develop LinuxCode]$ rm -f file1.txt              #删除file1.txt文件
[munication@develop LinuxCode]$ cat file2.txt                #查看file2.txt内容,文件依旧健在
I'm file1.txt
[munication@develop LinuxCode]$ cat file3.txt                 #查看file3.txt内容,文件已经烟消云散,不复存在了
cat: file3.txt: 没有那个文件或目录

通过上面的测试可以看出:当删除原始文件file1.txt后,硬连接file2.txt不受影响,但是符号连接file3.txt文件无效

通过上述实践,很容易得出如下结论:
1).删除符号连接file3.txt,对file1.txt,file2.txt不会产生影响;
2).删除硬连接file2.txt,对file1.txt,file3.txt也没有影响;
3).删除原文件file1.txt,对硬连接file2.txt没有影响,会导致符号连接file3.txt失效;
4).同时删除原文件file1.txt和file1.txt的硬连接file2.txt,整个文件才会真正的被删除。

Linux下的软连接和硬链接的更多相关文章

  1. linux系统下的软连接与硬链接

    前几天在linux系统下安装mongoDB,然后运行脚本导入数据的时候遇到了链接库查询不到的情况,如图 1所示.当时是通过创建软连接的方式解决的这个问题.虽然,通过网上的教程解决了这个问题,但是对于软 ...

  2. linux下的符号链接和硬链接

    一   Linux下链接文件的作用 Linux特别注重用户的权限,而链接文件的作用也正体现了这个方面.对源文件的位置进行了隐藏,用户只对链接文件操作. 二  链接文件的区别 链接文件分为硬链接文件和软 ...

  3. 2017-7-18-每日博客-关于Linux下的软链接和硬链接.doc

    ln命令 该命令在文件之间创建链接.这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称.对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题. 如果链 ...

  4. 【linux命令】软连接和硬链接的区别(ln命令)

    Linux 文件系统把硬盘分为三个部分:超级块.inode 列表.数据区 inode 指示:该文件的数据存放在数据区的哪些块内.因为这个“映射”关系不能变更,因此,inode 相当于代表着文件本身.( ...

  5. Linux命令 – ln 软连接与硬链接区别介绍

    ln命令可以生成软链接和硬链接,也可叫做符号链接和实体链接. 有兴趣深入理解的可以查阅相关文档,一般的读者只需记住以下几点即可: 不管是软链接还是硬链接都不会额外增加磁盘空间(虽然实际情况可能会多占用 ...

  6. linux下的软链接与硬链接

    在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录);这种链接称为软链接. 另一种则是透过文件系统的 inode 连结来产生新档 ...

  7. Linux下创建软、硬链接

    在linux系统中,内核为每一个新创建的文件分配一个Inode(索引节点),每个文件都有唯一的inode号.文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存,从而实现文件的快速访问. 链接 ...

  8. linux中软连接和硬链接的区别

    linux中创建软连接和硬链接的方法: 软连接: ln -s oldfile slink 硬连接: ln oldfile hlink linux中创建软连接和硬链接的区别:        原理上,硬链 ...

  9. Linux链接文件——软连接和硬链接

    Linux链接文件——软连接和硬链接 摘要:本文主要介绍了Linux系统中的链接文件. 文件系统 在Linux系统中,将文件分为两个部分:用户数据和元数据. 元数据(inode) 元数据即文件的索引节 ...

随机推荐

  1. 如何在 Linux 中配置基于密钥认证的 SSH

    什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在 ...

  2. java util - 时间工具包 PrettyTime

    需要 prettytime-3.2.3.Final.jar 包 代码例子 package cn.java.prettytime; import java.util.Date; import java. ...

  3. thinkphp-PHP实现Excel导入 导出功能

    Excel导出 //功能:导出题库模板 public function get_contract_ex() { ob_get_clean(); header("Content-Typ:tex ...

  4. 读书笔记-JavaScript面向对象编程(二)

    第5章 原型 5.1 原型属性(所有函数拥有一个prototype属性,默认为空对象) 5.1.1 利用原型添加方法和属性 function Gadget(name,color){ this.name ...

  5. java+Mysql大数据的一些优化技巧

    众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法; 例如,我们要将 ...

  6. 指向class的指针使用方法实例

    // pointer to classes example #include <iostream> using namespace std; class Rectangle { int w ...

  7. STM32启动文件:startup_stm32f10x_hd.s等启动文件的简单描述

    在官方的库文件中,分别有如下文件: startup │ │ │ ├─arm │ │ │ │ startup_stm32f10x_cl.s │ │ │ │ startup_stm32f10x_hd.s ...

  8. 刷表法动态规划:HOJ11391_Word Clouds Revisited

    题目大意,给若干方块,让把方块拍成若干行,使得最终高度最小.其中,每行有宽度限制,高度为每行中最高的箱子的高度. 于是,很直观的认为,这个题可能也许大概应该是个动态规划的题. 于是,设DP[K]为K及 ...

  9. 消息框模块-tkinter

    import tkinter.messagebox # 这个是消息框,对话框的关键from tkinter import * error_fp_list = [[973.45, '河北卡卡汽车贸易有限 ...

  10. Spring Boot 开发系列一 开发踩坑

    这是学习spring boot 的第二周,公司号称这玩意是啥都不会的新手就可以填空开发,于是决定上手一把,怎么说我也是搞了快七八年的.NET和.NETcore,没想到无情打脸,快被这个能填空开的IDE ...