导航:首页 > 操作系统 > linux获取文件路径c

linux获取文件路径c

发布时间:2023-06-07 21:12:10

A. 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'"

B. Linux下用c语言打开文件路径问题

C语言程序也是启动一个进程, 所以他也也有环境变量, 默认是继承父进程的环境变量;如果是shell界面直接启动, 那么就是继承shell的环境变量; 如果是其他程序启动这个那么就是继承那个程序的环境变量;
首先没有搞清楚hello.html是可执行程序, 还是不可执行文件;现在我默认把他当作可执行文件
./表示当前目录;即执行当前目录下的hello.html; 如果没有则报错
而直接使用程序(hello.html)默认是先在PATH环境变量中查找; 如果PATH环境变量中没有则报错;

C. linux 下c语言利用readdir获取文件夹目录错误提示:segmentation fault~求达人看程序给解~

不说你了。
while(entry=readdir(dirpt));

这行后面有个分号发现没,给我去掉。
这行就是个空语句。
占位用的。可以这么理解
while(entry=readdir(dirpt))
这里啥都不干;

下面那一行的entry 就成 NULL了,他没有d_name,所以段错误

D. 用c语言编写一个linux程序:通过find一个文件名,系统给一个路径,然后用c语言展开这个路径

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

intmain(intargc,char*argv[])
{
charfile_name[64]={0};
charfile_path[128]={0};
chardir_path[64]={0};
charcmd[256]={0};
intre=0;
FILE*pf=NULL;
char*p=NULL;

printf("请输入文件名: ");
scanf("%s",file_name);

snprintf(cmd,256,"find-name%s>tmp.txt",file_name);//如果文件不在程序运行的本地目录(或者子目录)下,则需要改成find/-namexxxx但耗时会很长
system(cmd);

//文件中取绝对路径
pf=fopen("tmp.txt","r");
if(pf)
{
re=fscanf(pf,"%s",file_path);//只取第一行也就是默认不存在同名文件
if(-1==re)
{
printf("err0 ");
return0;
}
else
{
flcose(pf);
pf=NULL;
}
}
else
{
printf("err1 ");
return0;
}

if(0==strlen(file_path))
{
printf("err2 ");
return0;
}

//获取目录名
p=strstr(file_path,file_name);
if(p)
{
*p='';
strcpy(dir_path,file_path);//也可以不cp直接用file_path
}

//通过c语言展开ls这个路径c语言变量其实我没有理解这句话...先这么做吧
snprintf(cmd,256,"ls%s",dir_path);
system(cmd);

return0;
}

如果哪里有异常就加printf打印出来各个变量

阅读全文

与linux获取文件路径c相关的资料

热点内容
安卓平板如何用外接键盘玩游戏 浏览:289
汉中地面波加密了吗 浏览:796
成龙演的五行拳的电影 浏览:297
python字符串转string 浏览:357
在电影院不要说话用英语怎么说 浏览:807
重生香江开银行建立财团的小说 浏览:128
已上传到服务器什么意思 浏览:449
R命令dim 浏览:653
苹果ipad编程软件 浏览:282
javaodbcaccess 浏览:769
云服务器怎么对接 浏览:417
股票分时图源码 浏览:912
如何查询红帽服务器的日志文件 浏览:200
bcb开发51单片机 浏览:763
程序员男士图片 浏览:708
如何把pdf文件拆分 浏览:749
法国LOVE爱恋完整版观看 浏览:388
python自动安装程序 浏览:253
为什么有压缩分卷才能继续解压 浏览:316
AnalDelinquent 浏览:889