在Linux和Unix系统中,basename
和 dirname
是两个非常实用的命令行工具,用于处理文件路径。它们可以帮助用户轻松地从复杂的路径中提取文件名或目录名。
basename
命令用于获取文件名或者去掉路径中的指定后缀。
basename PATH [SUFFIX]
PATH
: 文件的完整路径。[SUFFIX]
(可选): 指定需要移除的文件扩展名。获取文件名
basename /home/user/file.txt
输出: file.txt
去掉指定后缀
basename /home/user/file.txt .txt
输出: file
dirname
命令用于获取文件路径中的目录部分。
dirname PATH
PATH
: 文件的完整路径。dirname /home/user/file.txt
输出: /home/user
假设我们有一个文件位于 /var/log/system.log
,我们可以使用以下步骤来分别获取文件名和目录名。
获取文件名
file_name=$(basename /var/log/system.log)
echo $file_name
输出: system.log
获取目录名
dir_name=$(dirname /var/log/system.log)
echo $dir_name
输出: /var/log
组合使用 在脚本中,你可能需要同时获取文件名和目录名。可以这样做:
path="/var/log/system.log"
file_name=$(basename "$path")
dir_name=$(dirname "$path")
echo "File Name: $file_name"
echo "Directory Name: $dir_name"
输出:
File Name: system.log
Directory Name: /var/log
在Shell脚本中,basename
和 dirname
经常被用来动态生成文件路径。例如,在备份脚本中,你可以先获取当前文件的目录和名称,然后将它们复制到另一个位置。
此外,basename
和 dirname
的功能也可以通过Shell内置的字符串操作实现,但这些命令提供了更简洁的方式。