使用ln 给Linux 程序/脚本 创建一个”快捷方式“ ?
使用ln命令
ln [参数] [源文件或目录] [目标文件或目录]
一般情况下使用软链接 -s即可
语法
ln [参数][源文件或目录][目标文件或目录] 其中参数的格式为
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
命令功能 : Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 2.软链接可以 跨文件系统 ,硬链接不可以
- 3.软链接可以对一个不存在的文件名进行链接
- 4.软链接可以对目录进行链接
硬链接:
- 1.硬链接,以文件副本的形式存在。但不占用实际空间。
- 2.不允许给目录创建硬链接
- 3.硬链接只有在同一个文件系统中才能创建
命令参数
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
选择参数:
- -S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
- -V "-V<备份方式>"或"--version-control=<备份方式>"
- --help 显示帮助信息
- --version 显示版本信息
实例
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -s log2013.log link2013
输出:
[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 [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
给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
ln log2013.log ln2013
输出:
[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 [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
来源: http://www.runoob.com/linux/linux-comm-ln.html
关于硬链接和软链接的区别:
1.原理上:
linux下每一个文件和目录都有唯一的一个inode节点。通过 ls -ail可以查看该文件/目录 的inode唯一编号.
硬链接(hard link):A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,**每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。**注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。
软链接(soft link):A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
2.使用限制上:
硬链接:a.不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的".."除外,这个系统可以识别出来),存在环的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数)
b:不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下。
c:不能对不存在的文件创建硬链接,由原理即可知原因。
软链接:a.可以对目录创建软链接,遍历操作会忽略目录的软链接。
b:可以跨文件系统
c:可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了
3.命令
硬:ln 源文件 链接名
软:ln -s 源文件 链接名
来源: https://www.cnblogs.com/ylan2009/p/4287929.html
linux 下的硬链接、软链接
软链接
软连接主要目的是升级之后向前兼容。软链接相当于快捷方式。当我删除源文件之后,后面的文件就找不到前面的文件了。
软连接相当于:a->b;b->inode.
例子:软连接的建立
ln -s libiptc.so.0.0.0 libip6tc.so.0 //原来的库是libip6tc.so.0,升级后的库是libiptc.so.0.0.0。升级之后我继续保留原来的
名字:libip6tc.so.0,用他指向实际使用的库。这样用户就不需要修改名字了。
libip6tc.so.0 -> libiptc.so.0.0.0 //ll 之后的显示。这样我对libip6tc.so.0进行操作,其实就是对 libiptc.so.0.0.0进行操作。
硬链接
linux下每一个文件和目录都有唯一的一个inode节点。
硬链接就是**有几个名字可以到磁盘上的那个inode。相当于:a->inode;b->inode;c->inode **
ll 命令后面的数字显示的就是硬链接(下面例子中的15)的数目。
磁盘在inode上存对应的数据。如果一个文件硬链接数为n,删除一个之后没有什么影响。只有当最后一个硬链接删除之后,才不能用。
但是这个不能用,指的是我没有方法找到inode了,并不代表操作系统删除了这个inode的数据。只要这个inode没有被覆盖,还是能恢复的。
例子1:硬链接的理解
[liupc@ubuntu ~/Projects]$>ls -lia //-i参数可以显示inode
534673 drwxrwxr-x 5 liupc liupc 4096 May 15 05:22 . //534673就是当前目录的inode。而上层目录的inode是400068.
400068 drwxr-xr-x 15 liupc liupc 4096 May 15 05:22 ..
[liupc@ubuntu ~/Projects]$>cd .. //进入到上层目录
[liupc@ubuntu ~]$>ls -lia
400068 drwxr-xr-x 15 liupc liupc 4096 May 15 05:22 . //可以看到"."的inode也是400068.
393217 drwxr-xr-x 3 root root 4096 May 12 06:34 ..
[liupc@ubuntu /home]$>ls -li
total 4
400068 drwxr-xr-x 15 liupc liupc 4096 May 15 05:22 liupc //可以看到"liupc"的inode也是400068.第一个中".."和第二个中的"."其实就 是"/home/liupc"的硬链接。因为他们有共同的inode.(软连接的两个文件具有不 同的inode.)
例子2:硬链接的建立
ln Depth_Search.c 111 //建立硬链接:111
root@ubuntu:/home/liupc/Projects# ls -il //通过ls -il 可以看到:两个文件的inode相同。硬链接数变成了2.
535496 -rw-rw-r-- 2 liupc liupc 718 May 15 05:22 111 删除任意一个没有影响。
535496 -rw-rw-r-- 2 liupc liupc 718 May 15 05:22 Depth_Search.c
来源:https://blog.csdn.net/pengchengliu/article/details/80471286