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 Dev 26300.7674 发布!正式开启 26300 篇章
- NVIDIA 发布 591.86 显卡驱动!附下载地址
- Win11 更新致调制解调器失效,微软回应非 Bug 是安全调整
- 微软发布 Win11 24H2/25H2 紧急补丁 KB5078127
- 微软发布 Win11/10 紧急带外更新,修复关机异常和远程登录问题
- AMD 最新显卡驱动 26.1.1 版本发布!附下载地址
- 英特尔发布 32.0.101.8425 显卡驱动!附文件下载
- 微软 PowerToys 0.97 发布:命令面板可自定义
- 微信 Windows 4.1.7 内测更新:新增群接龙 + 语音转文字
- 微软 Win11 预览版桌面水印不更新问题将修复
系统下载排行榜71011xp
【纯净之家】Windows7 64位 全新纯净版
2番茄花园 Win7 64位 快速稳定版
3【纯净之家】Windows7 32位 全新纯净版
4【纯净之家】Win7 64位 Office2007 办公旗舰版
5【雨林木风】Windows7 64位 装机旗舰版
6JUJUMAO Win7 64位旗舰纯净版
7【纯净之家】Windows7 SP1 32位 全补丁旗舰版
8【电脑公司】Windows7 64位 免费旗舰版
9【深度技术】Windows7 64位 官方旗舰版
10【游戏专用】Windows7 64位 装机旗舰版
【纯净之家】Windows10 22H2 64位 游戏优化版
2【纯净之家】Windows10 22H2 64位 专业工作站版
3【纯净之家】Windows10企业版LTSC 2021 纯净版
4【深度技术】Windows10 64位 专业精简版
5【纯净之家】Windows10 22H2 64位 企业版
6【雨林木风】Windows10 64位 专业精简版
7JUJUMAO Win10 X64 极速精简版
8【深度技术】 Win10 64位国庆特别版
9【纯净之家】Windows10 32位 官方正式版
10【雨林木风】Windows10 64位 官方专业版
【纯净之家】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位 纯净家庭版
10JUJUMAO Win11 24H2 64位 精简版镜像
深度技术 GHOST XP SP3 电脑专用版 V2017.03
2深度技术 GGHOST XP SP3 电脑专用版 V2017.02
3萝卜家园 GHOST XP SP3 万能装机版 V2017.03
4番茄花园 GHOST XP SP3 极速体验版 V2017.03
5Win7系统下载 PCOS技术Ghost WinXP SP3 2017 夏季装机版
6雨林木风 GHOST XP SP3 官方旗舰版 V2017.03
7电脑公司 GHOST XP SP3 经典旗舰版 V2017.03
8萝卜家园 GHOST XP SP3 完美装机版 V2016.10
9雨林木风GHOST XP SP3完美纯净版【V201710】已激活
10雨林木风 GHOST XP SP3 精英装机版 V2017.04
热门教程
装机必备 更多+
重装工具