获取全路径文件名的文件名/文件位置/文件的后缀名/文件的前缀

在shell编程中,对于path file name,我们可能需要从该字符串中提取出文件所在路径/文件名/文件后缀名/文件前缀,方法实现如下所示:

    $ pfName=/home/user/test.txt

    # 获取全路径文件名
    $ echo $pfName
    /home/user/test.txt

    # 获取文件名
    $ echo ${pfName##*/}
    test.txt

    # 获取该文件的位置
    $ echo ${pfName%/*}
    /home/user

    # 获取文件的后缀名
    $ echo ${pfName##*.}
    txt

    # 仅仅获取文件的前缀
    $ echo ${pfName##*/} | sed -r 's/^(.*)\..*$/\1/g'


readline 和 basename命令的使用

在sysfs目录下描述该设备的子目录中,有一个到包含这个驱动的模块的符号链接module。我们要的是这个符号链接的目标。可以通过readline命令得到它,输出像这样:

$ readlink /sys/class/net/eth0/device/driver/module

../../../../module/e1000

由于我们只关心模块的名称,要去掉readlink输出中的多余路径,只留下最右面的部分(模块名称)。这是basename命令所做的工作。直接传递路径给basename,它将输出:

$ basename ../../../../module/e1000

e1000

我们把readlink输出的一级级的符号链接所指的路径,传递给basename程序,使整个处理过程只用一行就能完成。

$ basename `readlink /sys/class/net/eth0/device/driver/module`

e1000

你可能感兴趣的:(shell,basename,readlink)