魅力博客

魅力Linux|魅力空间|魅力博客|学习Linux|ubuntu日记|电脑教程|手机软件

Linux ln命令 - 建立文件/目录链接:Linux下的文件软件连接其实就是Windows下的快捷方式



Linux下的文件软件连接其实就是Windows下的快捷方式


命令:ln -s /var  linkdir(linktdir即为你要连接的文件)
1.如果linkdir已经创建,并且是个目录,
那么执行上面的命令后,在 linkdir目录下会创建一个名为 var 的文件,指向/var
2.如果linkdir已经创建,是个文件,上面命令失败,只有指定的名称不存在的时候才会在创建一个新文件,连接到/var目录。
3.ln -s /var .(即在下创建一个 var 文件,指向/var) 与1类同。
  即可在看到:
var -> /var的标记。

一般常用的是第二种方法,自己指定的名字。

详细语法参数说明如下:

1. 使用方式:ln [option] source_file dist_file  
                    -f 建立时,将同档案名删除. 
                    -i 删除前进行询问. 
                    ln -s abc cde 建立abc 的软连接 
                    ln abc cde 建立abc的硬连接,
2. 软链接与硬链接的区别(通俗):

硬链接可认为是一个文件拥有两个文件名;而软链接则是系统新建一个链接文件,此文件指向其所要指的文件

ln -s /root/lntest/source/ /root/lntest/dist/

这里看到软链就是个快捷方式

Linux下的文件软件连接其实就是Windows下的快捷方式.png

3. 软链接与硬链接的区别(讲解):

Linux 软连接与硬连接

对于一个文件来说,有唯一的索引接点与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊。

连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows下的快捷方式。

不可以对文件夹建立硬连接的,我们通常用的还是软连接比较多。

eg:

ln -s source dist        # 建立软连接

ln -s /mnt/hgfs/ /home/luo/    注意后面的“/” 是将目录里所有的文件链接过去,必须加上,否则,建立的目录显示颜色异常,还不能正常访问,如cd 进不去

ln source dist            # 建立硬连接

软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;相反,硬联接为文件开设一个新的目录项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。

(1)软连接可以 跨文件系统 ,硬连接不可以 。实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 。ln aa.txt /root/bb 失败 。

(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加,只要结点的连接数不是 0,文件就一直存在,不管你删除的是源文件还是 连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么源文件连接文件的 ,因为他们指向都是同一个 I节点)。 当你修改源文件或者连接文件任何一个的时候 ,其他的文件都会做同步的修改。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件 对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.

(3)软连接可以对一个不存在的文件名进行连接 。

(4)软连接可以对目录进行连接。

备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点含有关于文件的大部分的重要信息,包括文件数据块在磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.

制作软连接需要ln命令,命令格式为 ln -s targetfile linkfile
比如,如下命令
ln -s /www/abc.sh doabc

上面的命令会在当前目录下生成一个doabc文件,这个文件是软连接,使用ll查看当前目录下的文件时,这个文件会显示成 doabc->/www/abc.sh *的形式。
使用软链接的好处:
(1)软连接可以 跨文件系统 。
实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 。
(2)软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件对源文件无影响,但是删除 源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名。
(3)软连接可以对一个不存在的文件名进行连接 。
(4)软连接可以对目录进行连接。

---------------------------------分割线------------------------

简单明了的来说:


ln /var a(字符链接)。硬链接。
ln -s /var a (字符链接)。软连接。

硬链接的特点:不能跨文件系统,不能跨分区。占用系统资源。与源文件同步。
软连接:可以存放于任何文件系统。

综合利弊,我们一般采用软链接。


以下大量实例参考:

---------------------------------分割线------------------------

ln -s 源目录 目标快捷方式
比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是
ln -s /home/LXBC /etc/LXBC553

---------------------------------分割线------------------------


想在在linux下写一个脚本,让当前目录所有文件在/usr/bin下生成软连接,软连接名就是文件名本身,该怎么写

#!//bash

for file in `ls`
do
ln -s $file /usr//
done

---------------------------------分割线------------------------

linux关于为文件夹建立软连接,但是目标目录已经存在的问题

我想为文件夹建立软链接,我在终端里运行如下命令:

ln -s /home/thej/public_html/JC/ajax_search/ /home/thej/public_html/city/typo3conf/ext/

ln: creating symbolic link `/home/thej/public_html/city/typo3conf/ext/ajax_search' to `/home/thej/public_html/JC/ajax_search/': File exists

原因是在/home/thej/public_html/city/typo3conf/ext/里已经有了一个文件夹叫:ajax_search,我在建立软链接时,如何可以覆盖这个文件夹?

答:

不能覆盖。除非你删了这个文件夹。
链接是个,实际情况原目录什么样就是什么样。
除非你想把目标目录下的对应名称的目录删除掉后在做软连接。语法:

---------------------------------分割线------------------------

linux中如何设置能使一个脚本在任意目录下都可直接运行,不要非到这个脚本所在目录下运行?

其实这个就不是软连接的问题了。这个是环境变量的问题了。
把这个脚本所在目录加入环境变量中。
修改/etc/profile 加入一行:
export =$:/脚本目录/

或者修改 /etc/environment  ,将目录加到PATH后面。

---------------------------------分割线------------------------

linux 如何查看一个软连接实际指向的文件的位置(linux下查看软链接的命令是什么?)

linux下查看软连接的信息使用命令“ls -L”最后一列就是原始地址(实际指向的文件的位置)。ln -s /home/basic/dl/ build/执行完成后,会在build路径下dl的目录, 使用ls -l查看会发现build下的dl-〉/home/basic/dl,进入build/dl下即可查看与访问相应的文件。

  1. Linux命令行界面输入命令:ls -al;

  2. 带有“->”符号的则为软连接,initrd.img为软连接的文件名,而->后面跟着的boot/initrd.img-3.13.0-32-geberic则为软连接文件的真实路径。

Linux命令行ls-al.jpg

---------------------------------分割线------------------------

Linux中创建目录软链接为啥路径不跳转?

比如在home目录下创建目录test然后创建软链接ln -s /home/test /home/link
现在问题来了,我进入link软链接shell提示符显示为#/home/link而不是/home/test 给人的感觉好像link是一个目录,虽然只是个链接目录。

显示为link,实际上进入的目录内容都是test的。

---------------------------------分割线------------------------


关于android如何创建软连接

语法:symlink(target, src1, src2, ...);

作用:建立指向target的符号链接src1、src2...
说明:
  • target:符号链接目标

  • src1:要创建的符号链接目标点

示例:symlink("mksh", "/system/bin/sh");


语法:symlink <link-target> <link-path>


<link-target>表示链接到的目标,<link-path>表示快捷方式的路径


作用:相当于linux中的ln命令,将<link-target>在<link-path>处创建一个软链接,<link-target>的格式应为绝对路径(或许相对路径也可以),<link-path>为“根目录:路径”的形式


举例:symlink /system/bin/su  /system/xbin/su(在手机中system中的xbin中建立一个/system/bin/su的快捷方式)






返回顶部

发表评论:

Powered By Z-BlogPHP 1.7.4


知识共享许可协议
本作品采用知识共享署名 3.0 中国大陆许可协议进行许可。
网站备案号粤ICP备15104741号-1