Linux(Centos 7.6)命令详解:ln

1.命令作用

默认创建硬链接,使用--symbolic创建符号链接/软链接(Create hard links by default, symbolic links with --symbolic.)。

默认情况下,创建每个链接目标(新链接的名称)不应该已经存在(By default, each destination (name of new link) should not already exist.)。

创建硬链接时,每个TARGET(创建链接的实际文件)必须存在(When creating hard links, each TARGET must exist.)。

符号链接可以保存任意文本(Symbolic links can hold arbitrary text;)。

注意:

  • 链接包括2种,分别是硬链接和软连接,软链接又叫符号链接
  • 硬链接文件ls -l查看无特殊标识,软连接ls -l查看时l开头的文件
  • 硬链接不能给目录创建链接,仅软链接可用给目录创建链接
  • 硬链接文件和源文件会相互同步更新内容,且硬链接是以副本方式存在,但不占实际空间

2.命令语法

Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
       or:  ln [OPTION]... TARGET                               (2nd form)
       or:  ln [OPTION]... TARGET... DIRECTORY       (3rd form)
       or:  ln [OPTION]... -t DIRECTORY TARGET...    (4th form)

1st form:创建一个到TARGET的链接,名称为LINK_NAME(常用的语法)

2st form:在当前目录中创建一个到TARGET的链接(TARGET在当前目录中无相同的文件目录名)

3st form and 4st form:在DIRECTORY中创建指向每个TARGET的链接(作用不明显)

3.参数详解

OPTION:

  • --backup[=CONTROL],对每个现有的目标文件(新链接名称)进行备份,CONTROL可设置如下参数
    • none, off,永远不要做备份(即使提供了--backup参数)
    • numbered, t,进行编号备份
    • existing, nil,如果存在编号备份,则编号,否则简单
    • simple, never,总是做简单的备份
    • 备份名后缀,默认为'~'符号,除非使用--suffix进行设置(实际测试无明显效果)
  • -b,类似于--backup,但-b不接受任何参数,即只能进行简单备份
  • -d, -F, --directory,允许超级用户尝试硬链接目录(注意:由于系统限制,可能会失败,即使对于超级用户也是如此)
  • -f, --force,删除现有目标文件(新链接的名称)
  • -i, --interactive,提示是否删除目的地(新链接的名称),-f是直接删除,-i是提升
  • -L, --logical,解引用的目标是符号链接,创建符号链接时指定链接的目标文件或目录的路径(无明显效果)
  • -n, --no-dereference,如果LINK_NAME是指向目录的符号链接,则将其视为普通文件(无明显效果)
  • -P, --physical,将硬链接直接设置为符号链接(无明显效果)
  • -r, --relative,创建相对于链接位置的符号链接,即就算指定全路径创建符号链接,创建好后的符号链接显示是相对路径
  • -s, --symbolic,用符号链接代替硬链接,即创建一个符号链接(软链接)
  • -S, --suffix=SUFFIX,与--backup命令一起使用时,指定/覆盖通常的备份名后缀(无明显效果)
  • -t, --target-directory=DIRECTORY,指定在其中创建链接的DIRECTORY(无明显效果)
  • -T, --no-target-directory,始终将LINK_NAME视为普通文件
  • -v, --verbose,打印链接文件及其链接源文件对应的名称,默认情况下不打印任何内容

4.常用用例

4.1.1st from(ln [OPTION]... [-T] TARGET LINK_NAME)

4.1.1.创建硬链接

[root@node2 Desktop]# ll
total 8
-rw-r--r--. 1 root root  23 Feb 22 20:09 file1.txt
-rw-r--r--. 1 root root 202 Feb 22 14:22 file2.txt
[root@node2 Desktop]# cat file1.txt 
root
bin
daemon
adm
lp
[root@node2 Desktop]# ln file1.txt hln_file1.txt  ## 硬链接文件创建不需要参数
[root@node2 Desktop]# ll
total 12
-rw-r--r--. 2 root root  23 Feb 22 20:09 file1.txt
-rw-r--r--. 1 root root 202 Feb 22 14:22 file2.txt
-rw-r--r--. 2 root root  23 Feb 22 20:09 hln_file1.txt
[root@node2 Desktop]# echo 'aaaaa' > file1.txt   ## 更新硬链接源文件,硬链接文件也更新
[root@node2 Desktop]# cat file1.txt 
aaaaa
[root@node2 Desktop]# cat hln_file1.txt 
aaaaa
[root@node2 Desktop]# echo 'bbbbb' >> hln_file1.txt ## 更新硬链接文件,硬链接源文件也更新
[root@node2 Desktop]# cat file1.txt 
aaaaa
bbbbb
[root@node2 Desktop]# cat hln_file1.txt 
aaaaa
bbbbb
[root@node2 Desktop]# ll   ## 硬链接文件和硬链接源文件大小一致
total 12
-rw-r--r--. 2 root root  23 Feb 22 20:09 file1.txt
-rw-r--r--. 1 root root 202 Feb 22 14:22 file2.txt
-rw-r--r--. 2 root root  23 Feb 22 20:09 hln_file1.txt
[root@node2 Desktop]#
[root@node2 Desktop]# rm -rf file1.txt 
[root@node2 Desktop]# cat hln_file1.txt  ##  删除硬链接源文件,硬链接文件可正常访问
aaaaa
bbbbb
[root@node2 Desktop]#
[root@node2 Desktop]#
[root@node2 Desktop]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  7.5G   11G  42% /
devtmpfs        471M     0  471M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  8.6M  478M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda1       297M  147M  151M  50% /boot
tmpfs            98M  4.0K   98M   1% /run/user/42
tmpfs            98M   28K   98M   1% /run/user/0
[root@node2 Desktop]# ll -h
total 2.1G
-rw-r--r--. 1 root root 1.7G Feb 22 20:51 file5.txt
[root@node2 Desktop]#
[root@node2 Desktop]# ln file5.txt hln_file5.txt    ## 创建硬链接,ll查看是1.7G,但是总可用空间没有变化,前后都是 11 GB
[root@node2 Desktop]# ll -h 
total 4.1G
-rw-r--r--. 2 root root 1.7G Feb 22 20:51 file5.txt
-rw-r--r--. 2 root root 1.7G Feb 22 20:51 hln_file5.txt
[root@node2 Desktop]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  7.5G   11G  42% /
devtmpfs        471M     0  471M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  8.6M  478M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda1       297M  147M  151M  50% /boot
tmpfs            98M  4.0K   98M   1% /run/user/42
tmpfs            98M   28K   98M   1% /run/user/0
[root@node2 Desktop]# 

说明:

  • 硬链接不需要任何参数,
  • ll(ls -l)查看硬链接文件与普通文件没有任何区别
  • 更新硬链接文件或者链接源文件,另外一个文件都会更新
  • 硬链接文件和链接源文件大小一致,以副本方式存在,但不占用实际空间
  • 删除硬链接源文件,硬链接文件内容也可正常访问

4.1.2.创建软链接

[root@node2 Desktop]# ll
total 8
-rw-r--r--. 1 root root 202 Feb 22 14:22 file2.txt
-rw-r--r--. 1 root root  12 Feb 22 20:10 hln_file1.txt
[root@node2 Desktop]# ln -s file2.txt sln_file2.txt  ## 软链接需要指定-s参数
[root@node2 Desktop]# ll                             ## 软连接和软链接源文件大小不一样
total 8
-rw-r--r--. 1 root root 202 Feb 22 14:22 file2.txt
-rw-r--r--. 1 root root  12 Feb 22 20:10 hln_file1.txt
lrwxrwxrwx. 1 root root   9 Feb 22 20:18 sln_file2.txt -> file2.txt
[root@node2 Desktop]# 
[root@node2 Desktop]# echo 'aaaaa' > sln_file2.txt  ## 更新软连接文件,软连接源文件也更新
[root@node2 Desktop]# cat file2.txt 
aaaaa
[root@node2 Desktop]# cat sln_file2.txt 
aaaaa
[root@node2 Desktop]# echo 'bbbbb' >> file2.txt     ## 更新软连接源文件,软连接文件也更新
[root@node2 Desktop]# cat file2.txt 
aaaaa
bbbbb
[root@node2 Desktop]# cat sln_file2.txt 
aaaaa
bbbbb
[root@node2 Desktop]# 
[root@node2 Desktop]# ll
total 8
-rw-r--r--. 1 root root 12 Feb 22 20:20 file2.txt
-rw-r--r--. 1 root root 12 Feb 22 20:10 hln_file1.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:18 sln_file2.txt -> file2.txt
[root@node2 Desktop]# rm -rf file2.txt   ## 删除软链接源文件,软链接文件->后的原文件名称会闪烁,且软链接文件不能正常访问
[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 12 Feb 22 20:10 hln_file1.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:18 sln_file2.txt -> file2.txt
[root@node2 Desktop]# cat sln_file2.txt 
cat: sln_file2.txt: No such file or directory
[root@node2 Desktop]# 

说明:

  • 软链接需要添加-s参数,
  • ll(ls -l)查看软链接文件与普通文件有区别,软连接以 l 开头
  • 更新软链接文件或者链接源文件,另外一个文件都会更新
  • 硬链接文件和链接源文件大小不一致,不管怎么更新文件内容软链接大小都不变
  • 删除软链接源文件,软链接文件内容不可正常访问
  • 软链接实质类似Windows的快捷键

4.1.3.链接存在删除链接

[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 32 Feb 22 20:28 file3.txt
[root@node2 Desktop]# ln -s file3.txt sln_file3.txt     ## 创建一个软链接
[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 32 Feb 22 20:28 file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:29 sln_file3.txt -> file3.txt
[root@node2 Desktop]# 
[root@node2 Desktop]# ln -s file3.txt sln_file3.txt     ## 创建一个已经存在的软连接,默认会报错
ln: failed to create symbolic link ‘sln_file3.txt’: File exists
[root@node2 Desktop]# ln -f -s file3.txt sln_file3.txt  ## 添加-f参数,创建一个已经存在的连接,会强制删除已经存在的文件,再创建链接文件
[root@node2 Desktop]# ll                                ## 可用看文件名称前时间,已经变化
total 4
-rw-r--r--. 1 root root 32 Feb 22 20:28 file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:30 sln_file3.txt -> file3.txt 
[root@node2 Desktop]# 
[root@node2 Desktop]# ln -i -s file3.txt sln_file3.txt  ## 添加-i参数,创建一个已经存在的连接,会有提示,输入y则删除重建,输入n则退出
ln: replace ‘sln_file3.txt’? y
[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 32 Feb 22 20:28 file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:37 sln_file3.txt -> file3.txt
[root@node2 Desktop]# 

4.1.4.链接存在备份链接

[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 32 Feb 22 20:28 file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:37 sln_file3.txt -> file3.txt
[root@node2 Desktop]# ln --backup=t -s file3.txt sln_file3.txt   ## 链接文件已经存在,使用--backup会备份链接文件,备份链接文件后缀为'~',t 意思是使用数值编号
[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 32 Feb 22 20:28 file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:39 sln_file3.txt -> file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:37 sln_file3.txt.~1~ -> file3.txt
[root@node2 Desktop]# ln --backup=t -s file3.txt sln_file3.txt 
[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 32 Feb 22 20:28 file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:39 sln_file3.txt -> file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:37 sln_file3.txt.~1~ -> file3.txt
lrwxrwxrwx. 1 root root  9 Feb 22 20:39 sln_file3.txt.~2~ -> file3.txt
[root@node2 Desktop]# 

4.2.2nd form(ln [OPTION]... TARGET)

[root@node2 Desktop]# ll
total 0
drwxr-xr-x. 2 root root 23 Feb 22 20:41 dir1
[root@node2 Desktop]# ll dir1/*
-rw-r--r--. 1 root root 32 Feb 22 20:41 dir1/file4.txt
[root@node2 Desktop]# ln -s dir1/file4.txt   ## 当前目录不存在file4.txt,则创建软链接的名称默认与源文件名称相同
[root@node2 Desktop]# ll
total 0
drwxr-xr-x. 2 root root 23 Feb 22 20:41 dir1
lrwxrwxrwx. 1 root root 14 Feb 22 20:42 file4.txt -> dir1/file4.txt
[root@node2 Desktop]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值