`

我使用过的Linux命令之dirname - 截取给定路径的目录部分

阅读更多

我使用过的Linux命令之dirname - 截取给定路径的目录部分

本文链接:http://codingstandards.iteye.com/blog/800028     (转载请注明出处)

 

用途说明

dirname命令可以取给定路径的目录部分(strip non-directory suffix from file name)。这个命令很少直接在shell命令行中使用,我一般把它用在shell脚本中,用于取得脚本文件所在目录,然后将当前目录切换过去。根据手册页上说的“Print  NAME  with  its  trailing  /component  removed; if NAME contains no /’s, output ‘.’ (meaning the current directory).”,似乎说“取给定路径的目录部分” 并不能很准确的概括dirname命令的用途。Linux下还有一个命令是basename,它与dirname相反,是取得文件名称部分。

常用参数

无。

使用示例

示例一 来自手册页的例子

[root@qzt196 ~]# dirname /usr/bin/sort
/usr/bin
[root@qzt196 ~]# dirname stdio.h
.
[root@qzt196 ~]#

示例二

[root@qzt196 ~]# dirname /usr/bin
/usr
[root@qzt196 ~]# dirname /usr/bin/
/usr

注意:此处的输出结果,似乎有点怪。这应该看下dirname命令的源代码才能解释了。

示例三 在bash脚本中的运用

#!/bin/sh

# 跳转到脚本所在目录
cd $(dirname "$0") || exit 1

# 剩下的部分

 

这个写法我经常用到,因为有时候脚本执行时无法确定是在哪个目录,比如脚本用在crontab中时。

另一个写法是:cd `dirname $0` 其中反引号··等同于$()。

 

示例四 与另外一种截取目录的方法的比较

可以用${pathname%/*}截取掉pathname后面的文件部分。

[root@jfht ~]# pathname=/usr/bin/sort; echo $(dirname $pathname) ${pathname%/*}
/usr/bin /usr/bin
[root@jfht ~]# pathname=/usr/bin/; echo $(dirname $pathname) ${pathname%/*}
/usr /usr/bin
[root@jfht ~]# pathname=/usr/bin; echo $(dirname $pathname) ${pathname%/*}
/usr /usr
[root@jfht ~]# pathname=/usr/; echo $(dirname $pathname) ${pathname%/*}
/ /usr
[root@jfht ~]# pathname=/usr; echo $(dirname $pathname) ${pathname%/*}
/
[root@jfht ~]# pathname=/; echo $(dirname $pathname) ${pathname%/*}
/
[root@jfht ~]# pathname=stdio.h; echo $(dirname $pathname) ${pathname%/*}
. stdio.h
[root@jfht ~]#

问题思考

1. 看了示例四的演示之后,怎样使用shell函数来实现dirname命令?

相关资料

【1】脚本部分 linux dirname命令: 截取路径名的目录

 

返回 我使用过的Linux命令系列总目录

 

1
0
分享到:
评论
2 楼 Master-Gao 2017-03-10  
楼主咋没分析下源码呢?
1 楼 yly936 2013-04-10  

相关推荐

    Linux dirname命令的具体使用

    dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符。dirname 和 basename通常在 shell 内部...

    【IT十八掌徐培成】Linux基础-05.nano-dirname-basename-环境变量

    【IT十八掌徐培成】Linux基础-05.nano-dirname-basename-环境变量

    前端开源库-dirname-shim

    前端开源库-dirname-shimdirname-shim、umd-dirname和文件名浏览器填充程序

    regex-dirname-windows:捕获Windows路径目录名称的正则表达式

    目录名 捕获Windows路径。 安装 $ npm install regex-dirname-windows 用法 var re = require ( 'regex-dirname-windows' ) ; 关于 捕获Windows路径。 var base = re . exec ( 'foo\\bar\\index.js' ) [ 1...

    regex-dirname-posix:捕获POSIX路径目录名称的正则表达式

    目录名 捕获路径。 安装 $ npm install regex-dirname-posix 用法 var re = require ( 'regex-dirname-posix' ) ; 关于 捕获路径。 var base = re . exec ( 'foo/bar/index.js' ) [ 1 ] ; // returns 'foo...

    Linux mkdir命令用法详解

    Linux mkdir命令用于建立名称为 dirName 之子目录。 语法 mkdir [-p] dirName 参数说明: -p 确保目录名称存在,不存在的就建一个。 实例 在工作目录下,建立一个名为 AAA 的子目录 : mkdir AAA 在工作目录下的 BBB ...

    linux-常用命令

    linux常用指令集合,可打印出来,平常的时候看一看。 1. 查看目录下有什么文件/目录 > ls //list列出目录的文件信息 > ls -l //list -list以“详细信息”查看目录文件 > ls -a //list -all查看目录“全部”(包括...

    Linux下常用压缩格式的压缩与解压方法.doc

    但是部分方法我没有用到,也就不全,希望大家帮我补充,我将随时修改完善,谢谢! .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ------------------------...

    regex-dirname:用于捕获路径目录名称的正则表达式

    目录名 用于捕获路径。 安装 $ npm install regex-dirname 用法 var re = require ( 'regex-dirname' ) ; 关于 用于捕获路径。 var dir ; // On a POSIX platform... dir = re . exec ( '/foo/bar/index.js' &...

    Linux系统命令及其使用详解.doc

    Linux系统命令及其使用详解.doc Linux 系统命令及其使用详解(大全) (来源: 中国系统分析员)  cat cd  chmod chown  cp cut  名称:cat  使用权限:所有使用者  使用方式:cat [-AbeEnstTuv] [--help] [-...

    linux系统命令及其使用详解

    linux系统命 使用权限:所有使用者  使用方式:cd [dirName]  说明:变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时...

    dirname-filename-esm:ES模块环境的__dirname和__filename

    Node.js上ES模块的__dirname和__filename 发布了Node.js v13.2.0,该版本提供了对ES模块的支持。 解释了概述。 在ES模块的环境中,全局变量,如require , exports , module.exports , __filename , __dirname不...

    dirname命令 去除文件名中的非目录部分

    dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/...

    最新Linux系统命令及其使用详解.pdf

    Linux 系统命令及其使用详解,变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若 目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home ...

    linux中mkdir命令使用详解

    linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。 1.命令格式: mkdir [选项] 目录… 2.命令功能: 通过 mkdir 命令可以实现...

    入门学习Linux常用必会60个命令实例详解doc/txt

    所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也...

    Linux 系统命令及其使用详解

    其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示...

    Linux系统命令及其使用详解

    其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示...

    windows dos环境下直接运行linux命令集合

    使用方法,解压到本地目录,配置path,即可在dos下使用linux命令。 windows下能直接执行的linux命令,基本包括日常所有,如:[.exe grolbp.exe regtool.exe a2p.exe grolj4.exe rm.exe a2p5.10.0.exe grops.exe ...

Global site tag (gtag.js) - Google Analytics