• linux basename 和 dirname 获取当前路径


    有同学问,如何/dir1/dir2/dir3/file中的,前半部分:/dir1/dir2/dir3和最后部分file,这个用字符串分隔及${str//}来处理还比较难办,这个时候basename和dirname命令就很方便了。

    # 获取当前路径

    # 查看当前路径

    [dirname]

    手册页“Print  NAME  with  its  trailing  /component  removed; if NAME contains no /’s, output ‘.’ (meaning the current directory).”该命令可以取给定路径的目录部分(strip non-directory suffix from file name)。这个命令很少直接在shell命令行中使用,我们一般把它用在shell脚本中,用于取得脚本文件所在目录,然后将当前目录切换过去。

    ★常用示例

    示例一:       # /usr/bin为获取到的目录
    [root@local ~]# dirname /usr/bin/sort       	
    /usr/bin
    
    示例二:       # 如无/则获取当前目录.
    [root@local ~]# dirname stdio.h             	
    .
    
    示例三:   	  # 含/和无/,其结果和不含/效果一样的
    [root@local ~]# dirname /usr/bin            	
    /usr
    [root@local ~]# dirname /usr/bin/               
    /usr
    
    示例四:       # 获取多个目录列表,以换行为分隔
    [root@local ~]# dirname dir1/file1 dir2/file2	
    dir1
    dir2
    
    示例五:       # 获取多个目录列表,以NUL为分隔
    [root@local ~]# dirname -z dir1/file1 dir2/file2	
    dir1dir2

    ★脚本用法

    !/bin/bash  
      
    # 跳转到脚本所在目录  
    cd $(dirname "$0") || exit 1  
      
    # 对上面的脚本的解释
    $0          	  当前Shell程序的文件名
    dirname $0  	  获取当前Shell程序的路径
    cd $(dirname $0)  进入当前Shell程序的目录
    exit 1            如果获取不到则退出脚本  

    [basename]

    basename命令用于去掉文件名的目录和后缀(strip directory and suffix from filenames),对应的dirname命令用于截取目录

    常用示例

    示例一        # 获取到最后文件名sort
    [root@local ~]# basename /usr/bin/sort 
    sort
    
    示例二        # 去除文件名后缀
    [root@local ~]# basename /usr/include/stdio.h .h 
    stdio
    [root@local ~]# basename /usr/include/stdio.h stdio.h 
    stdio.h
    
    示例三        # 去除文件名后缀方式的另外一种方法
    [root@local ~]# basename -s .h /usr/include/stdio.h 
    stdio
    
    示例四        # 获取多个目录下的文件列表,以换行符
    为分隔
    [root@local ~]# basename -a dir1/file1 dir2/file2
    file1
    file2
    
    示例五        # 获取多个目录下的文件列表,以NUL为分隔
    [root@local ~]# basename -a -z dir1/file1 dir2/file2
    file1file2

  • 相关阅读:
    【从0开始Tornado网站】主页登录和显示的最新文章
    2014阿里巴巴网上笔试题-文章3大标题-公共最长的字符串长度
    取消改变基本数据——应用备忘录模式
    Hibernate进化史-------Hibernate概要
    xcode 快捷键
    Android多画面幻灯片:ViewPager基础上,利用与PagerTabStrip出生缺陷(源代码)
    uva 11991
    创建与删除索引
    HDU1203_I NEED A OFFER!【01背包】
    Java面试宝典2013版(超长版)
  • 原文地址:https://www.cnblogs.com/tangda/p/14957042.html
Copyright © 2020-2023  润新知