在 Bash 的文件路径参数中获取最后一个目录名/文件名

新手上路,请多包涵

我正在尝试为 SVN 编写一个提交后挂钩,它托管在我们的开发服务器上。我的目标是尝试自动将已提交项目的副本签出到服务器上托管的目录。但是,我需要能够仅读取传递给脚本的目录字符串中的最后一个目录,以便签出到托管我们的项目的同一子目录。

例如,如果我对项目“example”进行 SVN 提交,我的脚本将“/usr/local/svn/repos/example”作为其第一个参数。我只需要从字符串末尾获取“example”,然后将其与另一个字符串连接,这样我就可以签出到“/server/root/example”并立即查看更改。

原文由 TJ L 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 531
2 个回答

basename 确实删除了路径的目录前缀:

 $ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example

原文由 sth 发布,翻译遵循 CC BY-SA 4.0 许可协议

以下方法可用于获取路径名的任何路径:

 some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))

输出:

 c
b
a

原文由 Jingguo Yao 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题