Linux basename 命令新手教程(附实例)
在此页
- Linux 基本名称命令
- Q1。 basename 命令如何工作?
- Q2。 basename 可以处理多个输入吗?
- Q3。如何制作 basename strip 文件扩展名?
- Q4。如何让每一行输出都以NUL结尾?
- 结论
有时,在命令行上工作时(尤其是在处理 shell 脚本时),您可能只对文件名感兴趣,但您可用的是文件的完整路径。因此,要求是去除路径的目录部分。你会很高兴知道有一个命令 - basename - 可以完成这项工作。
在本教程中,我们将使用一些易于理解的示例来讨论 basename 的基础知识。但在我们开始之前,值得一提的是,这里的所有示例都已经在 Ubuntu 16.04 LTS 机器上进行了测试。
Linux 基名命令
basename 命令允许您从不需要的文件名中剥离组件。以下是工具语法:
basename NAME [SUFFIX]
basename OPTION... NAME...
这是手册页中关于它的内容:
basename - strip directory and suffix from filenames
Print NAME with any leading directory components removed. If specified, also remove a trailing
SUFFIX.
以下是一些 Q&A 风格的示例,它们应该可以让您对 basename 命令的工作原理有一个很好的了解。
Q1。 basename 命令如何工作?
默认情况下,如果您运行 basename 命令并将文件的完整路径作为输入,则该命令会在输出中返回文件名。例如,当我执行以下命令时:
basename /home/himanshu/Downloads/analytics.pdf
我得到以下输出:
analytics.pdf
Q2。 basename 可以处理多个输入吗?
是的,它可以。但要做到这一点,您需要使用 -a 命令行选项。例如,当我执行以下命令时:
basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
这是我得到的输出:
analytics.pdf
test.png
Q3.如何制作 basename strip 文件扩展名?
有时,您可能只想获取文件名,而不是其扩展名。好吧,这可以使用 -s 命令行选项来完成(这需要您将后缀作为输入传递)。
例如,以下命令:
basename -s .pdf /home/himanshu/Downloads/analytics.pdf
产生了这个输出:
analytics
Q4.如何让每一行输出都以NUL结尾?
默认情况下,换行符用作输出中的分隔符。但是,如果需要,您可以强制 basename 使用 NUL 作为分隔符。这可以使用 -z 命令行选项来完成。
例如:
basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
这是输出:
analytics.pdftest.png
所以你在这里看不到 NUL 字符。为此,您需要将输出重定向到一个文件,然后在 vim 等编辑器中打开该文件。这是 vim 显示的内容:

结论
如您所见,basename 不是一个功能非常丰富的命令 - 它提供的选项是有限的,其中大部分已在本教程的此处进行了讨论。完成这些练习后,请前往工具手册页了解更多信息。