在 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