文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Shell获取路径操作(dirname$0pwd)的实现

2024-04-02 19:55

关注

  在shell脚本中经常会看到$(cd $(dirname $0); pwd)、basename等操作,本文就来记录一下 dirname、basename、pwd 的用法及组合使用。

pwd 用法

pwd: pwd [-LP]
Print the name of the current working directory.
Options:
-L print the value of $PWD if it names the current working directory
-P print the physical directory, without any symbolic links

pwd:

打印出当前工作路径,注意是 ”工作路径“,及脚本在哪个路径执行,该路径就是该脚本的工作路径,如图:

pwd

pwd -L:

打印出环境变量 $PWD 的值,如果 PWD 赋值为当前工作路径,pwd 默认同 pwd -L

pwd -P:

打印真实路径,不打印链接的路径,区别如图:

pwd

basename 用法

Examples:
 basename /usr/bin/sort -> “sort”
 basename include/stdio.h .h -> “stdio”
 basename -s .h include/stdio.h -> “stdio”
 basename -a any/str1 any/str2 -> “str1” followed by “str2”

basename:

打印除上层路径外的基础文件名;当文件名后存在后缀时,除去后面的后缀,如 # basename include/stdio.h .h 只会打印出 stdio

basename -s:

-s参数后面指定要去除的后缀字符,即:# basename -s .h include/stdio.h 同 # basename include/stdio.h .h 一样只会打印出 stdio

basename -a:

-a参数可追加执行多个文件路径,取每一个路径的基础文件名并打印。用法如下图:

basename

dirname 用法

Examples:
 dirname /usr/bin/ -> “/usr”
 dirname dir1/str dir2/str -> “dir1” followed by “dir2”
 dirname stdio.h -> “.”

dirname:

去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录

dirname -z:

输出结果不换行
如图所示:

dirname

组合使用 参数 $0:

在shell中,$0 指定为命令行参数的第0个参数,即当前脚本的文件名,$1 $2 指传入脚本的第 1 第 2 个参数

dirname 和 $0:

经常看到 $(dirname $0),那么这个变量存放什么,即:当前脚本文件的父目录,注意 $0 为脚本执行时传入的脚本路径名,如下:

dirname和$0

  一般在shell中执行文件都用绝对路径,但如果使用相对路径的情况,必须保证相对当前工作路径下的目标路径存在该文件,不然会打印 bash: …/shell/demo.sh: No such file or directory。也就是如果你脚本路径传错了,dirname自然就不能获取到有效的父目录!

dirname、$0 和 pwd:

  通常我们需要把当前脚本的路径作为工作路径来执行某些相对路径文件,这时就需要获取当前被执行脚本的父目录的绝对路径了,而变量 $(cd $(dirname $0); pwd) 就是用来保存当前脚本的父目录的绝对路径的,如下图:

绝对路径

可查看执行 # $(cd $(dirname $0); pwd) 获取当前脚本父目录的绝对路径的过程如下:

+++ dirname shell/demo.sh
++ cd shell
++ pwd
+ echo /home/shell
/home/shell

  dirname $0 pwd 这几个组合的操作在shell编程中非常常用,到此这篇关于Shell获取路径操作(dirname $0 pwd)的实现的文章就介绍到这了,更多相关Shell获取路径操作内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯