bash - 使用 bash 参数扩展获取文件路径

标签 bash path

给定一个文件的路径让我们说:/home/user1/archive.zip

有人能告诉我如何在不使用外部二进制文件的情况下删除字符串 archive.zip 吗?

我知道:

${Path2File##*/}

可以给我文件名,但我需要这个文件的文件夹路径。

也欢迎通配符理解指南或解释。

最佳答案

"${Path2File%\/*}"

或使用外部二进制文件

dirname "$Path2File" # Not desirable as you've mentioned already

注意事项:

  1. ${parameter%word} 类型的 shell 参数扩展中,单词被扩展以产生一个模式,就像在文件名扩展中一样。如果模式与参数扩展值的尾部匹配,则扩展的结果是删除了最短匹配模式的参数值。
  2. 由于 / 在 shell 参数扩展中有特殊含义,我们只是将其转义,即 \/。目的是匹配文件基本名称即 /path/to/example.zip 中的/example.zip 并删除。

引用:

壳牌 [ Parameter Expansion ]

关于bash - 使用 bash 参数扩展获取文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38034634/

相关文章:

java - 路径层次结构中的后退一步

linux - 通过终止进程查找应用程序

bash - 在一行中将位置参数分配给多个变量

linux - 带有管道的 bash 复合命令

bash - bash 中的传统除法符号

linux - 我的 $PATH 和 bash 命令遇到问题

c++ - 当前路径/SDL 库

bash - Bash脚本错误检查

php - 相对路径不适用于 css 中的图像

Python 错误 : "cannot find path specified"