在shell脚本中,如何在解压文件后获取文件名

在shell脚本中,如何在解压文件后获取文件名,shell,Shell,我有一个tar文件“test.tar.gz”。现在我想在“test.tar.gz”解压后得到名称“test”。在shell脚本中,如何得到它。要从文件名中去掉扩展名,请使用basename: basename test.tar.gz .tar.gz 打印test 但这只是存档的基本名称。它并不总是由tar创建的任何文件或目录的名称。tar存档可以包含任何文件名。如果需要,请使用tar tf列出存档的内容。要从文件名中删除扩展名,请使用basename: basename test.tar.gz

我有一个tar文件“test.tar.gz”。现在我想在“test.tar.gz”解压后得到名称“test”。在shell脚本中,如何得到它。

要从文件名中去掉扩展名,请使用
basename

basename test.tar.gz .tar.gz
打印
test


但这只是存档的基本名称。它并不总是由
tar
创建的任何文件或目录的名称。tar存档可以包含任何文件名。如果需要,请使用
tar tf
列出存档的内容。

要从文件名中删除扩展名,请使用
basename

basename test.tar.gz .tar.gz
打印
test

但这只是存档的基本名称。它并不总是由
tar
创建的任何文件或目录的名称。tar存档可以包含任何文件名。如果需要,请使用
tar tf
列出存档的内容。

使用类似于:

file="test.tar.gz"
tarfilename=${file%.tar.gz}
阅读有关它的信息
manbash
搜索变量扩展。

使用类似以下的方法:

file="test.tar.gz"
tarfilename=${file%.tar.gz}

阅读有关它的
manbash
搜索变量扩展。

应该是
${file%.tar.gz}
在“tar”前面加一个点应该是
${file%.tar.gz}
在“tar”前面加一个点