AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 428407
Accepted
Yves
Yves
Asked: 2018-03-06 19:31:30 +0800 CST2018-03-06 19:31:30 +0800 CST 2018-03-06 19:31:30 +0800 CST

为什么/usr中有很多硬链接[关闭]

  • 772
关闭。这个问题是基于意见的。它目前不接受答案。

想改进这个问题?更新问题,以便可以通过编辑这篇文章用事实和引用来回答它。

4年前关闭。

改进这个问题

我已经阅读了这个链接,现在我只是想知道为什么里面有很多硬链接/usr。

例如,在我的 Ubuntu 服务器中,安装了git,我在这里找到了命令git:/usr/bin/git. 我执行ls -l /usr/bin/git并得到如下输出:

-rwxr-xr-x 119 root root 11178080 Mar  6 03:48 /usr/bin/git

如您所见,有 119 个硬链接...

为什么这里需要119个硬链接?通俗点说,我们有了环境变量PATH,并且已经放入了可执行文件/usr/bin/,另外,出于兼容性的原因,我们可以创建软链接,我们可以随时随地执行,为什么会有一些硬链接usr呢?

的部分输出find /usr -samefile /usr/bin/git:

/usr/libexec/git-core/git-prune
/usr/libexec/git-core/git-diff-index
/usr/libexec/git-core/git-ls-remote
/usr/libexec/git-core/git-merge-recursive
/usr/libexec/git-core/git-push
/usr/libexec/git-core/git-update-index
/usr/libexec/git-core/git-check-mailmap
/usr/libexec/git-core/git-interpret-trailers
/usr/libexec/git-core/git-archive
/usr/libexec/git-core/git-upload-archive
/usr/libexec/git-core/git-rev-parse
/usr/libexec/git-core/git-ls-files
/usr/libexec/git-core/git-am

的所有硬链接/usr/bin/git都在/usr/libexec/git-core/.

hard-link
  • 2 2 个回答
  • 281 Views

2 个回答

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-03-06T22:09:55+08:002018-03-06T22:09:55+08:00

    这些git链接与 PATH 无关,它们是一种节省空间的措施。

    一般来说,在大多数情况下,对于“已安装”的软件,硬链接在可能的情况下比符号链接更可取,因为它们更有效且更有弹性。您会看到很多/usr/bin带有硬链接的二进制文件,包括perl,这很好。

    git软件包确实倾向于使用符号链接,因为涉及大量链接以及可能导致. 如果您git从源代码安装,它会尽可能默认使用硬链接;您可以通过添加NO_INSTALL_HARDLINKS=1到make install命令的参数来禁用它。

    • 4
  2. telcoM
    2018-03-06T22:20:01+08:002018-03-06T22:20:01+08:00

    通常,具有多个相关函数的单个二进制文件具有多个硬链接,以便让每个函数都有一个独特的、令人难忘的命令,并且仍然不重复所有这些函数可能具有的任何共同代码。

    使单个二进制文件的各种函数显示为不同的命令也是使函数 TAB 可完成的一种简单的、独立于 shell 的方法:例如,在 中bash,如果您只记得某些命令的前几个字母,只需键入字母您记得并按两次 TAB:您将获得所有带有这些首字母的命令的列表。

    符号链接也可以用于此,但如果所有链接的命令都在同一个目录中,硬链接是最节省空间的解决方案:而不是复制整个文件,或者只使用一个额外的 inode,如符号链接可能会(在某些文件系统上),硬链接只占用一个目录条目。

    如果你愿意,你也可以轻松地让脚本表现得像这样:

    #!/bin/sh
    
    case "${0##*/}" in
        name1)
            # do something
            ;;
        name2)
            # do something else
            ;;
        *)
            # output an error message, or perhaps usage instructions
            ;;
    esac
    
    • 3

相关问题

  • ln 中带有硬链接和软链接的路径

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve