命令行截取路径
在写 bash 脚本时,动态获取了一个文件路径,而想打开该文件所在目录,可以使用通配符来截取父目录路径。
格式:${path[##|#|%|%%]<pattern>}
现在假设 path
的值为 :/home/cam/book/long.file.name
,给出如下样例:
表达式 | 截取结果 | 说明 |
---|---|---|
${path##/*/} | long.file.name | ## 表示移除符合通配符的最长字符串 |
${path#/*/} | cam/book/long.file.name | # 表示移除符合通配符的最短字符串 |
${path} | /home/cam/book/long.file.name | 原字符串 |
${path%.*} | /home/cam/book/long.file | % 表示移除符合通配符的最短字符串 |
${path%%.*} | /home/cam/book/long | %% 表示移除符合通配符的最长字符串 |
#
从字符串起始位置开始匹配,为方便记忆,可以理解为数字符号总是在数字之前
%
从字符串尾部位置开始匹配,为方便记忆,可以理解为百分比符号总是在数字之后
实操样例:
想要查找 swift 工具并打开其所在目录,在命令行中输入如下命令:
$ temp=$(xcrun --find swift)
$ cd ${temp%/*}