Linux系统中获取路径的文件名的方法
[root@dabu.info ]#basename /root/aaab/dabu.txt
显示:
代码如下:
dabu.txt #获取路径的文件名
shell脚本中如何获得脚本文件所在路径?
方法一:
代码如下:
[root@dabu.info ]#DIR=$(cd "$(dirname "$0")"; pwd)
[root@dabu.info ]#echo $DIR
但是像这种dirname "$0"这种写法,在遇到source命令时会得到错误的结果。
方法二:
代码如下:
[root@dabu.info ]#echo "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
上面一行命令可以获得脚本的绝对轮径,无论你在何处调用这个脚本。
但是如果含有软链接,就无法使用了。所以,我们为了能正确解析指向脚本的软链接,可以使用下面的多行命令:
代码如下:
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
也可与source,bash -c命令使用
但是,如果你在脚本中使用先cd切换到其他目录,在运行时上面的命令片段时,则上面的命令不能等到正确的结果。可以参考关于$CDPATH 陷阱的文章。想理解它如何其作用的,可以运行下面的代码:
代码如下:
#!/bin/bash
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
TARGET="$(readlink "$SOURCE")"
if [[ $SOURCE == /* ]]; then
echo "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'"
SOURCE="$TARGET"
else
DIR="$( dirname "$SOURCE" )"
echo "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')"
SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
fi
done
echo "SOURCE is '$SOURCE'"
RDIR="$( dirname "$SOURCE" )"
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
if [ "$DIR" != "$RDIR" ]; then
echo "DIR '$RDIR' resolves to '$DIR'"
fi
echo "DIR is '$DIR'"
相关文章
- 微软 Win11 Canary 预览版 27975 发布!附补丁文件下载
- 仅影响商店应用!Win11 微软商店取消永久停更,仅支持 1-5 周暂停
- 微软 Win11 23H2 RP 22631.6132 预览版发布!更新内容一览
- 微信电脑版 4.1.2 正式版发布:删好友可留记录
- 微软发布紧急带外更新 KB5070773 修复 WinRE USB 键鼠失灵
- Windows11 25H2镜像文件下载地址
- 英特尔发布 32.0.101.8136 显卡驱动!附文件下载
- 微软 Win11 24H2 推送 9 月可选更新补丁 KB5065789!
- 微软Win11 Dev 26220.6760(KB5065793)发布!附补丁文件下载
- 微软 Win11 Beta 预览版 Build 26120.6760 发布!
系统下载排行榜71011xp
番茄花园 Win7 64位 快速稳定版
2【纯净之家】Windows7 64位 全新纯净版
3【纯净之家】Windows7 SP1 64位 全补丁旗舰版
4JUJUMAO Win7 64位 最新纯净版
5【纯净之家】Windows7 32位 全新纯净版
6【纯净之家】Win7 64位 Office2007 办公旗舰版
7【雨林木风】Windows7 64位 装机旗舰版
8【电脑公司】Windows7 64位 免费旗舰版
9JUJUMAO Win7 64位旗舰纯净版
10【深度技术】Windows7 64位 官方旗舰版
【纯净之家】Windows10 22H2 64位 专业工作站版
2【纯净之家】Windows10 22H2 64位 游戏优化版
3【纯净之家】Windows10 企业版 LTSC 2021
4【纯净之家】Windows10企业版LTSC 2021 纯净版
5【深度技术】Windows10 64位 专业精简版
6联想Lenovo Windows10 22H2 64位专业版
7JUJUMAO Win10 X64 极速精简版
8【雨林木风】Windows10 64位 专业精简版
9深度技术 Win10 64位国庆特别版
10【纯净之家】Win10 64位 Office2007 专业办公版
【纯净之家】Windows11 23H2 64位 游戏优化版
2【纯净之家】Windows11 23H2 64位 专业工作站版
3【纯净之家】Windows11 23H2 64位 纯净专业版
4风林火山Windows11下载中文版(24H2)
5【纯净之家】Windows11 23H2 64位 企业版
6【纯净之家】Windows11 23H2 64位 中文家庭版
7JUJUMAO Win11 24H2 64位 专业版镜像
8【纯净之家】Windows11 23H2 64位专业精简版
9【纯净之家】Windows11 23H2 64位 纯净家庭版
10Windows11 23H2 64位 官方正式版 V22631.6060
深度技术 GHOST XP SP3 电脑专用版 V2017.03
2深度技术 GGHOST XP SP3 电脑专用版 V2017.02
3Win7系统下载 PCOS技术Ghost WinXP SP3 2017 夏季装机版
4番茄花园 GHOST XP SP3 极速体验版 V2017.03
5萝卜家园 GHOST XP SP3 万能装机版 V2017.03
6雨林木风 GHOST XP SP3 官方旗舰版 V2017.03
7电脑公司 GHOST XP SP3 经典旗舰版 V2017.03
8雨林木风GHOST XP SP3完美纯净版【V201710】已激活
9萝卜家园 GHOST XP SP3 完美装机版 V2016.10
10雨林木风 GHOST XP SP3 精英装机版 V2017.04
热门教程
装机必备 更多+
重装工具