linux亦步亦趋(08)文件处理ln命令

 ln命令:链接文件

分为硬链接和软连接,其格式分别如下:

ln -s srcfile desfile; ln -s  源文件  目的文件(软连接文件);

ln srcfile desfile;ln 源文件  目的文件(软连接文件);

软连接:

我们通过简单的实例来分析一下他们的用法和特性:

[root@localhost etc]# ln -s /etc/hosts /hosts.s
[root@localhost etc]# ls -l /etc/hosts /hosts.s
-rw-r--r-- 2 root root 187 07-16 15:00 /etc/hosts
lrwxrwxrwx 1 root root  10 07-22 12:06 /hosts.s -> /etc/hosts
[root@localhost etc]#

 我们首先创建了一个软连接文件/hosts.s  然后又用ls查看了源文件和软连接文件的文件属性,可以发现几个特点

  • 大小,源文件和软连接文件的大小不一样,源文件很大而软连接文件很小。
  • 权限,软连接权限是全部开放的。
  • 软连接文件属性第一个字符是l。
  • 创建时间也不一样,源文件和软连接文件的创建时间也不一样。

其实软连接就有和我们windows里面的快捷方式一模一样,其显示的权限没有任何意义,最终的权限还是由源文件控制。

硬连接:

我们通过简单的实例来分析一下:

[root@localhost etc]# ln /etc/hosts /hosts.h
[root@localhost etc]# ls -l /etc/hosts /hosts.h
-rw-r--r-- 3 root root 0 07-22 12:07 /etc/hosts
-rw-r--r-- 3 root root 0 07-22 12:07 /hosts.h

我们可以发现如下特点:

  • 硬连接的文件属性开头不是l,
  • 大小和源文件一样大;
  • 修改时间是一样的。

其实硬连接文件就是一个文件的复本,当你改变其中的一个文件的时候另一个也会改变,一般用于备份容易被别人误删除的文件,因为他与源文件的inode是一样的。

查看inode:

[root@localhost etc]# ls -li /etc/hosts /hosts.h
2009804 -rw-r--r-- 3 root root 0 07-22 12:07 /etc/hosts
2009804 -rw-r--r-- 3 root root 0 07-22 12:07 /hosts.h

注意:不可以跨文件系统建立硬连接,如下例子:

[root@localhost etc]# ln /etc/hosts /studyData/hosts.h
ln: 正在创建指向“/etc/hosts”的硬链接“/studyData/hosts.h”: 无效的跨设备连接
[root@localhost etc]#