Linux文件/文件夹建立软硬链接

2023-05-16

建立软连接:

sudo ln -s /home/spike/Downloads/redis/src/redis-server /usr/local/bin/redis-server        
// 源文件  链接到   目标文件   ,这两个文件目录都必须是全路径,不能包含相对路径

建立硬链接:

sudo ln /home/spike/Downloads/redis/src/redis-server /usr/local/bin/redis-server        
// 源文件  链接到   目标文件   ,这两个文件目录都必须是全路径,不能包含相对路径

参数用法:

	ln [选项]… [-T]源文件 链接名 (第一种格式)
	或:ln [选项]… 源文件 (第二种格式)
	或:ln [选项]… 源文件 … 目录 (第三种格式)
	或:ln [选项]… -t 源文件夹 链接名… (第四种格式)
	 	在第一种格式中,创建指定名称的链接且指向指定的源文件。
	  在第二种格式中,在当前目录创建指向源文件的链接。
	  在第三、四种格式中,在指定目录中创建指向源文件的链接。
	  默认创建硬链接,当使用–symbolic 时创建符号链接。
	  当创建硬链接时文件必须在同一个文件系统,并且不能对目录进行硬链接。符号链接		

可以指向任意的位置,选项说明:

–backup[=CONTROL] 为每个已存在的目标文件创建备份文件
-b 类似–backup,但不接受任何参数
-d, -F, –directory 创建指向目录的硬链接(只适用于超级用户,而且有不可预知的风险,慎用哦)
-f, –force 强行删除任何已存在的目标文件
-n, –no-dereference 如果目的地是一个已存在的链接至某目录的符号链接,会将该符号链接当作普通文件处理,先将该已存在的链接备份或删除
-i, –interactive 询问是否删除目的地文件
-s, –symbolic 创建符号链接而不是硬链接
-t, –target-directory=目录 在指定目录中创建链接
-T, –no-target-directory 将链接名当作普通文件(在对目录进行符号链接时要用到此选项)

举例:

1.对某个文件创建一个连接
  ln -s /tmp/abc.txt ~/
  此命令表示在家目录下创建与源文件同名的链接到/tmp/abc.txt符号连接
  ln -s /tmp/abc.txt ~/abc
  此命令表示在家目录下建立链接到/tmp/abc.txt 并且名字为abc的符号连接(前提是在家目录下没有abc这个目录)

2.对某个目录创建符号连接
  ln -sT /tmp ~/abc
  此命令表示在家目录下创建一个链接到/tmp目录的名字为abc的符号连接。
  ln -sT /tmp ~/
  此命令表示在家目录下创建一个与源文件夹同名的符号连接
 
3.对某个文件创建一个硬连接
  ln /tmp/abc.txt ~/
  此命令表示在家目录下创建与源文件同名的链接到/tmp/abc.txt硬链接
  ln /tmp/abc.txt ~/abc
  此命令表示在家目录下建立链接到/tmp/abc.txt 并且名字为abc的硬链接(前提是在家目录下没有abc这个目录)

附注:硬链接和符号链接

简而言之,符号链接相当于windows中的快捷方式,硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据.

下面是详细的介绍:
	硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和符号链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。

硬链接文件有两个限制:
	1、不允许给目录创建硬链接;
	2、只有在同一文件系统中的文件之间才能创建链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux文件/文件夹建立软硬链接 的相关文章

  • Linux Bash:将多个不同的文件移动到同一目录中

    作为一个相当新手的 Linux 用户 我似乎不知道如何做到这一点 我正在尝试将一个目录中的所有唯一文件移动到另一个目录中 例子 ls vehicle car txt bicycle txt airplane html train docx
  • -s 和 -p 如何改变读取命令?

    我正在尝试解释这段代码 搜索谷歌看看这些命令的含义 但没有运气 我把我对每一行 块对我意味着什么的解释 如果我错了 请纠正我 我是 unix 命令新手 代码 bin bash input 1st command line argument
  • 在 C/Linux 中显示图像的最简单方法是什么? [复制]

    这个问题在这里已经有答案了 我很习惯用 C 进行数值计算 但不擅长图形编程 我在 Linux gcc ubuntu 的命令行程序中有一个 Nx x Ny x 3 RGB 矩阵 我想弹出一个窗口 将其作为图像 做到这一点最简单的方法是什么 它
  • 获取第n行文本输出

    我有一个每次生成两行作为输出的脚本 我真的只对第二行感兴趣 此外 我只对第二行一对 之间出现的文本感兴趣 此外 在散列之间还使用另一个分隔符 A 如果我还可以分解以 A 分隔的文本的每个部分 那就太好了 请注意 A 是 SOH 特殊字符 可
  • 从 Linux EXTREME VPS 读取文件时出现文件未找到异常

    我正在使用 java 在 Linux EXTREME VPS 上存储图像 当我将其存储在服务器路径上时 我得到的是 var sentora hostdata campusguru public html resources images b
  • Socket IO 涉及磁盘 IO 吗?

    如果一个进程通过套接字向同一台机器上的另一个进程发送数据 传输过程中发生磁盘读 写的可能性有多大 似乎有一个套接字文件类型 如果有空闲内存 这些文件是否保证在内存中 不直接 TCP UDP 网络套接字 本地主机或 UNIX 域套接字将在内存
  • 有什么方法可以显示线程切换吗?

    请问有没有什么办法或者工具可以展示线程切换的过程 即可以知道在任何特定的时间 CPU被哪个线程占用 以及上下文切换的时间成本 谢谢 SystemTap 对于这种事情很有用 有一个罐装的例子sched switch stp http sour
  • pkg-config 无法在 ffmpeg 构建上找到库(linux)

    我正在尝试在 ubuntu 上为 android 构建 ffmpeg I ve cross compiled all the dependencies I need for my configuration I ve set up the
  • Titan 加载弹性搜索问题

    我使用以下代码来加载泰坦 TitanFactory Builder config TitanFactory build config set storage backend berkeleyje config set storage dir
  • shell脚本不通过crontab运行,手动运行正常

    我尝试导出我的路径和变量 但 crontab 仍然不会运行我的脚本 我确信我做错了什么 我有一个运行 jar 文件的 shell 脚本 这无法正常工作 阅读周围后 我发现这通常是由于 cron 通过其自己的 shell 实例运行而导致路径不
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 如何在linux上设置android SDK进行命令行开发?

    我正在尝试设置 android SDK 在 Linux Ubuntu 9 10 的命令行上开发一个简单的程序 我尝试过 eclipse 但它在 Ubuntu 上运行有问题 所以我放弃了 这是我到目前为止所做的 从下载 android sdk
  • 获取 Spotify 当前播放的曲目

    编辑 让我们尝试澄清这一切 我正在编写一个 python 脚本 我希望它告诉我 Spotify 当前正在播放的歌曲 我尝试寻找可以帮助我的库 但没有找到任何仍在维护和工作的库 我还浏览了 Spotify 的 Web API 但它没有提供任何
  • MariaDB 10 CentOS 7 移动数据目录的问题

    CentOS 7 和 MariaDB 10 的全新 最小 安装 我有一个额外安装的镜像卷 我想将其用于数据目录 当 my cnf mysqld 被注释掉时 启动顺序正常并正常完成 我已经复制了数据 sudo cp R p var lib m
  • 在shell脚本中将编码格式设置为java

    我有一个运行我的 Java 应用程序的 shell 脚本 现在我想使用 shell 脚本为我的 java 应用程序指定编码格式 UTF8 任何人都可以提供帮助 我使用的是 mac os Thanks Ganesh Try invoking
  • g++:找不到文件

    我最近一直在开发一个程序 该程序从 Java 程序编译并运行 C 程序 我已经让一切基本正常工作 或至少据我所知 但后来我注意到一些东西被打印到错误流中 cdog5000 srv3 java Xmx50m jar main2 jar Run
  • Directory.GetCurrentDirectory() 在 Linux 上不起作用?

    因此 我尝试创建一个需要读取名为 scripts 的子文件夹中的脚本的应用程序 我的代码有问题 string script Console ReadLine string path Directory GetCurrentDirectory
  • 我应该使用“| at now”还是与号(&)在后台运行脚本?

    我一直在查看有关在后台运行 php 脚本的答案 它们似乎以两种方式传播 有些人建议使用这个 或类似的东西 usr bin php command gt dev null 2 gt 1 其他建议使用 at 命令 echo usr bin ph
  • 如何从文本文件中逐行读取并按字符分割行? [复制]

    这个问题在这里已经有答案了 我正在写一个 Bash 脚本 我的问题是我想从文本文件中逐行读取并按字符分割行 我想要纯 Bash 代码 假设我在文本文件中有这个 格式 姓名 用户名 代码 John Doe johnDoe 534092 Joh
  • 使用 mv 进行三点目录遍历[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如果执行以下命令 文件会去哪里 mv

随机推荐