平常写脚本的时候,可能会需要获取当前所在目录的文件夹名称。我们这里介绍下获取目录名的两种方法(推荐直接使用第一种方法即可):
第一种方法:
直接使用linux系统自带basename命令,然后嵌套pwd命令即可。
basename: 可以显示给定路径的基本名称,例如:basename /home/zcy/test.txt
则输出test.txt ;basename /home/zcy/
输出zcy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@imzcy lib]# basename /usr/local/lib lib [root@imzcy lib]# [root@imzcy lib]# pwd /usr/local/lib [root@imzcy lib]# [root@imzcy lib]# echo $(basename `pwd`) lib [root@imzcy lib]# cd / [root@imzcy /]# echo $(basename `pwd`) / [root@imzcy /]# |
第二种方法:
讲道理直接使用pwd命令获取当前所在位置绝对路径,然后截取/分割的最后一段字符串即可。如下所示:
1 2 3 4 5 6 7 |
[root@imzcy ~]# cd /etc/sysconfig/network-scripts/ [root@imzcy network-scripts]# pwd /etc/sysconfig/network-scripts [root@imzcy network-scripts]# [root@imzcy network-scripts]# pwd |awk -F '/' '{print $NF}' network-scripts [root@imzcy network-scripts]# |
上面那样看着没什么问题,但是那是在当前目录不是根目录的情况下;如果当前处于根目录下,则会出现异常(显示空白):
1 2 3 4 |
[root@imzcy network-scripts]# cd / [root@imzcy /]# pwd |awk -F '/' '{print $NF}' [root@imzcy /]# |
这里其实可以定义为一个变量(zcy=pwd获取的目录名
),然后调用这个变量时判断如果其值为空则替换为指定内容,如: '/'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@imzcy ~]# cd /etc/sysconfig/network-scripts/ [root@imzcy network-scripts]# pwd |awk -F '/' '{print $NF}' network-scripts [root@imzcy network-scripts]# [root@imzcy network-scripts]# zcy=`pwd |awk -F '/' '{print $NF}'` [root@imzcy network-scripts]# echo ${zcy:-"/"} network-scripts [root@imzcy network-scripts]# [root@imzcy network-scripts]# cd / [root@imzcy /]# zcy=`pwd |awk -F '/' '{print $NF}'` [root@imzcy /]# echo ${zcy:-"/"} / [root@imzcy /]# |
完!