功能:ln命令为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以。链接可分为两种:硬链接(hard link)与软链接(又叫符号链接,symbolic link)。默认情况下,ln命令产生硬链接。

  • 不占空间:不论是硬链接还是软链接都不会复制原文件,因而所占用的磁盘空间非常小。
  • 同步链接:以后不论你改动了哪一处,与它相链接的文件都会发生相同的变化。

硬链接:通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。

  • 硬链接,以文件副本的形式存在。它会在你选定的位置上生成一个和源文件大小相同的文件,但不占用实际空间。
  • 不允许给目录创建硬链接
  • 硬链接只有在同一个文件系统中才能创建

软链接:一个特殊的文件,它的内容不是真正的数据,而是指向另一个文件(链接目标)的路径名。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。对符号链接的大部分操作,包括打开、读、写等,都被传递给其链接目标,操作真正作用在链接目标上,另外一些操作,如删除等则作用在符号链接本身。

  • 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  • 软链接可以对目录进行链接。必须使用绝对路径。
  • 软链接可以对一个不存在的文件名进行链接
  • 软链接可以跨文件系统 ,硬链接不可以
硬链接:ln  [参数]  源文件  目标文件
软链接:ln -s   [源文件或目录]  [目标文件或目录]
短选项 长选项 含义
  --backup[=CONTROL] 为每个已存在的目标文件创建备份文件
-b   类似--backup,但不接受任何参数
-d --directory 创建指向目录的硬链接(只适用于超级用户)
-f --force 强行删除任何已存在的目标文件
-i --interactive 交互模式,文件存在则提示用户是否覆盖
-L --logical 引用的目标是符号链接
-n --no-dereference 把符号链接视为一般目录
-P --physical make hard links directly to symbolic links
-r --relative create symbolic links relative to link location
-s --symbolic 软链接(符号链接)
-S<附加字尾> --suffix=<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。
-t --target-directory=DIRECTORY specify the DIRECTORY in which to create
-T --no-target-directory treat LINK_NAME as a normal file always
-v --verbose 执行时显示详细的信息。
给文件创建软链接 
[root@localhost test]# ll 
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log 
[root@localhost test]# ln -s log2013.log link2013   为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效 
[root@localhost test]# ll 
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log 
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log 
 
 
给文件创建硬链接 
[root@localhost test]# ll 
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log 
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log 
[root@localhost test]# ln log2013.log ln2013   为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同 
[root@localhost test]# ll 
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log 
-rw-r--r-- 2 root bin      61 11-13 06:03 ln2013 
-rw-r--r-- 2 root bin      61 11-13 06:03 log2013.log 
 
 
给目录创建软链接,必须用绝对路径 
[root@localhost test]# ll 
drwxr-xr-x 2 root root   4096 12-07 16:36 test3 
drwxr-xr-x 2 root root   4096 12-07 16:57 test5 
[root@localhost test]# cd test5 
[root@localhost test5]# ll 
lrwxrwxrwx 1 root root 5 12-07 16:57 test3 -> test3 
[root@localhost test5]# cd test3 
-bash: cd: test3: 符号连接的层数过多 
[root@localhost test5]# 
[root@localhost test5]# ll
lrwxrwxrwx 1 root root 5 12-07 16:57 test3 -> test3 
[root@localhost test5]# rm -rf test3 
[root@localhost test5]# ll 
[root@localhost test5]# ln -sv /opt/soft/test/test3 /opt/soft/test/test5  目录创建链接必须用绝对路径,相对路径创建会不成功,会提示:符号连接的层数过多 这样的错误 
创建指向“/opt/soft/test/test3”的符号链接“/opt/soft/test/test5/test3” 
[root@localhost test5]# ll 
lrwxrwxrwx 1 root root 20 12-07 16:59 test3 -> /opt/soft/test/test3 
[root@localhost test5]#  
[root@localhost test5]# cd test3 
[root@localhost test3]# ll 
总计 4 
-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log 
[root@localhost test3]# touch log2014.log 
[root@localhost test3]# ll 
总计 4 
-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log 
-rw-r--r-- 1 root root  0 12-07 17:05 log2014.log 

shell ln的更多相关文章

  1. 如何在python脚本里面连续执行adb shell后面的各种命令

    如何在python脚本里面连续执行adb shell后面的各种命令 adb shell "cd /data/local && mkdir tmp" adb shel ...

  2. Archlinux安装MySQL5.7.14压缩包版

    现在Arch官方源里是MariaDB,MySQL扔到AUR里去了...感觉还是自己安装好些... (参考资料:度娘.官方文档) 贴配置: lts版的 在Vbox虚拟机测试 按照官方文档的安装步骤: 创 ...

  3. 如何利用脚本实现MySQL的快速部署以及一机多实例的部署

    MySQL有三个版本:二进制,源码包,RPM. 下面讲讲二进制包的安装过程 下载地址: http://dev.mysql.com/downloads/mysql/ 选择Linux-Generic 我这 ...

  4. [MySQL Reference Manual] 8 优化

    8.优化 8.优化 8.1 优化概述 8.2 优化SQL语句 8.2.1 优化SELECT语句 8.2.1.1 SELECT语句的速度 8.2.1.2 WHERE子句优化 8.2.1.3 Range优 ...

  5. mysql 5.6.34 二进制

    安装方法 http://dev.mysql.com/doc/refman/5.6/en/binary-installation.html shell> groupadd mysqlshell&g ...

  6. Ubuntu 12.04 安装MySQL

    本文地址:http://www.cnblogs.com/yhLinux/p/4012689.html 本文适合新手入门. 本文是对 Ubuntu 12.04 环境下安装 MySQL 的记录,通过这两天 ...

  7. Seafile内部云盘

    软件列表 软件 版本 备注 centos 6.4 x86_64 64位系统 mysql mysql5.5.49 本机使用 python 2.7 seafile 依赖python pip 8.1.2 安 ...

  8. LNMP源码安装

    1. mysql安装 # Preconfiguration setup shell > groupadd mysql shell > useradd -r -g mysql -s /bin ...

  9. Debian 8.2 下安装MySQL5.7.9 Generic Binaries

    安装过程参考了Installing MySQL on Unix/Linux Using Generic Binaries 首先检查是否安装libaio shell> apt-cache sear ...

随机推荐

  1. MD5算法实现

    MD5算法的简要叙述为: MD5以512位分组来处理输入的信息(512位分组?每次处理都取出512位数据?), 每一分组又被划分为16个32位子分组(16乘32刚好是512), 经过一些列的处理后(怎 ...

  2. Linux 网络子系统之NAPI书签

    只是一个书签 http://blog.csdn.net/ustc_dylan/article/details/6116334

  3. MapReduce 学习(一)

    首先我们先来欣赏一下MapReduce的执行过程吧,如下图,自己看,不解释了. Map 和 Reduce 的处理都是基于Key/Value来进行的,在Map中对文件的每一行进行处理,有两个输入参数,K ...

  4. XMLHttpRequest对象的常用属性与方法

    方法 一, open(); 书上解释: 用于设置请求的目标url请求方法, 以及其他参数信息 个人理解: 发送请求的页面在不刷新的情况能将参数传给一个服务器进行处理, 这个方法就是将这些个参数传送过去 ...

  5. 隐藏的Swiper显示后无法获取正确的宽度和高度

    今天在使用swiper的时候,元素默认是显示的时候没毛病,但是默认是隐藏的状态,再显示的时候发现滑动的时候宽度计算有误,如下图所示: 正确的显示如下: 隐藏的元素再次显示如下: 宽度计算有误 解决方案 ...

  6. 设计中最常用的CSS选择器

    准确而简洁的运用CSS选择器会达到非常好的效果.我们不必通篇给每一个元素定义类(class)或ID,通过合适的组织,可以用最简单的方法实现同样的效果.在实际工作中,最常用的选择器有以下五类: 一.标签 ...

  7. Android Studion的Monitor中显示No Debuggable Application的解决方法

    在使用Android Studion的时候,突然android Monitor中无法下拉显示调试项目,只是一直提示No Debuggable Application,然后上网搜索的解决办法: 第一种方 ...

  8. MFC 无边框窗体实现用鼠标拖动窗体边缘实现窗体大小变化

    无边框窗体如何实现用鼠标拖动窗体边缘实现窗体大小变动呢?下面介绍一种方法,通过以下几个步骤即可实现: 1.实现WM_NCHITTEST消息,实现四条边框的模拟 2.实现WM_NCLBUTTONDOWN ...

  9. WinInet 小例子

    #include <windows.h> #include <wininet.h> #include <string> #include <iostream& ...

  10. jquery -- jquery控制只能输入数字和小数点

    控制文本框只能输入数字是一个很常见的需求,比如电话号码的输入.数量的输入等,这时候就需要我们控制文本框只能输入数字.在用js控制之后在英文输入法的状态下去敲击键盘上的非数字键是输不进去的,然而当你转到 ...