在 Bash 中提取文件基本名称

Fumbani Banda 2023年1月30日 2022年5月11日
  1. 在 Bash 中使用子字符串参数扩展提取文件基名
  2. 在 Bash 中使用 basename 命令提取文件基本名称
在 Bash 中提取文件基本名称

本教程展示了使用子字符串参数扩展和 basename 命令提取文件基本名称的不同方法。

在 Bash 中使用子字符串参数扩展提取文件基名

Bash 中的参数是存储值的元素。扩展是用它的值替换参数引用。

要在 Bash 中进行参数扩展,请在参数名称前加上 $ 字符。将参数名称括在花括号中是可选的。

参数扩展的两个符号如下所示。

$parameter
${parameter}

在参数扩展的花括号内,一些运算符可以与它们的参数一起添加。运算符放置在参数名称之后和右花括号之前。

我们可以将这些运算符用于条件、子字符串、子集、前缀列表、元素计数和大小写修改扩展。这些运算符只修改参数而不修改参数的值。

下面的脚本使用子字符串参数扩展来通过字符串模式匹配提取子字符串。使用的语法是 ${parameter##pattern}

## 指定模式应该从字符串的左侧开始匹配,*/ 是我们案例中的模式。在这种情况下,${path##*/} 匹配来自 path 变量的最后一个/ 并返回剩余的子字符串 file1.txt

path=/home/delftstack/test/file1.txt

echo "${path##*/}"

执行脚本会将文件名打印到标准输出。

file1.txt

在 Bash 中使用 basename 命令提取文件基本名称

basename 是 Linux 中的一个命令,它返回给定文件路径作为参数的最后一个元素。在下面的脚本中,basename 命令被赋予以文件路径作为参数的 path 变量。该脚本使用命令替换来执行 basename 命令。

命令替换是 Bash 的一项功能,它允许我们运行 Linux 命令并将命令的输出存储在变量中。使用此功能执行命令后,该命令的标准输出将替换该命令,并删除任何尾随换行符。

basename 命令的输出替换命令本身并分配给 fname 变量。printf 命令用于将 fname 变量的内容显示到标准输出。

path=/home/delftstack/test/file1.txt

fname=$(basename "$path")

printf $fname
printf "\n"

该脚本在执行后显示以下输出。

file1.txt
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub