Bash – 获取文件path参数中的最后一个dirname / filename

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

例如,如果我将一个SVN提交给项目“example”,我的脚本将获得“/ usr / local / svn / repos / example”作为第一个参数。 我需要从string的末尾得到“example”,然后用另一个string连接,这样我就可以签出“/ server / root / example”并立即查看所做的更改。

3 Solutions collect form web for “Bash – 获取文件path参数中的最后一个dirname / filename”

basename不会删除path的目录前缀:

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

Bash可以获得path的最后部分,而无需调用外部basename

 subdir="/path/to/whatever/${1##*/}" 

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

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

输出:

 c b a 
  • 如何从trunk中正确创build一个SVN标签?
  • 回滚或恢复整个svn存储库到一个较旧的版本
  • 如何获得所有最近的SVN提交消息的列表?
  • 是否有可能获得统计与TortoiseSVN?
  • 获取SVN中的最后一个修订号?
  • 如何获得所有Subversion提交作者用户名列表?
  • 你如何组织你的版本控制库?
  • svn:如何撤消一个合并(没有提交)?
  • 从Subversion签出一个文件
  • 叉和谷歌代码Subversion的存储库同步到GitHub
  • svn:MKACTIVITY 403禁止