专做宝宝的用品网站,武昌网站建设价格多少钱,网页qq直接登录聊天,重庆网站推广联系方式很多时候在使用Linux的shell时#xff0c;我们都需要对文件名或目录名进行处理#xff0c;通常的操作是由路径中提取出文件名#xff0c;从路径中提取出目录名#xff0c;提取文件后缀名等等。例如#xff0c;从路径/dir1/dir2/file.txt中提取也文件名file.txt#xff0c… 很多时候在使用Linux的shell时我们都需要对文件名或目录名进行处理通常的操作是由路径中提取出文件名从路径中提取出目录名提取文件后缀名等等。例如从路径/dir1/dir2/file.txt中提取也文件名file.txt提取出目录/dir1/dir2提取出文件后缀txt等。下面介绍两种常用的方法来进行相关的操作。一、使用${}1、${var##*/}该命令的作用是去掉变量var从左边算起的最后一个/字符及其左边的内容返回从左边算起的最后一个/不含该字符的右边的内容。使用例子及结果如下从运行结果可以看到使用该命令可以提取出我们需要的文件名file.txt。若使用时在shell程序文件中可以使用变量来保存这个结果再加以利用如file${var##*/}2、${var##*.}该命令的作用是去掉变量var从左边算起的最后一个.字符及其左边的内容返回从左边算起的最后一个.不含该字符的右边的内容。使用例子及结果如下从运行结果可以看到使用该命令可以提取出我们需要的文件后缀。如果文件的后缀不仅有一个例如file.tar.gz命令${var##*.}仅能提取最后一个后缀而我想提取tar.gz时该怎么办那么就要用下面所说的${var#*.}命令了。3、${var#*.}该命令的作用是去掉变量var从左边算起的第一个.字符及其左边的内容返回从左边算起第一个.不含该字符的右边部分的内容。使用例子及结果如下从运行结果可以看到使用该命令可以提取出文件的多个后缀。4、${var%/*}该命令的使用是去掉变量var从右边算起的第一个/字符及其右边的内容返回从右边算起的第一个/不含该字符的左边的内容。使用例子及结果如下从运行的结果可以看到使用该命令可以提取出我们需要的文件所在的目录5、${var%%.*}该命令的使用是去掉变量var从右边算起的最后一个.字符及其右边的内容返回从右边算起的最后一个.不含该字符的左边的内容。使用例子及结果如下当我们需要建立一个与文件名相同名字没有后缀的目录与对应的文件相对应时就可以使用该命令来进行操作。例如解压文件的情况就与此类似我们压缩文件file.zip时会在与file.zip同级目录下建立一个名为file的目录。6、${}总结其实${}并不是专门为提取文件名或目录名的它的使用是变量的提取和替换等等操作它可以提取非常多的内容并不一定是上面五个例子中的/或.。也就是说上面的使用方法只是它使用的一个特例。看到上面的这些命令可能会让人感到非常难以理解和记忆其实不然它们都是有规律的。#表示从左边算起第一个%表示从右边算起第一个##表示从左边算起最后一个%%表示从右边算起最后一个换句话来说总是表示左边算起总是表示右边算起。表示要删除的内容对于#和##的情况它位于指定的字符例子中的/和.的左边表于删除指定字符及其左边的内容对于%和%%的情况它位于指定的字符例子中的/和.的右边表示删除指定字符及其右边的内容。这里的*的位置不能互换即不能把*号放在#或##的右边反之亦然。例如${var%%x*}表示找出从右边算起最后一个字符x并删除字符x及其右边的字符。看到这里就可以知道其实该命令的用途非常广泛上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。二、basename和dirname${}并不是专门为提取文件名和目录名设计的命令那么basename和dirname命令就是专门为做这一件事而已准备的了。1、basename该命令的作用是从路径中提取出文件名使用方法为basename NAME [SUFFIX]。1从路径中提出出文件名带后缀例子如下2从上面命令的用法中可以看到后缀SUFFIX是一个可选项。所以若只想提取出文件名file而不带有后缀还可以在变量的后面加上后缀名例子如下2、dirname该命令的作用是从路径中提取出目录名使用方法为 dirname NAME使用例子如下这样就提取出了file.txt文件所在的目录。注该命令不仅能提取出普通文件所的目录它能提取出任何文件所在的目录例如目录所在的目录如下它提取出了目录dir2所在的目录dir1.本文为转载文章出处为传送阵 转载于:https://blog.51cto.com/littledukes/1972236