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