Linux系统中获取路径的文件名的方法

   这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下

  代码如下:

  [[email protected] ]#basename /root/aaa/bbb/dabu.txt

  显示:

  代码如下:

  dabu.txt #获取路径的文件名

  shell脚本中如何获得脚本文件所在路径?

  方法一:

  代码如下:

  [[email protected] ]#DIR=$(cd "$(dirname "$0")"; pwd)

[[email protected] ]#echo $DIR

  但是像这种dirname "$0"这种写法,在遇到source命令时会得到错误的结果。

  方法二:

  代码如下:

  [[email protected] ]#echo "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

  上面一行命令可以获得脚本的绝对轮径,无论你在何处调用这个脚本。

  但是如果含有软链接,就无法使用了。所以,我们为了能正确解析指向脚本的软链接,可以使用下面的多行命令:

  代码如下:

  SOURCE="${BASH_SOURCE[0]}"

  while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink

  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

  SOURCE="$(readlink "$SOURCE")"

  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located

  done

  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

  也可与source,bash -c命令使用

  但是,如果你在脚本中使用先cd切换到其他目录,在运行时上面的命令片段时,则上面的命令不能等到正确的结果。可以参考关于$CDPATH 陷阱的文章。想理解它如何其作用的,可以运行下面的代码:

  代码如下:

  #!/bin/bash

SOURCE="${BASH_SOURCE[0]}"

  while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink

  TARGET="$(readlink "$SOURCE")"

  if [[ $SOURCE == /* ]]; then

  echo "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'"

  SOURCE="$TARGET"

  else

  DIR="$( dirname "$SOURCE" )"

  echo "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')"

  SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located

  fi

  done

  echo "SOURCE is '$SOURCE'"

  RDIR="$( dirname "$SOURCE" )"

  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

  if [ "$DIR" != "$RDIR" ]; then

  echo "DIR '$RDIR' resolves to '$DIR'"

  fi

  echo "DIR is '$DIR'"

时间: 2016-06-27

Linux系统中获取路径的文件名的方法的相关文章

在Linux系统中安装varnish-cache配置及体验方法

  varnish-cache在linux系统中是一套高效能的反向网站快取服务器,这样的服务器很大的方便了电脑的使用,但是在电脑上要怎么的进行安装和体验呢!现在我们一起来看看吧! 主要理解下vcl 几个状态,主要是 vcl-recv 和 vcl-fetch 基本就够用了 vcl-recv 一般可以指定 使用哪个backend 可以设定 pass 规则 vcl-fetch 主要处理 缓存规则,设置缓存时间 beresp.ttl 1.手动清理缓存的命令(3.0版和以前有出入来着): sudo var

基于Linux系统中查看硬件等信息的方法详解_Linux

本文介绍下,linux下查看硬件信息的命令与方法,包括主板序列号.cpu信息.内存信息.硬盘信息.网卡信息等.1,主板信息.查看主板的序列号 #使用命令dmidecode | grep -i 'serial number'#查看板卡信息cat /proc/pci 2,cpu信息 #通过/proc文件系统1) cat /proc/cpuinfo#通过查看开机信息2) dmesg | grep -i 'cpu'#3)dmidecode -t processor3,在linux系统中查看硬盘信息,常用

在Linux系统中使用蓝牙功能的基本方法

  首先确定硬件上有支持蓝牙的设备,然后运行如下命令,就可以开到我们的蓝牙设备了: 代码如下: lsusb 运行hciconfig可以看到: 从上图可以看出,我们的蓝牙设备是hci0 运行hcitool dev可以看到我们的蓝牙设备的硬件地址 运行hcitoo --help 可以查看更多相关命令 然后我们激活它: 代码如下: sudo hciconfig hci0 up 要注意的是,激活前蓝牙必须是打开的,否则会出现如下错误: 然后我们开始扫描了: 代码如下: hcitool scan 可以看到

Linux系统中netstat命令的基本使用方法

  在计算中,netstat(网络统计数据)是一个命令行工具,它显示传输控制协议的网络连接(传入和传出),路由表,和一个数字网络接口 (网络接口控制器或者软件定义的网络接口)和网络协议的统计数据.它可在类Unix操作系统,包括OS X,Linux,Solaris和BSD,并提供对基于Windows NT的操作系统,包括Windows XP,Windows Vista中,Windows 7和Windows8. 本文主要介绍netstat在Linux的使用 netstat man的帮助手册会有提示信

在Linux系统中检查glibc版本信息的方法

  GNU C库(glibc)是标准C库的GNU实现.glibc是GNU工具链的关键组件,用于和二进制工具和编译器一起使用,为目标架构生成用户空间应用程序. 当从源码进行构建时,一些Linux程序可能需要链接到某个特定版本的glibc.在这种情况下,你可能想要检查已安装的glibc信息以查看是否满足依赖关系. 这里介绍几种简单的方法,方便你检查Linux上的glibc版本. 方法一 下面给出了命令行下检查GNU C库的简单命令. 代码如下: $ ldd --version 在本例中,glibc版

C#中获取路径的几种方法

  1. 在.Net中web开发时 (1) ~/在runat=server的控件中会自动被解析为Request.ApplicationPath的值,是当前应用程序的目录 如 ~/userCommunity/index.aspx则对应为/HENU.RCenter.Internal/UserCommunity (2) ./表示当前目录 (3)../表示上一层目录 如UserCommunity文件夹下的文件中可以以:../module/来访问module中的文件 2 获取当前请求页面的路径:Reque

linux系统中优化Mysql的运行环境方法

一.修改Linux默认的IO调度算法. linux默认的IO调度算法为cfq,需要修改为dealine,如果是SSD或者PCIe-SSD设备,需要修改为noop,可以使用下面两种修改方式. 1.在线动态修改,重启失效. echo "deadline" > /sys/block/sda/queue/scheduler tips:这里的sda代表你需要修改的硬盘,根据你实际情况修改. 2.修改/etc/grub.conf,永久生效. 修改/etc/grub.conf配置文件,在ker

Linux系统中安装gcc和kernel-devel的方法_Linux

gcc:liunx环境中的c/c++编译器,安装软件需要它 kernel-devel:linux内核,安装软件时需要编译内核,故需要保持内核版本一致性 1.Linux操作系统安装好以后,查看gcc是否已经安装: # gcc -v //如果后面出现一大段,则已经安装: 2.查看内核是否一致: #uname -r  #rpm -q kernel-devel 如果两个命令得到的版本号一致,那么恭喜你可以直接安装Vmware Tools了:不过一般情况下,两个版本是不一致的,或者是提示kernel-de

解决WebLogic在Linux系统中启动关闭很慢的方法

风信网(ithov.com)原创文章:WebLogic是一个基于Javaee架构的中间件,BEA WebLogic是用于开发.集成.部署和管理大型分布式Web应用.网络应用和数据库应用的Javahttp://www.aliyun.com/zixun/aggregation/15818.html">应用服务器.将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发.集成.部署和管理之中. 在管理AS 5.1的过程中,发现启动关闭weblogic很慢,查找了一下