shell命令---dirname

用途说明

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相反,是取得文件名称部分。

常用参数

无。

使用示例

示例一 来自手册页的例子

[[email protected] ~]# dirname /usr/bin/sort 
/usr/bin
[[email protected] ~]# dirname stdio.h 
.
[[email protected] ~]#

示例二

[[email protected] ~]# dirname /usr/bin 
/usr
[[email protected] ~]# dirname /usr/bin/ 
/usr

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

示例三 在bash脚本中的运用

Bash代码  

  1. #!/bin/sh
  2. # 跳转到脚本所在目录
  3. cd $(dirname "$0") || exit 1
  4. # 剩下的部分

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

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

时间: 2024-11-18 16:48:32

shell命令---dirname的相关文章

常用shell命令中你所不熟悉的参数

1.   ls: 类似于dos下的dir命令 ls最常用的参数有三个: -a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来. ls –l 该参数显示更详细的文件信息. ls –F 使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数.但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就

苹果Mac OS系统shell命令大全介绍

基本命令 1.列出文件 ls 参数 目录名        例: 看看驱动目录下有什么:ls /System/Library/Extensions 参数 -w 显示中文,-l 详细信息, -a 包括隐藏文件 2.转换目录 cd    例:想到驱动目录下溜达一圈   cd /System/Library/Extensions 3.建立新目录 mkdir 目录名     例:在驱动目录下建一个备份目录 backup     mkdir /System/Library/Extensions/backup

FS Shell命令手册

1.       FS Shell 1.1     简介 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 所有的的FS shell命令使用URI路径作为参数.URI格式是scheme://authority/path.对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file.其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme.一个HDFS文件或目录比如/parent/chi

python 之调用Linux shell命令及相关高级应用

最近根据老大要求,将数据进行同步备份,结合第三方提供的工具.第三方服务其实是有python demo的,本想研究下实际的python sdk搞个demo开发的,但是发现有些组建装起来确实头大,而且本公司线上的python版本也确实够低只能另想办法. 最终确定方案如下:利用第三方提供的相关管理工具(当然是Linux下的),通过python调用系统工具(本人对shell在这方面不是特别感冒,当然文本处理除外),然后将脚本输出重定向到日志文件中,方便检查文件上传成功或失败的具体情况处理. 那么就会设计

批量执行shell命令

虽然目前都实现了自动化如puppet saltstack在环境中的应用,但工作中不可避免的要自己写一些简单的批量执行shell命令的脚本. python paramiko模块是目前使用得较为顺手的模块,执行命令时基本无需要转换,直接将shell命令扔进去执行就OK 简单示例,10个线程同时执行ssh或scp动作,未设置timeout时间,如执行长时间无反应会导致脚本执行问题: #!/usr/bin/python # _*_ coding: utf-8 _*_ import paramiko im

Linux下的C程序,使用函数execlp运行Shell命令

通过C程序运行Shell命令,使用execlp函数 execlp的几个参数分别为:文件名,各个参数,(char*)0 其中"各个参数"部分中的第一个参数就是文件名(相当于文件名要输入两遍) 最后一个参数写(char*)0就可以了 文件b.cpp代码: 循环地输入命令→执行命令,直到按下Ctrl+C结束 #include <stdio.h> #include <string.h> #include <unistd.h> #include <std

使用sh库执行shell命令

python中执行shell命令 之前执行shell命令多是通过os.system(shell命令)的方式来执行,比较麻烦. 了解到sh是一个比subprocess好的库,能够执行shell命令 1.查看ip: [[email protected] myblog]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.31.253.193 netmask 255.255.240.0 broadcas

adb shell 命令详解

adb介绍 SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序.借助这个工具,我们可以管理设备或手机模拟器的状态.还可以进行以下的操作:  1.快速更新设备或手机模拟器中的代码,如应用或Android 系统升级: 2.在设备上运行shell命令: 3.管理设备或手机模拟器上的预定端口: 4.在设备或手机模拟器上复制或粘贴文件

Python之路35-subprocess模块和Python3中常用执行shell命令方法

import subprocess #执行命令,返回命令执行状态 , 0 or 非0 retcode = subprocess.call(["free","-m"])    #返回值可判断执行是否正确,命令执行结果直接返回到屏幕 #执行命令,如果命令结果为0,就正常返回,否则抛异常 result = subprocess.check_call(["ls","-l"]) #执行命令,并返回结果,注意是返回结果,不是打印,下例结果