shell中当basename和dirname无法满足你的需求时你一定要想到的命令

简介: shell中当basename和dirname无法满足你的需求时你一定要想到的命令

basename和dirname 在脚本中的作用

请看下面这个脚本的作用。 程序本身中并没有写死任何路径,但是却可以获取到dirname。

 

PROG_NAME="$(basename $0)"
PROG_DIR="$(cd $(dirname $0) && pwd)"

basename和dirname的局限

basename命令会返回不包含路径的脚本名。

dirname,获取文件所在目录


dirname /etc/    # 对目录使用dirname获取的是上级目录

dirname /kalsldk/kdkskks/djfjdjdjsj   # 获取不存在的目录


shell提供的basename和dirname,难免有些限制,我们可以使用${}来灵活获取,而且${}可以用来做shell的字符子串提取。

  • ${var##*/}
  • ${##*.}
  • ${var#*.}
  • ${var%/*}
  • ${var%%.*}

对${}的总结

#代表左起,%代表右起

两个符号代表最后一个字符,一个符号代表第一个字符

  1. #:左起第一个
  2. ##: 左起最后一个
  3. %:右起第一个
  4. %%:右起最后一个


可参考Linux 中如何对变量进行切分?_MyySophia的博客-CSDN博客_linux变量分割

目录
相关文章
|
19天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
19天前
|
Shell Linux UED
|
19天前
|
Unix Linux Shell
【Shell 编程指南 日期命令】Date命令:显示与设置系统时间和日期
【Shell 编程指南 日期命令】Date命令:显示与设置系统时间和日期
64 0
|
19天前
|
缓存 Shell Linux
【Shell 命令集合 链接器(linker)工具】Linux ld命令 将目标文件与库链接为可执行文件或库文件
【Shell 命令集合 链接器(linker)工具】Linux ld命令 将目标文件与库链接为可执行文件或库文件
57 0
|
19天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
159 45
|
19天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
53 2
|
12天前
|
Shell Linux 程序员
【Linux】Shell 命令以及运行原理
【Linux】Shell 命令以及运行原理
|
19天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
19天前
|
网络协议 Unix Shell
第十一章 Shell常用命令与工具(二)
第十一章 Shell常用命令与工具(二)
|
19天前
|
移动开发 Shell Linux
第十一章 Shell常用命令与工具(一)
第十一章 Shell常用命令与工具(一)