在bash中,是否有内置命令来获取相对文件路径的绝对路径?

菲利普

我可以使用外部命令realpath来获取文件的绝对路径:

realpath tmp/toto

退货

/home/john/tmp/toto

我可以使用bash内置的来获得相同的效果吗?

斯普雷蒂奇先生

Bash带有realpath可加载的扩展程序。由于bash-4.4应该默认安装,¹,因此您应该能够执行以下操作:

BASH_LOADABLES_PATH=${BASH_LOADABLES_PATH:-/usr/local/lib/bash:/usr/lib/bash}
enable -f realpath realpath
realpath ..
help realpath

一旦启用,每个可加载命令将成为“真正的”内置命令,而不会产生额外的fork / exec开销,并且能够操纵bash环境(如提供,例如mypid可加载)。

-f选项指定可加载扩展二进制文件的路径,如果它不在预期的位置,或者您的发行版未正确设置它,则需要将变量设置为BASH_LOADABLES_PATH包含扩展名的目录(或-f与指向扩展名的完整路径一起使用)。可加载)。如果设置正确,则不需要上面的第一行。

当编写更喜欢但不需要此类扩展的可移植脚本时,无论如何我都将使用包装器函数(类似于@Kusalananda的函数),以便它可以回退到外部(例如coreutilsreadlinkrealpath从中)。


  1. 该扩展自bash-2.05起可用,但在bash-4.4之前,默认情况下未编译和安装扩展,尽管如果您具有可用的构建环境(C编译器等),这样做简单发行版可能包含也可能不包含扩展,但遗憾的是RHEL 8(以及CentOS 8)在故意删除可加载扩展的情况下构建了bash-4.4。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在PowerShell中基于相对路径或绝对路径获取绝对路径?

从相对路径获取绝对路径

如何在Powershell脚本中解析相对或绝对文件名输入参数的绝对路径?

bash / fish命令打印文件的绝对路径

使用'find'命令获取文件的绝对路径

MSBuild:给定绝对路径,如何获取文件的相对路径?

获取 XML 文件相对路径的绝对路径

bash中的命令无法使用绝对路径

找到具有相对路径但不是绝对路径的文件?(VBS)

GNU查找:在-exec中获取绝对路径和相对路径

获取文件的绝对路径

如何获取文件的绝对路径

PHP中相对路径和锚文件的绝对路径

使用相对路径和绝对路径在Powershell脚本中调用文件

为什么本地文件中的相对路径被转换为绝对路径?

获取目录中所有文件的绝对路径

Aspnet MVC中的相对路径和绝对路径有什么区别?

文件的绝对路径作为bash中的变量

用bash从文件中删除绝对路径

如何在Java中获取文件的绝对路径

获取Eclipse中当前编辑文件的绝对路径

如何从SWT中的FileDialog获取文件的绝对路径?

如何在flutter中获取文件的绝对路径

使用JavaScript在MVC中获取文件的绝对路径

使用FTP命令行获取具有绝对路径的文件

从绝对路径+相对或绝对路径创建新的绝对路径

Shell /终端:使用目录的绝对路径对目录中的所有文件执行命令

如何获取在git commit中已更改但具有绝对路径的文件的列表?

获取相对于DLL位置的绝对路径