Linux shell 中提取文件名和目录名的方法通常使用shell变量和一些特定命令。以下是提取文件名和目录名的几种方法:
- 使用$变量获取当前目录和文件名
在Linux shell中,我们可以使用一些特殊的变量获取当前目录和文件名。其中,$PWD
变量表示当前目录的路径,$0
变量表示当前脚本的文件名,$1
变量表示脚本后的第一个参数(文件名)。
例如,我们可以在Linux shell命令行中使用以下命令获取当前目录和脚本文件名:
echo $PWD
echo $0
输出结果类似于:
/home/user
test.sh
- 使用basename和dirname命令
另一种提取文件名和目录名的方法是使用basename和dirname命令。basename命令可以从给定的路径中获取文件名,dirname命令可以从给定的路径中获取目录名。
例如,假设我们有一个文件路径/path/to/file.txt ,我们可以使用以下命令提取其文件名和目录名:
# 获取文件名
basename /path/to/file.txt
# 输出结果:file.txt
# 获取目录名
dirname /path/to/file.txt
# 输出结果:/path/to
示例1:提取文件名
假设我们有一个文本文件 "test.txt",它的绝对路径为 "/home/user/documents/test.txt"。我们可以使用以下命令提取文件名:
# 使用basename命令提取文件名
basename /home/user/documents/test.txt
# 输出结果: test.txt
# 使用$变量来提取文件名
filename=/home/user/documents/test.txt
echo ${filename##*/}
# 输出结果: test.txt
在第二个示例中,##*/
是一种使用shell变量来提取文件名的更简单的方法。这个语法可以帮助我们剥离字符串中的目录路径,并保留文件名。
示例2:提取目录名
假设我们有一个文本文件 "test.txt",它的绝对路径为 "/home/user/documents/test.txt"。我们可以使用以下命令来提取目录名:
# 使用dirname命令提取目录名
dirname /home/user/documents/test.txt
# 输出结果: /home/user/documents
# 使用$变量来提取目录名
filename=/home/user/documents/test.txt
echo $(dirname $filename)
# 输出结果: /home/user/documents
在第二个示例中,我们使用了$(…)来调用dirname命令。这种用法也是可以的,这意味着我们需要使用在命令替换中常用的括号方式来执行命令。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux shell 提取文件名和目录名的方法 - Python技术站