前言

最近开始使用MacBook工作,在安装git的时候得到了可以把"symlink"放在桌面的提示,就想看一下什么是symlink,发现中文的文档基本都是机翻和转帖,翻译的也是驴唇不对马嘴的,我就找到这篇文章并翻译了一下,希望能给想了解symlink的同学省点自己找的时间。

macOS上的符号链接Symlink是什么,以及该怎么使用

符号链接(Symbolic links),也被称为Symlinks,是一类特殊的文件,指向系统上的其他文件或者目录,可以认为是macOS上的一种比较先进的别名(aliase)。

符号链接和别名很相像,除了符号链接可以在每个应用内生效——包括Terminal。当用普通的别名无法使预期的功能生效时,符号链接可能会很有用。在macOS上,用户无法在访达(Finder)中创建符号链接,但是可以在Terminal中使用 ln 命令来创建。

macOS上的符号链接的工作方式和在Linux上很像,因为这两个都是类unix操作系统(Unix-like),在windows上符号链接工作的方式有些不一样。


什么是符号链接(Symbolic Links)?

在macOS中,我们可以通过Finder创建普通的别名(aliase),别名会指向文件或目录,但是起到的作用只是一个简单的快捷方式。

符号链接是一种能作用在系统中的每个应用上的更高级的别名类型,甚至包括Terminal中的命令行工具。一个指向app的符号链接和原始app文件或目录是等价的——即使它实际上只是一个链接。

举个例子,假设你有一个程序,这个程序需要将它的文件存储于/Library/Program目录,但是你想把这些文件存储在系统中的其他位置——比如说,想放在/Volumes/Program目录下。这时,你就可以将Program整个目录移动到/Volumes/Program这个位置,然后在/Library/Program创建一个符号链接,指向/Volumes/Program。程序会尝试访问/Library/Program,然后操作系统就会将访问重定向到/Volumes/Program。

这个操作(操作系统的重定向)对于macOS和用户使用的应用程序来说是完全透明的。 如果在Finder或任何其他程序中访问/Library/Program目录,会显示实际上在/Volumes/Program目录中的内容。

除了又被称为“软链接(soft links)”的符号链接,用户也可以创建“硬链接(hard links)”。符号链接,或者说软链接,指向的是文件系统中的路径。 举例来说,假设有一个符号链接(软链接)从/Users/example指向/opt/example,如果将/opt/example中的文件移走,/Users/example上的软链接就会损坏。但是,如果用户创建的是硬链接,这个硬链接实际上指向的是文件系统底层的inode节点。在使用硬链接的情况下,无论怎么移动/opt/example,链接还是会指向实际的文件。相对软链接,硬链接作用于操作系统的更底层。

一般来说,如果不确定该使用那种链接,就直接使用软链接即可(符号链接)。 硬链接受到的限制更多,比如,没有办法创建一个指向不同磁盘或者磁盘分区的硬链接,但是软链接可以做到这点。


用 ln 命令创建符号链接

我们需要在终端工具(Terminal,zsh等)中创建符号链接。

运行如下命令,可以指定符号链接是指向目录,还是指向文件

ln -s /path/to/original /path/to/link

-s 参数用来告诉 ln 命令,我们要创建一个符号链接。如果要创建一个硬连接,只要省略 -s 这个参数就可以了。除了真的有特殊的原因,尽量不要使用硬连接,因为大多数情况下软链接(符号链接)都是更好的选择。

举个例子,假设我想创建一个从我桌面上的文件夹指向Downloads下载文件夹的符号链接,可以使用如下命令

ln -s /Users/name/Downloads /Users/name/Desktop

执行这个命令之后,应该能看到Downloads文件夹出现在了桌面上,这实际上是一个软链接,但是mac系统会让它看上去像一个真实的目录。双击进入目录中看一眼,看上去有着Downloads目录下的所有文件——因为它确实如此,从Finder进入Downloads目录,和从桌面通过符号链接进入Downloads是相同的,他们只是指向相同的底层系统路径的不同视图(view)而已。

  • 注意,必须使用英文路径名,中文路径名如"/Users/name/下载","/Users/name/桌面"是不会起作用的!

  • 如果文件路径包含空格或者其他特殊字符,就需要用双引号括起来

ln -s "/Users/name/My Files" "/Users/name/My Link"
  • 一点一点敲键盘很麻烦,为了简化路径的输入,可以直接打开Finder,将目标文件或目录往Terminal里拖,Terminal会自动填充路径,同时也会自动加双引号。

  • 如果需要在一个当前用户没有权限访问的路径下创建符号链接,就需要在 ln 命令前加上 sudo 前缀

sudo ln -s /path/to/original /path/to/link
  • 另外,在比较新的macOS系统中,因为系统完整性保护(System Integrity Protection Feature),用户默认不被允许向系统目录中写入,也就无法在系统目录中创建链接,除非改变底层固件选项。用户可以关闭系统完整性保护,但是建议尽量不要这么做。

如何删除符号链接

就像删除其他文件一样,右键-垃圾桶,或者直接command+delete。

同时,也可以使用 rm 命令,和使用这个命令删除其他文件一样

rm /path/to/link

如何用图形化工具创建符号链接

在Finder中可以创建别名(aliase),但是别名的工作方式和符号链接不一样。别名就和windows中的快捷方式一样,并不是真正的、透明的符号链接。

要在Finder中创建符号链接,需要使用第三方工具或脚本。推荐使用开源app SymbolicLinker ,使用此app,可以直接通过 右键-服务(Services)-创建符号链接(Make Symbolic Link)来创建一个软链接。

文章引用来源:How to Create and Use Symbolic Links (aka Symlinks) on a Mac

macOS上的符号链接Symlink是什么,以及该怎么使用相关推荐

  1. 在 macOS 上安装 OpenCV

    使用源码进行编译,在macOS 上安装 OpenCV 4 . macOS 版本:macOS Big Sur 11.4. 虽然可以参考这篇文章,使用 pip 快速的安装,但使用 pip 安装的 Open ...

  2. 在 macOS 上安装 AWS CLI

    在 macOS 上安装 AWS CLI 在 macOS 上安装 AWS Command Line Interface (AWS CLI) 的推荐方法是使用捆绑安装程序.捆绑安装程序包含所有依赖项,并可 ...

  3. 在macos上基于python2.7安装PyQt5

    在macos上基于python2.7安装PyQt5 在python3上面安装PyQt5是十分简单的,可是,在python2.7上安装这个东西,着实让人折腾了一把.要总结一下,年纪大了,记性不好. 首先 ...

  4. 如何在iOS或macOS上检查活动的Internet连接?

    我想检查一下我是否在使用Cocoa Touch库的iOS上或在使用Cocoa库的macOS上建立了Internet连接. 我想出了一种使用NSURL做到这一点的方法. 我这样做的方式似乎有点不可靠(因 ...

  5. qtiplot编译失败linux,在macOS上安装 qtiplot 免费版

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 最近更新时间:2019-10-04 一.简介 众所周知,对于广大科研狗来说,origin是一款不可多得的使用软件,但or ...

  6. macos自带java_在 MacOS 上安装 Java - Java 入门教程

    本小节我们将介绍如何在 MacOS 平台安装 Java . 如果你想在其他平台安装 Java,请查看对应平台的安装教程: 1. 下载安装包 我们首先打开 Oracle 官网的 JDK 下载地址,找到 ...

  7. macOS上实现Qt应用程序做文件关联打开

    一.背景介绍 用Qt开发的应用程序要实现文件关联,双击时用默认关联的程序打开文件,在Windows上这个功能非常容易实现.Windows应用程序在安装的时候可以在注册表中写入相关的键值对.打开文件的时 ...

  8. macos 全局快捷键 打开 iterm_在 macOS 上实用的十大软件!你get了吗?

    在 macOS 里面有什么实用的软件?在这里分享一下我在我的 MacBook Pro上日常使用特别多的软件. MacBook型号:MacBook Pro 2018 款 15 英寸 系统版本:macOS ...

  9. OpenGL之macOS上的环境搭建

    一.基本简介 OpenGL 是什么? OpenGL(全写 Open Graphics Library)是个定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可), ...

最新文章

  1. 视频: 猫和老鼠真实版
  2. 【神仙题】【P4885】 灭顶之灾
  3. 中国计算机考试区别及求职的相关思考
  4. idea messages中文乱码_2019.2版本IDEA控制台中文乱码尝试了很多方法都不行
  5. iOS 获取屏幕的属性和宽度
  6. php mess,Mess.php
  7. Sql Server 分区之后增加新的分区
  8. 含泪整理最优质策略塔防游戏源代码素材,你想要的这里都有
  9. Win10家庭版将中文用户名修改为英文用户名
  10. Single Round Match 506 Round 1 - Division I, Level Two SlimeXGrandSlimeAuto
  11. 计算机软件著作权源码要求,计算机软件著作权登记源代码-20210527121530.docx-原创力文档...
  12. php 字符串截取去掉最后一个字符,php去掉字符串的最后一个字符附substr()的用法...
  13. 19-你知道哪几种锁?分别有什么特点?
  14. 待飞的蒲公英---拔剑四顾心茫然
  15. css3霓虹灯文字效果以及文字背景动画
  16. Deflate算法解压器实现图解
  17. linux内核安装webkit,Ubuntu下安装基于WebKit 的网页浏览器Midori
  18. HDOJ练习第1000题
  19. Invalid UTF-8 middle byte 0xcf
  20. Linux 服务器远程控制三剑客Telnet、SSH 和VNC 之 Telnet

热门文章

  1. sql server数据库 18456错误修复
  2. speedoffice使用方法-word怎么添加边框
  3. 联想微型计算机c365,联想C365一体机如何用u盘重装系统
  4. 如何使用CSK6的PSRAM内存资源
  5. 1.DDD中的领域对象、值对象、聚合根
  6. 深陷退款门危机,淘集集想跟拼多多抢五环外的野望破灭?
  7. 家装灯线走线图_家装吊顶筒灯电线走法设计图 4款客厅天花吊顶龙骨筒灯顶线布置图...
  8. python爬取网易云音乐热评_python爬取网易云音乐评论
  9. [三分]求凹凸函数最值
  10. 幼儿园计算机基础知识培训总结,幼儿园园本培训工作总结