日期:2014-05-16  浏览次数:20688 次

linux ln命令: 链接文件或目录
链接文件有点类似于Windows 的所谓快捷方式,但并不完全一样。链接有两种方式,软链接和硬链接。
  软链接文件
  软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
  [yaoyao@linux236 yaoyao]$ ls -l
  total 0
  lrwxrwxrwx 1 yaoyao yaoyao  5 Aug 6 17:39 1.txt -> 3.txt
  lrwxrwxrwx 1 yaoyao yaoyao  5 Aug 6 17:38 2.txt -> 1.txt
  lrwxrwxrwx 1 yaoyao yaoyao  5 Aug 6 17:39 3.txt -> 2.txt
  上面的三个文件形成了一个递归,实质上没有任何作用。系统管理员应该避免系统出现断链或循环链接。
  用ln -s 命令可以生成一个软连接,如下:
  [root@linux236 test]# ln -s source_file softlink_file
  在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。
  硬链接文件
  info ln 命令告诉您,硬链接是已存在文件的另一个名字(A "hard link" is another name for an existing file),这多少有些令人困惑。硬连接的命令是
  ln -d existfile newfile
  硬链接文件有两个限制
  1、不允许给目录创建硬链接;
  2、只有在同一文件系统中的文件之间才能创建链接。
  对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。 

==========================================================

介绍:
ln命令用来连接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

语法:

ln [-b] [-d] [-f] [-i] [-n] [-s] [-v] 源文件或目录 目标文件或目录

选项介绍:
    -b: 将在链接时会被覆写或删除的档案进行备份;
    -d: 允许系统管理者硬链接自己的目录;
    -f: 强行建立文件或目录的链接,不论文件或目录是否存在;
    -n: 把符号链接的目的目录视为一般文件;
    -i: 在删除与dist同档名的档案时先进行询问;
    -s: 进行软链接(符号链接);
    -v: 在链接之前显示其文件名;

执行范例:
view source
print?
  ln -s file softlink #建立软链接
   ln file hardlink #建立硬链接


如果想文件source建立软链接,软链接名为softlink, 而在当前目录上存在一个名为softlink的文件,这时下面命令会建立软链接,覆盖掉原来的文件

ln -f -s source softlink


扩展阅读:
在Linux系统中,内核为每一个新创建的文件分配一个inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存中,从而实现文件的快速访问。
链接是一种在共享文件和访问其他用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。

    硬链接: 硬链接说白了就是一个指针,指向文件索引节点,系统并不为它重新分配新的inode。可以用ln命令来建立硬链接。尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:(1)不可以在不同文件系统的文件间建立链接(2)只有超级用户才可以为目录创建硬链接。

    软链接: 软链接克服了硬链接的不足,没有任何文件系统的限制,而且任何用户都可以创建指向目录/文件的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

原文:http://www.scriptlearn.com/archives/455