How to create a link in Linux

2024-04-10 00:48
文章标签 linux link create

本文主要是介绍How to create a link in Linux,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

查漏补缺旧知识:

How to create a link in Linux

Updated: 04/26/2017 by Computer Hope

In your Linux file system, a link is a connection between a file name and the actual data on the disk. There are two main types of links that can be created: "hard" links, and "soft" or symbolic links. Hard links are low-level links which the system uses to create elements of the file system itself, such as files and directories.

Users typically do not want to create or modify hard links themselves, but symbolic links are a useful tool for any Linux user. A symbolic link is a special file that points to another file or directory, which is called the target. Once created, a symbolic link can be treated as if it is the target file, even if it is has a different name and is located in another directory. Multiple symbolic links can even be created to the same target file, allowing the target to be accessed by multiple names.

The symbolic link is a file in its own right, but it does not contain a copy of the target file's data. It is similar to a shortcut in Microsoft Windows: if you delete a symbolic link, the target is unaffected. Also, if the target of a symbolic link is deleted, moved, or renamed, the symbolic link is not updated. When this happens, the symbolic link is called "broken" or "orphaned", and will no longer function as a link.

How to create symbolic links using a file manager

One easy way to create a symbolic link from within the X Windows GUI is with your file manager. Different Linux distributions use different file managers, but the process is similar. Locate a target file in your file manager GUI, highlight it by clicking on it once, and select the option "create a link." This option is usually found under the Edit menu, or in the context menu that appears when you right-click the highlighted file.

Creating symbolic links with a Linux file manager

In the example shown above, using the Thunar file manager, we have highlighted the file myfile.txt, then selected Make Link... in the Edit menu. After completed a new symbolic link called link to myfile.txt is created. This link can be renamed or moved to another location, and it will always point to our target (unless the target is later moved or deleted, in which case the link will become orphaned).

How to create symbolic links from the command line

The command line is a powerful tool in Linux because it gives you greater control over your commands. (For more information about the command line, and how to access it from within Linux, see our Linux and Unix shell tutorial).

You can create symbolic links using the ln command's -s option. The general syntax for creating a symbolic link is:

 ln -s target linkname

For instance, if we have a file in our working directory called myfile.txt, and we want to create a symbolic link in the same directory called mylink, we could use the command:

 ln -s myfile.txt mylink

Let's see what this will look like on the command line. Here, we have opened a terminal session that places us at our shell's command prompt. We are logged in a system named myhost as a user named user, and our working directory is a folder in our home directory called myfolder:

First, let's use ls with the -l option to produce a long list of all the files in our directory:

output of command: ls -l

We see our file, myfile.txt, which is the only file in the directory. ("total 4" refers to how many blocks on the disk are used by the files listed, not the total number of files).

Let's use the cat command to view the contents of myfile.txt:

output of command: cat myfile.txt

Now, let's create a symbolic link to mylink.txt called mylink using the ln -s command:

ln -s myfile.txt mylink

It seems like nothing happened, but this means it worked as expected. If there was an error, or if an unexpected condition was encountered, we would receive a notification.

Now, if we do another ls -l, we see two files — our target and our link:

output of command: ls -l, displaying link and target

One of the benefits of doing a long listing with "-l" is that we see extra information in addition to the file name. Notice the "l" at the beginning of the line containing our link name, indicating that the file is a symbolic link. Also, notice that after mylink is the "->" symbol, followed by the name of the target. In our above example the color blue; most shells, by default, are configured to display certain file types in different colors, but your terminal might show different colors or none at all.

Now let's use our symbolic link. If we run cat on it, it displays the contents of myfile.txt:

output of cat command

We can rename our link with mv, and it still points to the same target:

Renamed symbolic links still function properly.

But what happens if we move our link somewhere else? In this case, our link will break. We can see this by making a new directory with mkdir, and moving the link into the new directory with mv:

Moving the link to another location breaks the link, because the link did not specify an absolute path

You can see that when we view the contents of directory newfolder with ls -l, our link is highlighted in red, indicating that it points to a file that is not there. And if we try to cat the contents of the link, the shell informs us that the file does not exist. This error occurs because the link points to "myfile.txt" with no other path information. Therefore, the operating system will always look for myfile.txt in whatever directory the link happens to be in at the moment.

Let's start over by removing newfolder and its contents using the command rm -r:

starting over

This time, let's create the symbolic link using the absolute path to myfile.txt. Let's double check the name of our working directory with pwd:

output of command "pwd"

Our working directory is /home/user/myfolder, so let's include this in the target name when we create the link:

Creating a symbolic link using an absolute path in the target name.

As you can see from the output of ls -l, our link now points to the file /home/user/myfolder/myfile.txt. With this path information, we can move the link to another location, and it will still point to our target:

Our symbolic link, which points to an absolute path name, works even when moved to a new location.

Tip: Your bash shell keeps an environment variable called $PWD that always stores the value of your working directory. You can use this variable to insert the full path before your target name, as long as the target is in your working directory. We can view the value of $PWD using the echo command:

Checking the value of the $PWD environment variable

This text is inserted if we use $PWD as part of a command. It is a good idea to enclose it in quotes as "$PWD" in case the directory name has any spaces. The quotes make sure the shell knows they are part of the pathname and not command separators.

Here is our command, and a directory listing to show that it worked:

Using the $PWD environment variable to create a symbolic link.

Notice that we also put a slash ("/") directly between "$PWD" and myfile.txt to complete the full path name.

Additional information

  • How do I get into the command line shell?
  • ln command description, syntax, options, and examples



转自https://www.computerhope.com/issues/ch001638.html



这篇关于How to create a link in Linux的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/889663

相关文章

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

Linux下屏幕亮度的调节方式

《Linux下屏幕亮度的调节方式》文章介绍了Linux下屏幕亮度调节的几种方法,包括图形界面、手动调节(使用ACPI内核模块)和外接显示屏调节,以及自动调节软件(CaliseRedshift和Reds... 目录1 概述2 手动调节http://www.chinasem.cn2.1 手动屏幕调节2.2 外接显

Linux(centos7)虚拟机没有IP问题及解决方案

《Linux(centos7)虚拟机没有IP问题及解决方案》文章介绍了在CentOS7中配置虚拟机网络并使用Xshell连接虚拟机的步骤,首先,检查并配置网卡ens33的ONBOOT属性为yes,然后... 目录输入查看ZFhrxIP命令:ip addr查看,没有虚拟机IP修改ens33配置文件重启网络Xh

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的