首页 > 系统相关 >shell获取文件名和文件目录-basename和dirname

shell获取文件名和文件目录-basename和dirname

时间:2022-10-09 14:24:27浏览次数:54  
标签:字符 右边 shell 文件目录 左边 basename 算起 例子 var

转载学习,from :https://blog.csdn.net/d1240673769/article/details/122072963

我们有时候需要获取某个文件路径的文件名或者文件所在目录名,如:/usr/local/nginx/nginx.conf ,我想获取该文件的所在目录名 (/usr/local/nginx)以及 文件名 nginx.conf,那么如何操作呢?下面介绍两种方法。

一、利用 ${}
1、${var##*/}
该命令的作用是去掉变量var从左边算起的最后一个’/’ 字符及其左边的内容,返回从左边算起的最后一个’/’(不含该字符)的右边的内容。使用例子及结果如下:

 

 

2、${var##*.}

该命令的作用是去掉变量var从左边算起的最后一个 ‘.’ 字符及其左边的内容,返回从左边算起的最后一个’.’(不含该字符)的右边的内容。使用例子及结果如下:

 

 3、${var#*.}

该命令的作用是去掉变量var从左边算起的第一个’.‘字符及其左边的内容,返回从左边算起第一个’.’(不含该字符)的右边部分的内容。使用例子及结果如下:

 

4、${var%/*}

该命令的使用是去掉变量var从右边算起的第一个’/‘字符及其右边的内容,返回从右边算起的第一个’/’(不含该字符)的左边的内容。使用例子及结果如下:

 

 5、${var%%.*}

该命令的使用是去掉变量var从右边算起的最后一个’.‘字符及其右边的内容,返回从右边算起的最后一个’.’(不含该字符)的左边的内容。使用例子及结果如下:

 

 6、${}总结

${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的’/‘或’.’。

#:表示从左边算起第一个
%:表示从右边算起第一个
##:表示从左边算起最后一个
%%:表示从右边算起最后一个
换句话来说,#总是表示左边算起,%总是表示右边算起。

*:表示要删除的内容,对于#和##的情况,它位于指定的字符(例子中的’/‘和’.’)的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定的字符(例子中的’/‘和’.’)的右边,表示删除指定字符及其右边的内容。这里的’'的位置不能互换,即不能把号放在#或##的右边,反之亦然。

例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。

二、basename和dirname
1. basename
该命令的作用是从路径中提取出文件名,使用方法为basename NAME [SUFFIX]

(1)从路径中提出出文件名(带后缀),例子如下:

 

 (2)从上面命令的用法中可以看到,后缀(SUFFIX)是一个可选项,若只想提取出文件名file,而不带有后缀,还可以在变量的后面加上后缀名,例子如下:

 

 2. dirname

该命令的作用是从路径中提取出目录名,使用方法为 dirname NAME

使用例子如下:

 

 

 

 ————————————————

版权声明:本文为CSDN博主「Jepson2017」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/d1240673769/article/details/122072963

标签:字符,右边,shell,文件目录,左边,basename,算起,例子,var
From: https://www.cnblogs.com/renxinyuan/p/16771948.html

相关文章

  • Linux_Bash_Shell_索引数组和关联数组及稀疏数组
     1. 索引数组 一、什么是索引数组?所谓索引数组就是普通数组,以整数作为数组元素的索引下标。   二、实例。  备注:(a)使用-a选项定义索引数组,使用一对......
  • 官方下载xshell xftp
    免费下载xshell页面    https://www.xshell.com/zh/free-for-home-school/ ......
  • 在java 的基础上增量学习 shell 编程
     shell 脚本其实还是我们比较常用的,在开发中经常会有需求,要写脚本实现某某功能。 比如,别人让写一个告警脚本,将消息推送到钉钉上。 这篇文章作为shell 的入门吧。 jav......
  • shell脚本实例分析1
    1、#!/bin/ksh#name:testdirecho$0program=`basename$0`program_dir=`dirname$0`echo"program=$program"echo"program_dir=$program_dir"if[`echo"$0"|grep......
  • Shell脚本实现自动化安装
    在Linux环境下,实现多个软件包的自动化安装步骤:1、找到软件包,提取软件包的名字建立解压路径(为了让我们更清楚的找到我们的文件)pkg=`find${PACKAGE_PATH}-name*BIN*.tar.gz......
  • [shell] 如何用gcm找到文件(一个菜鸡的搞笑故事)
    开始学shellShell的种类多样,我们甚至可以直接在上面编程,例如bashshell例如windowspowershell(我简写为wpsh)Argument间要用空格隔开以下指令如果不分类的话那么指在wpsh......
  • PowerShell
    PowerShell在管理员权限下调整执行策略远程执行ps脚本两个要求:远程主机身份经过验证,为可信任主机为满足第一个要求,远端主机必须经过域服务器验证。最佳应对方法时将......
  • xshell7 无法打开 提示"要继续使用此程序,您必须应用最新的更新或使用新版本" 解决方
    情况打开xshell7提示要继续使用此程序,您必须应用最新的更新或使用新版本解决方案临时方案-重置时间大法重装xshell(但是也得导出之前的配置)更换shell工具-MobaXte......
  • shell 运算符
    shell中的比较运算符:-eq    //等于-ne    //不等于-gt    //大于(greater)-lt     //小于 (less)-ge    //大于等于-le  ......
  • 第二阶段:高级核心基础知识·第4章shell特性·2
    1.统计日志,日志内容39.96.187.239--[11/Nov/2019:10:08:01+0800]"GET/HTTP/1.1"3020"-""Zabbix"211.162.238.91--[11/Nov/2019:10:08:02+0800]"GET/api......