Linux新手学习资料(4)

2019-02-15 12:09

给目录建立硬链接。的确如此;即便 . 和 .. 是系统给目录创建的硬链接,也不允许您(“root”用户也不行)创建任何您自己的硬链接。

硬链接的第二个局限性是它们不能跨文件系统。这意味着,如果您的 / 和 /usr 存在于不同的文件系统,您不能创建从 /usr/bin/bash 到 /bin/bash 的链接。 符号链接

实际上,符号链接(symbolic link,或“symlinks”)比硬链接更常用到。符号链接是一种专门的文件类型,在这种文件类型中,链接通过名称引用另一个文件,而不是直接引用索引节点。符号链接不阻止文件被删除;如果目标文件消失,那么符号链接仅仅是不可用,或“被破坏”。 通过将 -s 选项传给 ln,可以创建符号链接。 $ ln -s secondlink thirdlink

$ ls -l firstlink secondlink thirdlink -rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19: 08 firstlink

-rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19: 08 secondlink

lrwxrwxrwx 1 agriffis agriffis 10 Dec 31 19: 39 thirdlink -> secondlink

在 ls -l 输出中,可以用三种方式区分符号链接和一般文件。第一,请注意第一栏包含一个 l 字符的输出表明是符号链接。第二,符号链接的大小是目标文件(本例是 secondlink)的字符数。第三,输出的最后一栏显示目标文件名。

符号链接通常比硬链接更灵活。您可以给任何类型的文件系统对象(包括目录)创建符号链接。又因为符号链接的实现是基于路径的(而不是索引节点),所以创建指向另一个文件系统上的对象的符号链接是完全可行的。但是,这一事实也使符号链接理解起来很复杂。请考虑我们想要在/tmp中创建一个指向 /usr/local/bin的链接的情况。我们应该输入: $ ln -s /usr/local/bin bin1 $ ls -l bin1

lrwxrwxrwx 1 root root 14 Jan 1 15: 42 bin1 -> /usr/local/bin 或者还可以输入:

$ ln -s ../usr/local/bin bin2

$ ls -l bin2

lrwxrwxrwx 1 root root 16 Jan 1 15: 43 bin2 -> ../usr/local/bin

您可以看到,两个符号链接都指向同一目录。但是,如果我们的第二个符号链接在任何时刻被移动到另一个目录,由于相对路径的缘故,它将遭到“破坏”。 $ ls -l bin2

lrwxrwxrwx 1 root root 16 Jan 1 15: 43 bin2 -> ../usr/local/bin $ mkdir mynewdir $ mv bin2 mynewdir $ cd mynewdir $ cd bin2

bash: cd: bin2: No such file or directory

因为/tmp/usr/local/bin这个目录不存在,我们不能再把目录转到bin2;换句话说,bin2 现在被破坏了。

由于这个原因,有时避免用相对路径信息来创建符号链接是个好主意。但是,在许多情况下,相对的符号链接很管用。请考虑一个示例,在这个示例中您想要给 /usr/bin 中的一个程序创建一个别名: # ls -l /usr/bin/keychain

-rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/bin/keychain 作为 root 用户,您可能想要给“keychain”创建一个别名,比如“kc”。在这个示例中,我们有 root 访问权,由 bash 提示符改变为“#”可以证明。我们之所以需要 root 访问权是因为一般用户不能在 /usr/bin 中创建文件。作为 root 用户,我们可以像下面这样给 keychain 创建一个别名:

# cd /usr/bin

# ln -s /usr/bin/keychain kc

当这个解决方法起作用时,如果我们想要把两个文件都移到 /usr/local/bin 时,它将会出现问题。 # mv /usr/bin/keychain /usr/bin/kc /usr/local/bin

因为在符号链接中,我们使用了绝对路径,而我们的kc符号链接仍然指向/usr/bin/keychain,它已不存在了——另一个被破坏的符号链接。符号链接中的相对路径和绝对路径都各具优点,您应该使用适合于您的特殊应用的路径类型。一般情况下,相对路径或绝对路径都能工作得很好。在这种情况下,下面的示例将起作用: # cd /usr/bin # ln -s keychain kc # ls -l kc

lrwxrwxrwx 1 root root 8 Jan 5 12: 40 kc -> keychain rm

既然我们知道怎样使用 cp、mv 和 ln,现在我们该学习怎样把对象从文件系统中删除了。通常,这用 rm 命令来完成。要删除文件,只需在命令行中指定它们: $ cd /tmp

$ touch file1 file2 $ ls -l file1 file2


Linux新手学习资料(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:我国企业的绿色营销现状及发展对策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: