• Linux 软链接 和 硬链接


    软链接 ln -s a.c b.c
    可以看到执行完这条命令后,新生成一个文件b.c且查看文件类型为lrwxrwxrwx 1 lj lj 3 6月 24 22:01 b.c -> a.c 开头的l表示其为链接文件
    查看b.c中内容cat b.c ,和a.c中内容一模一样

    lj@ubuntu ~ % ls                                                        [0]
    a.c    Desktop    Downloads       install_zsh.sh  Pictures  Templates
    a.out  Documents  install_vim.sh  Music           Public    Videos
    lj@ubuntu ~ % ln -s a.c b.c                                             [0]
    lj@ubuntu ~ % ls                                                        [0]
    a.c    b.c      Documents  install_vim.sh  Music     Public     Videos
    a.out  Desktop  Downloads  install_zsh.sh  Pictures  Templates
    lj@ubuntu ~ % ls -l                                                     [0]
    总用量 72
    -rw-rw-r-- 1 lj lj   328 623 23:02 a.c
    -rwxrwxr-x 1 lj lj 16696 623 22:54 a.out
    lrwxrwxrwx 1 lj lj     3 624 22:01 b.c -> a.c
    drwxr-xr-x 2 lj lj  4096 621 20:52 Desktop
    drwxr-xr-x 2 lj lj  4096 428 00:43 Documents
    drwxr-xr-x 2 lj lj  4096 428 02:59 Downloads
    -rw-rw-r-- 1 lj lj  1837 420 02:34 install_vim.sh
    -rw-rw-r-- 1 lj lj  8457 422 14:43 install_zsh.sh
    drwxr-xr-x 2 lj lj  4096 428 00:43 Music
    drwxr-xr-x 2 lj lj  4096 428 00:43 Pictures
    drwxr-xr-x 2 lj lj  4096 428 00:43 Public
    drwxr-xr-x 2 lj lj  4096 428 00:43 Templates
    drwxr-xr-x 2 lj lj  4096 428 00:43 Videos
    lj@ubuntu ~ % cat b.c                                                   [0]
    /*************************************************************************
    	> File Name: a.c
    	> Author: 
    	> Mail: 
    	> Created Time: 2022年06月21日 星期二 20时56分54秒
     ************************************************************************/
    
    #include<stdio.h>
    
    int main(){
        printf("helloworld!\n");
        return 0;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    硬链接 ln a.c c.c
    执行完该语句后新生成一个文件c.c,查看文件类型时发现和a.c一模一样。可以看作是对a.c的复制。其内容也和a.c中相同。

    lj@ubuntu ~ % ln a.c c.c                                                [0]
    lj@ubuntu ~ % ls                                                        [0]
    a.c    b.c  Desktop    Downloads       install_zsh.sh  Pictures  Templates
    a.out  c.c  Documents  install_vim.sh  Music           Public    Videos
    lj@ubuntu ~ % ls -l                                                     [0]
    总用量 76
    -rw-rw-r-- 2 lj lj   328 623 23:02 a.c
    -rwxrwxr-x 1 lj lj 16696 623 22:54 a.out
    lrwxrwxrwx 1 lj lj     3 624 22:01 b.c -> a.c
    -rw-rw-r-- 2 lj lj   328 623 23:02 c.c
    drwxr-xr-x 2 lj lj  4096 621 20:52 Desktop
    drwxr-xr-x 2 lj lj  4096 428 00:43 Documents
    drwxr-xr-x 2 lj lj  4096 428 02:59 Downloads
    -rw-rw-r-- 1 lj lj  1837 420 02:34 install_vim.sh
    -rw-rw-r-- 1 lj lj  8457 422 14:43 install_zsh.sh
    drwxr-xr-x 2 lj lj  4096 428 00:43 Music
    drwxr-xr-x 2 lj lj  4096 428 00:43 Pictures
    drwxr-xr-x 2 lj lj  4096 428 00:43 Public
    drwxr-xr-x 2 lj lj  4096 428 00:43 Templates
    drwxr-xr-x 2 lj lj  4096 428 00:43 Videos
    lj@ubuntu ~ % cat c.c                                                   [0]
    /*************************************************************************
    	> File Name: a.c
    	> Author: 
    	> Mail: 
    	> Created Time: 2022年06月21日 星期二 20时56分54秒
     ************************************************************************/
    
    #include<stdio.h>
    
    int main(){
        printf("helloworld!\n");
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    在这里插入图片描述
    更改a.c文件
    在这里插入图片描述
    查看b.c
    在这里插入图片描述

    查看c.c
    在这里插入图片描述

    lj@ubuntu ~ % vim a.c                                                   [0]
    lj@ubuntu ~ % cat b.c                                                   [0]
    /*************************************************************************
    	> File Name: a.c
    	> Author: 
    	> Mail: 
    	> Created Time: 2022年06月21日 星期二 20时56分54秒
     ************************************************************************/
    
    #include<stdio.h>
    
    int main(){
        printf("helloworld!\n");
        printf("现在对源文件进行更改!\n");
        return 0;
    }
    lj@ubuntu ~ % cat c.c                                                   [0]
    /*************************************************************************
    	> File Name: a.c
    	> Author: 
    	> Mail: 
    	> Created Time: 2022年06月21日 星期二 20时56分54秒
     ************************************************************************/
    
    #include<stdio.h>
    
    int main(){
        printf("helloworld!\n");
        printf("现在对源文件进行更改!\n");
        return 0;
    }
    lj@ubuntu ~ %                            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    现在,先将a.c更改回来后再删除a.c文件

    lj@ubuntu ~ % rm a.c                                                    [0]
    lj@ubuntu ~ % ls                                                        [0]
    a.out  c.c      Documents  install_vim.sh  Music     Public     Videos
    b.c    Desktop  Downloads  install_zsh.sh  Pictures  Templates
    lj@ubuntu ~ % ls -l                                                     [0]
    总用量 72
    -rwxrwxr-x 1 lj lj 16696 623 22:54 a.out
    lrwxrwxrwx 1 lj lj     3 624 22:01 b.c -> a.c
    -rw-rw-r-- 1 lj lj   328 623 23:02 c.c
    drwxr-xr-x 2 lj lj  4096 621 20:52 Desktop
    drwxr-xr-x 2 lj lj  4096 428 00:43 Documents
    drwxr-xr-x 2 lj lj  4096 428 02:59 Downloads
    -rw-rw-r-- 1 lj lj  1837 420 02:34 install_vim.sh
    -rw-rw-r-- 1 lj lj  8457 422 14:43 install_zsh.sh
    drwxr-xr-x 2 lj lj  4096 428 00:43 Music
    drwxr-xr-x 2 lj lj  4096 428 00:43 Pictures
    drwxr-xr-x 2 lj lj  4096 428 00:43 Public
    drwxr-xr-x 2 lj lj  4096 428 00:43 Templates
    drwxr-xr-x 2 lj lj  4096 428 00:43 Videos
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述
    可以发现b.c标红
    链接文件b.c->a.c同样标红
    再次查看b.cc.c中内容
    发现b.c执行错误,cat: b.c: 没有那个文件或目录
    c.c中内容可以正常查看

    lj@ubuntu ~ % cat b.c                                                   [0]
    cat: b.c: 没有那个文件或目录
    lj@ubuntu ~ % cat c.c                                                   [1]
    /*************************************************************************
    	> File Name: a.c
    	> Author: 
    	> Mail: 
    	> Created Time: 2022年06月21日 星期二 20时56分54秒
     ************************************************************************/
    
    #include<stdio.h>
    
    int main(){
        printf("helloworld!\n");
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    现在,将c.c更名为a.c(即恢复a.c文件)

    lj@ubuntu ~ % mv c.c a.c                                                [0]
    lj@ubuntu ~ % ls                                                        [0]
    a.c    b.c      Documents  install_vim.sh  Music     Public     Videos
    a.out  Desktop  Downloads  install_zsh.sh  Pictures  Templates
    lj@ubuntu ~ % ls -l                                                     [0]
    总用量 72
    -rw-rw-r-- 1 lj lj   328 623 23:02 a.c
    -rwxrwxr-x 1 lj lj 16696 623 22:54 a.out
    lrwxrwxrwx 1 lj lj     3 624 22:01 b.c -> a.c
    drwxr-xr-x 2 lj lj  4096 621 20:52 Desktop
    drwxr-xr-x 2 lj lj  4096 428 00:43 Documents
    drwxr-xr-x 2 lj lj  4096 428 02:59 Downloads
    -rw-rw-r-- 1 lj lj  1837 420 02:34 install_vim.sh
    -rw-rw-r-- 1 lj lj  8457 422 14:43 install_zsh.sh
    drwxr-xr-x 2 lj lj  4096 428 00:43 Music
    drwxr-xr-x 2 lj lj  4096 428 00:43 Pictures
    drwxr-xr-x 2 lj lj  4096 428 00:43 Public
    drwxr-xr-x 2 lj lj  4096 428 00:43 Templates
    drwxr-xr-x 2 lj lj  4096 428 00:43 Videos
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    可以发现 a.c b.c不再标红
    在这里插入图片描述
    再次查看b.c中内容,这次执行成功

    lj@ubuntu ~ % cat b.c                                                   [0]
    /*************************************************************************
    	> File Name: a.c
    	> Author: 
    	> Mail: 
    	> Created Time: 2022年06月21日 星期二 20时56分54秒
     ************************************************************************/
    
    #include<stdio.h>
    
    int main(){
        printf("helloworld!\n");
        return 0;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    总结:

    1. 软链接语句为ln -s 源文件 软链接文件
      硬链接语句为 ln 源文件 硬链接文件
    2. 软链接文件相当于指针,指向源文件,文件大小一般较小
      硬链接文件相当于复制,文件大小和源文件相同
    3. 软链接指向的源文件被删除后,指针失效,软链接文件内容无法查看
      硬链接被创造的源文件被删除后,对硬链接文件无影响,可以正常使用
    4. 若软链接文件指向的源文件被恢复,软链接文件内容同样恢复
    5. 若源文件发生变动,软链接和硬链接文件同步更新
  • 相关阅读:
    Mybatis中${}和#{}的区别
    中标麒麟Linux64平台上QT5.6.3源码编译安装
    音视频中文件的复用和解复用
    java基于SpringBoot+Vue+nodejs的协同过滤算法商品推荐系统 element
    使用“纯”Servlet做一个单表的CRUD操作
    【gerrit】【技巧】如何获取gerrit库入库统计信息之二——gerrit搜索框(search bar)
    2023年2月份CKA考试历程
    C/C++编程刷题分享—二分法查找
    OA产品选型的指导原则
    C++11 initializer_list 轻量级初始化列表的使用场景(让自定义类可以用初始化列表的形式来实例化对象)
  • 原文地址:https://blog.csdn.net/qq_40713201/article/details/125453010