linux 系统函数之 (dirname, basename)

通过系统调用basename(), dirname()得到当前路径下的文件名和目录名 问题提出: 最近小组的小伙伴们都在写my_ls,myshell, 可能经常会遇到这样的问题, 需要得到当前路径下的文件名 比如当前绝对路径:/home/dela/dela_c, 现在想得到dela_c怎么办, 反正我在实现这个问题的时候费了一番功夫 现在跟小伙伴们分享一个很简单的方法, 就是:basename和dirname系统调用!!! 函数声明 头文件: #inclu 阅读详情

        除非你的原件考虑跨平台。

       在linux编程多使用一些系统函数真的很方便,哎没办法越来越懒~~~~~~

       今天记录一下dirname 和basename这两个简单的处理文件路径的linux系统函数。

      

       

        头文件:

                         #include <libgen.h>

        函数定义:

                         char *dirname(char *path);

                         char *basename(char *path);

        功能描述:

                        char *dirname(char *path);

                        功能: 截取path中的目录路径返回。

                        char *basename(char *path);

                        功能: 截取path中的去目录部分的最后的文件或路径名。

         返回值:

                       char *dirname(char *path);

                       成功: 返回截取path中的目录路径指针。

                       失败: 返回 NULL

                       char *basename(char *path);

                       成功: 返回截取path中的去目录部分的最后的文件或路径名指针。

                       失败: 返回 NULL

 

 

示例图:

                       path         dirname    basename
                       "/usr/lib"    "/usr"    "lib"
                       "/usr/"       "/"       "usr"
                       "usr"         "."       "usr"
                       "/"           "/"       "/"
                       "."           "."       "."
                       ".."          "."       ".."

           

代码示例:              

                     char *dirc, *basec, *bname, *dname;
                     char *path = "/etc/passwd";

                     dirc = strdup(path);
                     basec = strdup(path);
                     dname = dirname(dirc);
                     bname = basename(basec);
                     printf("dirname=%s, basename=%s\n", dname, bname);

 

 

【C语言】basename函数 basename()返回的字符串指针是指向原输入路径字符串中的一部分,并没有新分配内存。具体来说,basename()的返回值是指向路径输入字符串中最后一个'/'字符后面的子串,只是将原字符串中的一段取出来返回,没有复制和新分配内存。这里name指向的是path字符串中"file.txt"的首地址,并没有分配新的内存。basename()不会修改原输入字符串,只是返回一个指针,指向路径中的文件名部分。给定一个文件路径,basename会返回指向路径中最后一个'/'后的文件名部分字符串的指针。 阅读详情

相关推荐

《Linux系统调用:realpath,dirname,basename》

一、介绍 realpath()作用是解析路径名 dirname()作用是将路径名分解成目录部分 basename()作用是将路径名分解成文件名部分,也就是dirname()+basename()就是完成的路径文件名 二、接口函数 #include <limits.h> #include <stdlib.h> // realpath()库函数对path(以空字符...

yexiang优快云的专栏 1317

C语言文件名处理

0. 背景介绍 在之前的博客【获取指定目录下的所有文件名】中介绍了如何在指定文件目录下获取所有有效文件名,这个博客中将介绍一些关于文件名的常见操作。 1. 分离目录和文件名 需求:输入为一个文件的绝对或者相对路径,输出文件所在的目录和文件名表示 解决方案:在Linux平台下的头文件“libgen.h”中,提供了dirname和basename来实现目的。 dirname函数 dirname函数以"/"为分隔符对路径进行分隔,返回值为文件目录路径。如果输入的文件路径没有"/",则返回"...

hello_dear_you的博客 2843

【运维】linux shell 编程之函数使用

linux shell 编程关于函数的详细使用

congge_study的博客 1万+

linux C之basename, dirname函数

环境: $ uname -r 2.6.32-754.el6.x86_64 函数定义: // /usr/include/libgen.h extern char *__xpg_basename (char *__path) __THROW; #define basename __xpg_basename 这个basename函数可以返回路径最后一个路径分隔符之后的内容, 比如bas...

开心就好的专栏 8571

免费 AIS船舶轨迹预测 数据集 分享 (可用于长周期轨迹预测)

论文中使用的数据由提供。有关预处理步骤的详细信息,请参阅。

qq_43747519的博客 1万+

用MFRC522+STM32打造智能门禁:从硬件选型到云端控制全流程

本文详细介绍了基于STM32微控制器和MFRC522射频模块构建智能门禁系统的完整流程。从硬件选型、电路设计、底层驱动开发,到系统软件架构与状态机设计,并最终实现通过ESP8266模块接入云端平台(如OneNET)进行远程控制和数据可视化。项目深入探讨了MFRC522的SPI通信、卡片操作流程、天线调试以及云端MQTT集成等关键技术,为嵌入式开发者提供了一个从本地感知到云端管控的物联网项目实战参考。

raspberrypi5的博客 741

Linux下dirname命令详解及C/C++代码实现

dirname命令的基本用法非常简单——只需写下命令名,后跟文件的绝对名称即可。 在输出中,将获得完整的目录树,但文件名除外。 linux dirname 命令 以下是 dirname 命令的通用语法: dirname NAME 以下是该工具的手册页对其的描述: 输出每个 NAME 并删除其最后一个非斜杠组件并删除尾部斜杠; 如果 NAME 包含 没有/,输出’.’ (表示当前目录)。 dirname /opt/code/linux_command_code/ dirname 处理多个目录?

chen1415886044的博客 5485

SpringBoot+Vue前后端分离项目实战:个人博客系统

MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,后台和前台均通过JSON数据做交互,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理、友链管理、个人资料/博客信息管理等。

Myles'Blog 1万+

C语言函数大全-- _w 开头的函数(3)

本篇介绍 C 语言中 _w 开头的函数(3)

Huazie 1382

当AI换脸遇上内容审核:Facefusion NSFW检测的技术伦理与用户自主权之争

本文探讨了Facefusion开源AI换脸工具中NSFW检测机制的技术伦理困境与用户自主权之争。分析了其多层次防御机制的技术实现与社区规避方法,揭示了开源软件在安全与自由之间的平衡难题,并提出了分层权限设计等社区实践方案。

weixin_29165725的博客 678

R语言clusterProfiler实战:GO与KEGG富集分析从入门到精通

本文提供了一份详尽的R语言clusterProfiler实战指南,从环境配置、数据导入、基因ID转换到GO与KEGG富集分析及可视化,手把手教你解读生物学意义。文章重点介绍了如何利用clusterProfiler这一强大工具,将差异基因列表转化为清晰的生物学通路与功能故事,并分享了结果解读、可视化以及处理非模式生物等进阶技巧与避坑指南。

weixin_29044713的博客 162

linux 系统函数之 (dirname, basename)【转】

转自:http://blog.youkuaiyun.com/peter_cloud/article/details/9308333 版权声明:本文为博主原创文章,未经博主允许不得转载。 除非你的原件考虑跨平台。 在Linux编程多使用一些系统函数真的很方便,哎没办法越来越懒~~~~~~ 今天记录一下dirname 和basename这两个简单...

weixin_33806300的博客 345

[LaTeX] 调整参考文献的格式(References),包括作者名缩写,行距,字体,引用顺序等等

在此记录我对LaTeX中参考文献references的尝试,主要涵盖如题几个方面。

the Blog of 等不到天亮丶等时光 4万+

linux系统函数之(dirname和basename)

转自:http://blog.youkuaiyun.com/peter_cloud/article/details/9308333 版权声明:本文为博主原创文章,未经博主允许不得转载。 除非你的原件考虑跨平台。 在Linux编程多使用...

电子设计研习笔记的博客 1018

Ubuntu 22.04下Colmap带CUDA支持的编译安装全攻略(附显卡架构查询指南)

本文详细指导在Ubuntu 22.04系统上从源码编译安装支持CUDA加速的Colmap,解决了官方版本无GPU支持导致处理速度慢的问题。重点包括环境依赖准备、CUDA工具链配置、显卡计算能力查询以及完整的编译安装步骤,旨在帮助研究者和开发者高效部署高性能三维重建工具。

gold8的专栏 344

R语言使用rms包的psm函数拟合参数生存模型(parametric survival model)、并可视化列线图(诺模图、nomogram)

R语言使用rms包的psm函数拟合参数生存模型(parametric survival model)、并可视化列线图(诺模图、nomogram)

statistics+insight+vista+power 903

Shell中的函数

shell中函数、脚本、命令意思有些相似,都是指为了实现某个功能的一段代码的集合,可以包装起来完成某些功能。shell会提供一些既有的可以直接执行调用的脚本,系统函数也分为内置外置,比如外置的脚本直接放在 /bin 目录下,就可以直接执行了如date函数,显示时间及时间戳2024年 10月 22日 星期二 16:42:05 CST1729586538date后面一定要加一个空格在这里,相当于调用了date函数,再使用+%s的参数,然后用$()包起来所有的命令都能在脚本里作为系统函数调用。

m0_73716246的博客 944

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大数据之Shell:函数(一)

目录1.系统函数1.1:basename基本语法1.2:案例实操2.1: dirname基本语法2.2:案例实操 1.系统函数 1.1:basename基本语法 basename [string / pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。 选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。 1.2:案例实操 (1)截取该/home/

weixin_43597208的博客 111

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Centos7 Shell -函数

系统函数 basename 功能:返回完整路径最后 / 的部分,常用于获取文件名 基本语法 basename [pathname] [suffix] basename [string] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。 选项: suffix为后缀,如果suffix被指定了,basename会将pa...

zlh0816 1506

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Linux——Shell编程_函数

1、基本语法Action;2、经验技巧(1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其他语言一样先编译。(2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)案例:/bin/bashs=$[$1+$2]echo $sread -p"请输入第一个整数:" aread -p"请输入第二个整数:" becho "和:" $sum。

m0_57086839的博客 228

Linux入门(十八)read&函数

2、请返回/root/test_shell_code/test_read.sh 的/root/test_shell_codebuf。1、请返回/root/test_shell_code/test_read.sh 的test_read.sh部分。-t 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。功能:返回完整路径最后/前面的部分,常用于返回路径部分。2、读取控制台输入一个num值,在10秒内输入。1、计算输入的两个参数的和,getSum。read 选项 参数。

will_net的博客 374

findfile函数 部分文件名_CentOS「linux」学习笔记26:shell编程系统函数和自定义函数

linux基础操作:主要介绍了shell编程系统函数和自定义函数。1.系统函数1.1.basename函数[返回后半部分,常用来获取文件或目录名,是系统内置的函数]注意事项:basename 后面的实际上是字符串并不会读取目录和文件,即使输入的是不存在的路径信息也会正常返回。相当于截取特定的字符串。例子1:basename /home/test/myshell.sh表示返回最后一个/后面的内容my...

weixin_39717825的博客 169
上一篇: HDFS-RAID使用Erasure Code来实现HDFS的数据冗余
下一篇: linux 系统函数之 (localtime, localtime_r, strftime)
peter_cloud
博客等级 码龄15年 24粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值