`

我使用过的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  

相关推荐

    前端开源库-dirname-shim

    "umd-dirname" 可能是"dirname-shim" 实现的一部分,确保在UMD环境下也能正常获取目录名。 "文件名浏览器填充程序"可能是指"dirname-shim" 在浏览器环境下对模块路径处理的一种优化策略。由于浏览器环境与服务器...

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

    `dirname`命令用于提取路径中的目录部分,而`basename`则用来获取路径中的文件名或最后一级目录名。例如,如果你有一个路径`/home/user/documents/file.txt`,运行`dirname /home/user/documents/file.txt`会返回`/...

    Linux dirname命令的具体使用

    Linux的dirname命令是一个非常实用的工具,用于从完整的文件路径中提取出目录部分。它主要剥离文件名中的非目录元素,只保留与目录相关的路径。这个命令在日常的文件操作和脚本编写中非常常见,特别是在需要处理路径...

    Linux命令详称--各命令的英文全称

    在Linux操作系统中,命令行是用户与系统交互的主要方式之一,掌握各种命令的英文全称及其功能至关重要。本文将详细讲解部分常见的Linux命令及其用途。 1. `alias`: 创建别名,可以为复杂的命令或命令组合创建简短的...

    aarch64-himix210-linux.tgz

    安装目录被指定为`/opt/linux/x86-arm/aarch64-mix210-linux/`,这符合Linux系统中常见的第三方软件安装路径。 交叉编译是软件开发中的一个重要概念,特别是在多平台环境下的嵌入式系统开发。它允许我们在一个平台...

    Linux学习手册-linux命令大全.docx

    Linux学习手册-linux命令大全是指Linux命令大全,涵盖了多种Linux命令的使用方法和参数解释。以下是Linux学习手册-linux命令大全的知识点: 1. cd命令: cd命令用于更改当前工作目录。使用权限:全部使用者。使用...

    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_学习手册--linux命令大全.doc

    在Linux环境中,`cd` 命令是用户日常操作中最为常用的命令之一,它允许用户在文件系统中切换当前工作目录。无论你是初学者还是经验丰富的系统管理员,熟练掌握`cd`命令的使用都将极大地提高你的工作效率。 - **基本...

    linuxCommand.pdf -(文字版)

    pwd命令:pwd命令用于显示当前工作目录的完整路径。当用户不确定当前位置时,可以使用pwd来查看。 2. 查看文件内容命令 cat命令:cat命令用于查看、创建和合并文件。其基本用法是`cat filename`,将文件内容显示在...

    实验83-Linux命令:mkdir命令1

    mkdir 命令是 Linux 系统中最常用的命令之一,它用来创建目录。该命令创建由 dirname 命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由 dirname 指定的目录;如果给出了一个已经存在的路径,...

    Linux mkdir命令用法详解

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

    Linux命令集合-最全-最新-最方便的

    根据提供的文件标题、描述以及部分内文,我们可以总结出一系列重要的Linux命令及其用法,这些命令对于日常管理和操作Linux系统非常关键。以下是对这些命令的详细解析: ### 1. 目录操作 #### `ls` - **命令**: `ls...

    Linux 系统命令及其使用详解(大全)

    Linux 系统命令及其使用详解(大全) Linux 系统命令是 Linux 系统中最基本也是最重要的组成部分,它们是 Linux 系统的核心。这些命令可以帮助用户管理文件、目录、权限、进程等等方面的内容。本文将详细介绍 Linux ...

    linux命令全集全面介绍linux命令

    `ls` 是Linux中最基本也是最常用的命令之一,用于列出指定目录下的文件和子目录列表。默认情况下,`ls` 只显示当前目录下的非隐藏文件及目录。该命令支持多种选项,以提供更丰富的输出: - **-a**:显示所有文件及...

    UNIX命令大全------

    - `cd`命令用于切换目录,可以使用相对路径或绝对路径。 - **复制文件和目录**: - `cp`命令用于复制文件和目录,`-r`选项用于递归复制目录。 - **移动或重命名**: - `mv`命令不仅可以移动文件,还能重命名文件...

    linux常用命令(很好用)

    以上命令是Linux操作系统中最基础且常用的命令之一,对于初学者来说非常重要。熟练掌握这些命令不仅能够提高工作效率,还能更好地理解和操作Linux系统。建议通过实践练习加深记忆,并逐渐扩展学习更多的高级命令和...

    linux中rmdir命令使用详解.docx

    Linux 中 rmdir 命令使用详解 rmdir 命令是 Linux 中一个常用的命令,主要用来删除空目录。该命令的功能是删除指定的目录,但前提条件是该目录必须为空。如果目录非空,rmdir 命令将无法删除该目录。 命令格式:...

    linux-常用命令

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

Global site tag (gtag.js) - Google Analytics