Q1:如何利用ln -s来创建快捷方式?
A1:ln(link,链接文件):
Windows中的快捷方式,实际上快捷方式和它指向的文件是独立的两个文件,两个都占硬盘空间,只不过用户访问快捷方式时,其效果等同于访问指向的文件;
Linux中有两种链接文件:
1)软链接(符号链接symbol),等同于Windows中快捷方式ln -s 源文件名 符号链接文件名,源文件名和符号链接文件名是主从关系,源被删了,符号链接也就失效了, eg: ln -s src.c linker.c (linker.c就是src.c的一个符号链接文件);
2)硬链接,ln 源文件名 符号链接文件名,源文件名和符号链接文件名是并列关系,源被删了,符号链接依然有效。硬链接实际上和源文件在硬盘中是同一个东西,效果类似于硬盘上的一个文件,在文件系统上,在我们看来有好多个文件一样。每次删除一个文件时,只要他还有其他的硬链接存在,这个文件就不会被真正删除。只有等所有的链接文件都删除掉了,这个文件才会被真正从硬盘上删除。
Q2:如何解决ln -s软链接产生“Too many levels of symbolic links ”的错误?
A2:在做ln的时候要将文件的绝对路径下的完整目录写上去!
例如想将/mnt/hgfs/下的windows_share/文件夹的链接保存到宿主目录:
ln -s /mnt/hgfs/windows_share/ /home/grush/
(tip: grush是当前普通用户的宿主目录名,每个人都不一样,先输入cd ~切换到宿主目录,然后输入pwd查看宿主目录的绝对路径,第二个文件夹的名字就是宿主目录名 )
引起这个问题的原因就是,我在apache的/etc/apache2/sites-enabled这个目录建立软连接的时候,采用了相对路径,就引发了这个问题。解决方法也是非常的简单,在建立软连接的时候,采用绝对路径就可以了,如下所示:
sudo ln -s /etc/apahe2/sites-available/example.conf /etc/apache2/sites-enabled/