在 Bash 中获取文件路径参数中的最后一个目录名/文件名
- 2024-10-31 08:38:00
- admin 原创
- 42
问题描述:
我正在尝试为托管在我们开发服务器上的 SVN 编写提交后挂钩。我的目标是尝试自动将已提交项目的副本签出到服务器上托管的目录中。但是,我需要能够只读取传递给脚本的目录字符串中的最后一个目录,以便签出到托管我们项目的同一子目录。
例如,如果我对项目“example”进行 SVN 提交,我的脚本会将“/usr/local/svn/repos/example”作为其第一个参数。我只需从字符串末尾获取“example”,然后将其与另一个字符串连接起来,这样我就可以签出到“/server/root/example”并立即看到更改。
解决方案 1:
basename
删除路径的目录前缀:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
解决方案 2:
可以使用以下方法来获取路径名的任意路径:
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
输出:
c
b
a
解决方案 3:
Bash 可以获取路径的最后一部分,而不必调用外部basename
:
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
这使用 Bash 的参数扩展来删除最后一个(剩余的)斜杠之前的字符串部分。
解决方案 4:
要不使用外部命令打印文件名,
跑步:
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
该命令的运行速度必须比basename
和更快dirname
。
解决方案 5:
根据Dennis Williamson 的回答,我们只能从特定子目录中获取目录名称:
ls -d /home/$USER/Git/React/*/ | while read line; do
echo "$(basename $line)"
done
假设 JsObjects 有 7 个子目录:
$ ls -d /home/$USER/Git/JsObjects/*/
/home/ubuntu/Git/JsObjects/Cordova/ /home/ubuntu/Git/JsObjects/JavaScript/
/home/ubuntu/Git/JsObjects/Data/ /home/ubuntu/Git/JsObjects/Python/
/home/ubuntu/Git/JsObjects/HtmlCssJavascript/ /home/ubuntu/Git/JsObjects/Utilities/
/home/ubuntu/Git/JsObjects/JQueryMobile/
我们可以像这样获取目录名称:
$ ls -d /home/$USER/Git/JsObjects/*/ | while read line; do
echo "$(basename $line)"
done
Cordova
Data
HtmlCssJavascript
JQueryMobile
JavaScript
Python
Utilities
解决方案 6:
如果文件位于当前目录中,您将收到以下简短的消息:
cd /dev/shm
basename $(pwd) # shm
我已经有了此 sed 命令,尽管我承认它不太实用:
path="/dev/shm"
sed -r "s/^.*/(.*)$//" <<< $path # shm
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD