Linux shell 提取文件名和目录名的方法

Linux shell 中提取文件名和目录名的方法通常使用shell变量和一些特定命令。以下是提取文件名和目录名的几种方法:

  1. 使用$变量获取当前目录和文件名

在Linux shell中,我们可以使用一些特殊的变量获取当前目录和文件名。其中,$PWD变量表示当前目录的路径,$0变量表示当前脚本的文件名,$1变量表示脚本后的第一个参数(文件名)。

例如,我们可以在Linux shell命令行中使用以下命令获取当前目录和脚本文件名:

echo $PWD
echo $0

输出结果类似于:

/home/user
test.sh
  1. 使用basename和dirname命令

另一种提取文件名和目录名的方法是使用basename和dirname命令。basename命令可以从给定的路径中获取文件名,dirname命令可以从给定的路径中获取目录名。

例如,假设我们有一个文件路径/path/to/file.txt ,我们可以使用以下命令提取其文件名和目录名:

# 获取文件名
basename /path/to/file.txt
# 输出结果:file.txt

# 获取目录名
dirname /path/to/file.txt
# 输出结果:/path/to

示例1:提取文件名

假设我们有一个文本文件 "test.txt",它的绝对路径为 "/home/user/documents/test.txt"。我们可以使用以下命令提取文件名:

# 使用basename命令提取文件名
basename /home/user/documents/test.txt
# 输出结果: test.txt

# 使用$变量来提取文件名
filename=/home/user/documents/test.txt
echo ${filename##*/}
# 输出结果: test.txt

在第二个示例中,##*/是一种使用shell变量来提取文件名的更简单的方法。这个语法可以帮助我们剥离字符串中的目录路径,并保留文件名。

示例2:提取目录名

假设我们有一个文本文件 "test.txt",它的绝对路径为 "/home/user/documents/test.txt"。我们可以使用以下命令来提取目录名:

# 使用dirname命令提取目录名
dirname /home/user/documents/test.txt
# 输出结果: /home/user/documents

# 使用$变量来提取目录名
filename=/home/user/documents/test.txt
echo $(dirname $filename)
# 输出结果: /home/user/documents

在第二个示例中,我们使用了$(…)来调用dirname命令。这种用法也是可以的,这意味着我们需要使用在命令替换中常用的括号方式来执行命令。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux shell 提取文件名和目录名的方法 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 百度编辑器ueditor的使用方法

    百度编辑器ueditor的使用方法 ueditor是一款由百度开发的富文本编辑器,通常被用于网站等前端开发中。它可以轻松地嵌入到网页中,提供了许多丰富的功能,包括字体样式、文字颜色、表格、多媒体插入等等,并且可以与常见的后台语言(如:PHP、Java、Node.js等)实现良好的集成。本文将介绍如何在你的网站上使用百度编辑器ueditor。 第一步:下载ue…

    其他 2023年3月28日
    00
  • Spring超详细讲解IOC与解耦合

    下面我将为您分享“Spring超详细讲解IOC与解耦合”的攻略。 Spring超详细讲解IOC与解耦合 什么是IOC IOC全称为Inversion of Control,即控制反转。它是指在开发中,将对象的创建和对象之间的调用交给Spring容器去完成,而不是由程序员主动去创建和调用,从而实现对象之间的解耦合。 IOC的实现原理 Spring通过IOC容器…

    other 2023年6月27日
    00
  • 使用xssfworkbook读取excel

    以下是详细讲解“使用XSSFWorkbook读取Excel的完整攻略,过程中包含两个示例说明: 使用XSSFWorkbook读取Excel Apache POI是一个用于读写Microsoft Office格式文件的Java库,其中包括Excel文件。XSSFWorkbook是POI库中用于读取和写入.xlsx格式文件的类。本攻略将介绍如何使用XSSFWor…

    other 2023年5月10日
    00
  • Unix文件系统和pwd命令实现详解

    Unix 文件系统和 pwd 命令实现详解 Unix 文件系统是一个树形结构的文件系统,是现代操作系统中应用广泛的文件系统之一。Unix 文件系统定义了文件的操作以及它们在系统中的位置。 Unix 文件系统的结构 Unix 文件系统中的每个文件和目录都有一个唯一的路径。路径的第一个部分是根目录 /。根目录下可以包含多个子目录。每个子目录可以包含文件、子目录和…

    other 2023年6月26日
    00
  • 带你了解Java的类和对象

    带你了解Java的类和对象 什么是类和对象? 在Java中,类是一种用于定义对象的蓝图或模板。它描述了对象的属性和行为。对象是类的实例,它具有类定义的属性和行为。 如何定义一个类? 在Java中,可以使用class关键字来定义一个类。以下是定义一个简单类的示例: public class Person { // 属性 private String name;…

    other 2023年10月15日
    00
  • Java 方法引用与ambda表达式的联系

    Java 方法引用和Lambda表达式都是Java 8中引入的新特性,它们都是为了简化代码而生的,它们之间有很大的联系。在Java中,方法引用和Lambda表达式都是为了将方法作为参数传递给其他方法来完成一些功能。 Java Lambda表达式 Lambda表达式是一个匿名函数,它可以传递给其他方法作为参数。Lambda表达式通常用于函数式接口中,这些接口只…

    other 2023年6月26日
    00
  • 新顶级后缀.ink获资质审批成域名圈“新宠”

    新顶级后缀.ink获资质审批成域名圈“新宠”攻略 简介 新顶级后缀.ink是一种新的域名后缀,它在获得资质审批后成为域名圈的“新宠”。本攻略将详细介绍如何获得资质审批以及如何利用这一新顶级后缀来注册域名。 步骤一:了解资质审批要求 在开始之前,首先需要了解获得资质审批的要求。通常,这些要求可能包括但不限于:- 注册商要求:确定哪些注册商支持新顶级后缀.ink…

    other 2023年8月5日
    00
  • 关于STL中list容器的一些总结

    关于STL中list容器的一些总结 list简介 list 容器是C++标准模板库(STL)提供的一种链表容器。与数组不同,链表中的元素在内存中不是连续排列的,而是存在于通过链接指针相连的不同的结点中。 list容器的特点有:- 双向迭代器- 随机访问被禁用- 支持在list的任何位置快速插入、删除元素- 不支持随机访问 list容器的使用 基本操作 创建和…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部