乐闻世界logo
搜索文章和话题

How do you normalize a file path in Bash?

1个答案

1

The primary purpose of normalizing file paths in Bash is to convert paths into standard or absolute forms, which helps eliminate redundant elements such as extra slashes, dots (.), or dot-dots (..), and ensures the consistency and accuracy of paths.

Using the realpath Command

The realpath command is used to normalize paths by resolving all symbolic links and relative paths, ultimately returning the absolute path.

For example, consider the following directory structure:

shell
/home/user/ └── project ├── data └── scripts -> ../scripts

If you are in the /home/user/project directory and run the realpath command on scripts/../data:

bash
realpath scripts/../data

The output will be:

shell
/home/user/project/data

This normalizes the path into a clear absolute path.

Using the readlink Command

Similar to realpath, the readlink command is used for handling symbolic links. Using the -f option resolves the path until the final target is obtained.

bash
readlink -f scripts/../data

This produces the same result as realpath.

Using cd and pwd Commands

Another manual approach involves changing the current directory to the target path and then using pwd to print the absolute path of the working directory.

bash
cd scripts/../data pwd

Then switch back to the original directory if needed.

The drawback is that this method actually changes the current working directory, which may not be suitable for all scenarios, especially in scripts.

Summary

Normalizing paths in Bash is recommended to prioritize using the realpath or readlink commands, as they provide a concise and direct way to handle various complex path situations. Using cd and pwd is a more fundamental method, though effective, but may affect the environment.

2024年8月16日 23:27 回复

你的答案