Linux basename初学者命令教程(附例)

有时,在处理命令行时(特别是在处理shell脚本时),您可能只对文件名感兴趣,但是有什么...

Linux basename初学者命令教程(附例)

有时,在处理命令行时(特别是在处理shell脚本时),您可能只对文件名感兴趣,但可以使用的是文件的完整路径。 因此,要求是剥离路径的目录组件。 你会很高兴知道有一个命令 - basename - 可以完成这项工作。

在本教程中,我们将使用一些易于理解的示例讨论“basename”的基础知识。 但在我们开始讨论之前,值得一提的是,这里的所有示例都是在Ubuntu 16.04 LTS机器上测试过的。

Linux basename命令

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命令行选项(它要求您将Postfix作为输入传递)来完成。

例如,以下命令:

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不是一个功能非常丰富的命令 - 它提供的选项是有限的,本教程中已经讨论了大多数这些命令。 完成练习后,请转到该工具的手册页以了解有关它的更多信息。