shell ln
功能: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的更多相关文章
- 如何在python脚本里面连续执行adb shell后面的各种命令
如何在python脚本里面连续执行adb shell后面的各种命令 adb shell "cd /data/local && mkdir tmp" adb shel ...
- Archlinux安装MySQL5.7.14压缩包版
现在Arch官方源里是MariaDB,MySQL扔到AUR里去了...感觉还是自己安装好些... (参考资料:度娘.官方文档) 贴配置: lts版的 在Vbox虚拟机测试 按照官方文档的安装步骤: 创 ...
- 如何利用脚本实现MySQL的快速部署以及一机多实例的部署
MySQL有三个版本:二进制,源码包,RPM. 下面讲讲二进制包的安装过程 下载地址: http://dev.mysql.com/downloads/mysql/ 选择Linux-Generic 我这 ...
- [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优 ...
- mysql 5.6.34 二进制
安装方法 http://dev.mysql.com/doc/refman/5.6/en/binary-installation.html shell> groupadd mysqlshell&g ...
- Ubuntu 12.04 安装MySQL
本文地址:http://www.cnblogs.com/yhLinux/p/4012689.html 本文适合新手入门. 本文是对 Ubuntu 12.04 环境下安装 MySQL 的记录,通过这两天 ...
- Seafile内部云盘
软件列表 软件 版本 备注 centos 6.4 x86_64 64位系统 mysql mysql5.5.49 本机使用 python 2.7 seafile 依赖python pip 8.1.2 安 ...
- LNMP源码安装
1. mysql安装 # Preconfiguration setup shell > groupadd mysql shell > useradd -r -g mysql -s /bin ...
- Debian 8.2 下安装MySQL5.7.9 Generic Binaries
安装过程参考了Installing MySQL on Unix/Linux Using Generic Binaries 首先检查是否安装libaio shell> apt-cache sear ...
随机推荐
- tmpx75 I2C 温度传感器驱动程序添加
在kernel 内 make menuconfig 加入相关选项 Device Drivers ---> <*> Hardware Monitoring support ---> ...
- MyBatis 网络资料
http://mybatis.github.io/mybatis-3/zh/index.html 官方文档例子 http://blog.csdn.net/rootsuper/article/detai ...
- java中的方法——重载yu重写(转)
重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. ...
- [转]Handler学习笔记(一)
一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中 ...
- hibernate不调用save也保存上了
List<Instrument> insts = instService.search(search); if (insts.size() == 1) { Instrument inst ...
- PHPstorm8 自动换行设置方法
PHPstorm是一款非常不错的PHP开发工具,有很多需要自己设置.比如,IDE常见的代码自动换行功能需要我们自己去配置才能实现. File -> Settings -> Editor ...
- Linux基础回想(1)——Linux系统概述
1. 什么是操作系统?它与硬件以及其它软件之间的关系是如何的? 操作系统是控制和管理计算机系统内各种硬件和软件资源.有效组织多道程序执行的系统软件(或程序集合),是用户和计算机之间的接口.详细的说: ...
- asp.net mvc webconfig配置文件操作
读取web.config数据,可以不用编译.如发布后,非常有用web.config文件<configuration> <appSettings> <add key=&qu ...
- make的自动变量和预定义变量
make的自动变量 $@ 规则目标的文件名.如果目标是档案文件的一个成员,"$@"就是档案文件的名称 $% 当目标是档案文件的一个成员时,"$%"是该成员的名称 ...
- C++与Java混合编程
现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子,一个软件为了快速开发,可能是使用Delphi或VB作为界面开发 ...