当前位置:网站首页>5.读取指定路径名-dirname
5.读取指定路径名-dirname
2022-06-11 10:30:00 【其木王·王子】
1. 简介
dirname 命令读取指定路径名删除最后一个“/”(斜杠)及其后面的字符,保留其他部分,并写结果到标准输出。如果最后一个“/”后无字符,dirname 命令使用倒数第二个“/”,并忽略其后的所有字符。
示例:
1) dirname /etc/init.d/acpid -> /etc/init.d
2) dirname /etc/init.d/ -> /etc
3) dirname /etc/init.d -> /etc
4) dirname stdio.h -> .
5) dirname dir1/str dir2/str -> "dir1" followed by "dir2"
2. 实例
在很多shell脚本中,经常可以看到下面的语句
rootDir=$(cd $(dirname $0); pwd)
这个语句的作用是获取shell脚本所在目录的绝对路径,这个语句怎么理解?为什么不直接用pwd来获取当前路径呢?
"."表示当前路径
$0,这是bash shell脚本中的位置参数,用来表明输入到命令行中的命令本身。
其余的还有$1,$2等等,分别表示输入到命令行中的命令后面带有的第一个参数和第二个参数
bash test.sh 10 9
其中的$0就是test.sh,10和9分别是$1和$2。
pwd,这个命令就是打印当前的绝对路径。
为什么不用pwd?
请注意基本事实
调用shell脚本,就是在调用脚本的当前目录下,逐行执行脚本中的每一个命令。
修改上面的脚本如下
#/bin/bash
rootDir=$(cd $(dirname $0); pwd)
echo "rootDir $rootDir"
echo "pwd $pwd"
并且在~/lyq下输入命令code/test.sh来运行这个脚本,输出结果如下
[email protected]:~/lyq$ code/test.sh
rootDir /home/usr/lyq/code
pwd /home/usr/lyq
第2个pwd不是脚本所在的目录,而是我们输入命令的目录。正如那个基本事实所示,在该目录下运行该脚本相当于逐行敲入脚本中每一句之后执行,所以在~/lyq调用脚本中的pwd,就相当于在该目录下敲入pwd,因此结果就是当前路径。
之所以不能直接使用pwd获取脚本所在目录,是因为如果在脚本目录之外调用该脚本,返回的是调用命令所在的目录而不是脚本所在目录。
3. 拓展
#/bin/bash
topDir = $(cd $(dirname $0); cd ../; pwd) #获取当前路径,切换路径,并打印
echo topDir
$(topDir)/Build/build_app.bat
边栏推荐
- What are the ABAP keywords and syntax that cannot be used in the ABAP cloud environment?
- 详述用网络分析仪测量DC-DC和PDN
- GameFi:您需要了解的关于“即玩即赚”游戏经济的一切
- Interview review - closure
- Mouse click coordinate transformation generation
- Cas de rectification du CEM rayonné par des équipements électroniques
- rpc的正确打开方式|读懂Go原生net/rpc包
- Window管理深入了解WindowManagerService
- 【DBSCAN】DBSCAN实例
- Ugui mouse click diffusion UI effect
猜你喜欢

Safety related website recommendations

用真金做的电路板——金手指

电子设备辐射EMC整改案例

修复UICollectionView 没有到达底部安全区的问题

Pyramidtnt: TNT with characteristic pyramid structure

Differences between beanfactorypostprocessor and beanpostprocessor

利用PHP开发的一款万能、表白墙系统部分代码片段

Detail measurement of DC-DC and PDN with network analyzer

Global pooling – pytoch

MXNet对AlexNet模型的构建与实现(与LeNet的对比)
随机推荐
MySQL comparison
< Pytorch series 4 & gt;: Constructing neural network model
利用PHP开发的一款万能、表白墙系统部分代码片段
Internet of things security in the era of remote work
Use of kingbasees UDP monitoring tool for gold warehouse database
Development and source code construction of digital collection system
Some understanding of inductive bias
金仓数据KingbaseES 批量创建数据库对象
電子設備輻射EMC整改案例
金仓数据库KingbaseES中的PL/SQL 编译检查
Série de démarrage C # (XI) - - tableaux multidimensionnels
Kingbasees create database objects in batch
Windows 安装MySQL5.7 以上的版本(压缩包形式安装)
[torch]: parallel training and can dynamically set the batch size of the first GPU
MD5学习
[machine learning theory] true positive, true negative, false positive, false negative concept
TikTok在英国遭遇文化冲突,短期内众多员工离职
Pyspark case series 4-dataframe output to a single folder solution
C#入门系列(十一) -- 多维数组
Review handwritten questions in interview -- function interception and jitter