ln是linux中又一个很是重要命令,它的功能是为某一个文件在另一个位置创建一个同步的连接.当咱们须要在不一样的目录,用到相同的文件时,咱们不须要在每个须要的目录下都放一个必须相同的文件,咱们只要在某个固定的目录,放上该文件,而后在 其它的目录下用ln命令连接(link)它就能够,没必要重复的占用磁盘空间。node
ln [参数][源文件或目录][目标文件或目录]
Linux文件系统中,有所谓的连接(link),咱们能够将其视为档案的别名,而连接又可分为两种 : 硬连接(hard link)与软连接(symbolic link),硬连接的意思是一个档案能够有多个名称,而软连接的方式则是产生一个特殊的档案,该档案的内容是指向另外一个档案的位置。硬连接是存在同一个文件系统中,而软连接却能够跨越不一样的文件系统。linux
软连接能够对目录进行连接vim
软连接就至关于windows的的快捷方式,使用场景:
1.在文件系统中多处共享同一个较大文件时,使用软连接就能够避免建立多个副本。
2.维护动态库文件的版本时,使用软连接,在升级库文件后,只需修改软连接的源文件,而使用该库的程序则不须要修改。windows
使用原文件的绝对路径建立的软连接,不会随着软连接路径改动而失效!因此建议使用原文件绝对路径建立软连接。这时候的软连接才算得上是真正意义上至关于Windows的快捷方式,一旦生成到处可用centos
硬连接说白了是一个指针,指向文件索引节点,系统并不为它从新分配inode。源文件和硬连接文件都是指向同一块磁盘空间的!经过使用硬连接可达到备份数据(实际是备份节点)的效果!ide
第一,ln命令会保持每一处连接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;idea
第二,ln的连接又分软连接和硬连接两种,软连接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬连接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,不管是软连接仍是硬连接,文件都保持同步变化。操作系统
ln指令用在连接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的全部文件或目录复制到该目录。若同时指定多个文件或目录,且最后的目的地并不是是一个已存在的目录,则会出现错误信息。指针
必要参数 | 描述 |
---|---|
-b | 删除,覆盖之前创建的连接 |
-d | 容许超级用户制做目录的硬连接 |
-f | 强制执行 |
-i | 交互模式,文件存在则提示用户是否覆盖 |
-n | 把符号连接视为通常目录 |
-s | 软连接(符号连接) |
-v | 显示详细的处理过程 |
选择参数 | 描述 |
---|---|
-S | “-S <字尾备份字符串> ”或 “--suffix= <字尾备份字符串> ” |
-V | “-V <备份方式> ”或“--version-control= <备份方式> ” |
--help | 显示帮助信息 |
--version | 显示版本信息 |
命令:日志
ln -s 2018.log link2018
输出:
hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test$ ln -s 2018.log link2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ ll 总用量 12 drwxrwxr-x 3 hc hc 4096 10月 23 11:53 ./ drwxrwxr-x 6 hc hc 4096 10月 19 18:22 ../ -rw-r--r-- 1 hc hc 0 10月 23 11:53 2018.log drwxrwxr-x 2 hc hc 4096 10月 18 17:42 .idea/ lrwxrwxrwx 1 hc hc 8 10月 23 11:53 link2018 -> 2018.log
修改源文件2018.log内容,其软连接内容会同步修改
hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat 2018.log 我是log日志 hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat link2018 我是log日志 hc@hc-virtual-machine:~/PycharmProjects/my_test$ vim 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat 2018.log 我是log hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat link2018.log 我是log
说明:
cat 命令是查看文件内容
为2018.log文件建立软连接link2018,若是2018.log丢失,link2018将失效
命令:
ln 2018.log ln2018
输出:
hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ ln 2018.log ln2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 ln2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ ll 总用量 20 drwxrwxr-x 3 hc hc 4096 10月 23 12:02 ./ drwxrwxr-x 6 hc hc 4096 10月 19 18:22 ../ -rw-r--r-- 2 hc hc 10 10月 23 11:57 2018.log drwxrwxr-x 2 hc hc 4096 10月 18 17:42 .idea/ lrwxrwxrwx 1 hc hc 8 10月 23 12:00 link2018 -> 2018.log -rw-r--r-- 2 hc hc 10 10月 23 11:57 ln2018
说明:
为2018.log建立硬连接ln2018,2018.log与ln2018的各项属性相同
修改源文件2018.log内容,其软硬连接内容均会同步修改
hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat ln2018 我是log hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat 2018.log 我是log hc@hc-virtual-machine:~/PycharmProjects/my_test$ vim 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat 2018.log 我是log1 hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat ln2018 我是log1 hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat link2018 我是log1
演示以下:
hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 ln2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ ll 总用量 20 drwxrwxr-x 3 hc hc 4096 10月 23 12:04 ./ drwxrwxr-x 6 hc hc 4096 10月 19 18:22 ../ -rw-r--r-- 2 hc hc 11 10月 23 12:04 2018.log drwxrwxr-x 2 hc hc 4096 10月 18 17:42 .idea/ lrwxrwxrwx 1 hc hc 8 10月 23 12:00 link2018 -> 2018.log -rw-r--r-- 2 hc hc 11 10月 23 12:04 ln2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ rm -rf 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test$ ll 总用量 16 drwxrwxr-x 3 hc hc 4096 10月 23 12:57 ./ drwxrwxr-x 6 hc hc 4096 10月 19 18:22 ../ drwxrwxr-x 2 hc hc 4096 10月 18 17:42 .idea/ lrwxrwxrwx 1 hc hc 8 10月 23 12:00 link2018 -> 2018.log -rw-r--r-- 1 hc hc 11 10月 23 12:04 ln2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ touch 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test$ ll 总用量 16 drwxrwxr-x 3 hc hc 4096 10月 23 12:57 ./ drwxrwxr-x 6 hc hc 4096 10月 19 18:22 ../ -rw-r--r-- 1 hc hc 0 10月 23 12:57 2018.log drwxrwxr-x 2 hc hc 4096 10月 18 17:42 .idea/ lrwxrwxrwx 1 hc hc 8 10月 23 12:00 link2018 -> 2018.log -rw-r--r-- 1 hc hc 11 10月 23 12:04 ln2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ vim 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat 2018.log 2018log日志 hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat link2018 2018log日志 hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat ln2018 我是log1 hc@hc-virtual-machine:~/PycharmProjects/my_test$
说明:
演示以下:
hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 ln2018 hc@hc-virtual-machine:~/PycharmProjects/my_test$ mkdir test hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 ln2018 test hc@hc-virtual-machine:~/PycharmProjects/my_test$ ln 2018.log test hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 ln2018 test hc@hc-virtual-machine:~/PycharmProjects/my_test$ cd test/ hc@hc-virtual-machine:~/PycharmProjects/my_test/test$ ls 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test/test$ vi 2018.log hc@hc-virtual-machine:~/PycharmProjects/my_test/test$ cat 2018.log 2018log日志,加1 hc@hc-virtual-machine:~/PycharmProjects/my_test/test$ cd .. hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 ln2018 test hc@hc-virtual-machine:~/PycharmProjects/my_test$ cat 2018.log 2018log日志,加1 hc@hc-virtual-machine:~/PycharmProjects/my_test$ ll 总用量 24 drwxrwxr-x 4 hc hc 4096 10月 23 13:31 ./ drwxrwxr-x 7 hc hc 4096 10月 23 13:30 ../ -rw-r--r-- 2 hc hc 19 10月 23 13:32 2018.log drwxrwxr-x 2 hc hc 4096 10月 18 17:42 .idea/ lrwxrwxrwx 1 hc hc 8 10月 23 12:00 link2018 -> 2018.log -rw-r--r-- 1 hc hc 11 10月 23 12:04 ln2018 drwxr-xr-x 2 hc hc 4096 10月 23 13:32 test/ hc@hc-virtual-machine:~/PycharmProjects/my_test$
说明:
在test目录中建立了2018.log的硬连接,修改test目录中的2018.log文件,同时也会同步到源文件
命令:
ln -sv 源目录 目标目录
演示以下:
hc@hc-virtual-machine:~/PycharmProjects$ ll 总用量 28 drwxrwxr-x 7 hc hc 4096 10月 23 13:30 ./ drwxr-xr-x 23 hc hc 4096 10月 23 13:32 ../ drwxr-xr-x 9 hc hc 4096 10月 22 15:25 FreshOnline/ drwxrwxr-x 6 hc hc 4096 10月 19 19:07 FreshOnline_env/ drwxrwxr-x 4 hc hc 4096 10月 23 13:31 my_test/ drwxrwxr-x 4 hc hc 4096 10月 23 11:52 py3_test/ drwxr-xr-x 2 hc hc 4096 10月 23 13:30 test/ hc@hc-virtual-machine:~/PycharmProjects$ ln -sv /home/hc/PycharmProjects/my_test /home/hc/PycharmProjects/test '/home/hc/PycharmProjects/test/my_test' -> '/home/hc/PycharmProjects/my_test' hc@hc-virtual-machine:~/PycharmProjects$ ll 总用量 28 drwxrwxr-x 7 hc hc 4096 10月 23 13:30 ./ drwxr-xr-x 23 hc hc 4096 10月 23 13:32 ../ drwxr-xr-x 9 hc hc 4096 10月 22 15:25 FreshOnline/ drwxrwxr-x 6 hc hc 4096 10月 19 19:07 FreshOnline_env/ drwxrwxr-x 4 hc hc 4096 10月 23 13:31 my_test/ drwxrwxr-x 4 hc hc 4096 10月 23 11:52 py3_test/ drwxr-xr-x 2 hc hc 4096 10月 23 13:38 test/ hc@hc-virtual-machine:~/PycharmProjects$ cd my_test/ hc@hc-virtual-machine:~/PycharmProjects/my_test$ ls 2018.log link2018 ln2018 test hc@hc-virtual-machine:~/PycharmProjects/my_test$ cd .. hc@hc-virtual-machine:~/PycharmProjects$ ls FreshOnline FreshOnline_env my_test py3_test test hc@hc-virtual-machine:~/PycharmProjects$ cd test/ hc@hc-virtual-machine:~/PycharmProjects/test$ ls my_test hc@hc-virtual-machine:~/PycharmProjects/test$ cd my_test hc@hc-virtual-machine:~/PycharmProjects/test/my_test$ ls 2018.log link2018 ln2018 test hc@hc-virtual-machine:~/PycharmProjects/test/my_test$ cd .. hc@hc-virtual-machine:~/PycharmProjects/test$ ls my_test hc@hc-virtual-machine:~/PycharmProjects/test$ ll 总用量 8 drwxr-xr-x 2 hc hc 4096 10月 23 13:38 ./ drwxrwxr-x 7 hc hc 4096 10月 23 13:30 ../ lrwxrwxrwx 1 hc hc 32 10月 23 13:38 my_test -> /home/hc/PycharmProjects/my_test/
说明: