LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1198|回复: 15

获得目录[已解决]

[复制链接]
发表于 2004-2-19 20:48:20 | 显示全部楼层 |阅读模式
如何实现函数的返回值是一个特定的目录名?
前提是编译前不知道该目录名?仅知道该目录下的一个文件名。
谢谢!
发表于 2004-2-19 21:09:53 | 显示全部楼层
  1. find / -type f -name "filename" -exec dirname {} \; 2>/dev/null
复制代码
发表于 2004-2-20 09:02:44 | 显示全部楼层
xggabc 好像问的是 C 的问题, 要不何来编译只说 ?
 楼主| 发表于 2004-2-20 11:27:11 | 显示全部楼层

请教

对上述问题
我按find /| grep "filename" > file的方式来做
但如何提取文件file中的字符串并将其赋值给一个变量(用SHELL如何实现)
最后返回这个变量
谢谢!
发表于 2004-2-20 11:50:38 | 显示全部楼层

回复: 请教

最初由 xggabc 发表
对上述问题
我按find /| grep "filename" > file的方式来做
但如何提取文件file中的字符串并将其赋值给一个变量(用SHELL如何实现)
最后返回这个变量
谢谢!

兄弟可以把问题描述清楚吗(我听着胡里胡涂的)?这样好解决问题啊。
何必用find + grep呢,find本身就有-name选项,就是按名称查找。
要是赋值变量,大可在(针对shell而言)函数外设置一全局变量,然后在函数里面赋值,var=$(find / -type f -name "filename" -exec dirname {} \; 2>/dev/null)
 楼主| 发表于 2004-2-20 15:57:53 | 显示全部楼层

程序

就是想得到一个文件或者文件夹所在的目录,并返回该目录字符串
谢谢!
发表于 2004-2-20 16:08:31 | 显示全部楼层
-(root@daisy)--(~/trash)-
[0] % find -name foo.txt
./txt/foo.txt
-(root@daisy)--(~/trash)-
[0] % dirname $(find -name foo.txt)
./txt
-(root@daisy)--(~/trash)-
[0] %

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2004-2-21 10:26:39 | 显示全部楼层

安装时要找到目录

用SHELL编写安装脚本时
第一种是用rpm时我能找到一个目录
第二种是在自编译时又是另一个目录
现在能找到目录
但如何在if语句中区别rpm和自编译的情况
即if [?]
else [?]
谢谢
发表于 2004-2-21 10:52:18 | 显示全部楼层

回复: 安装时要找到目录

最初由 xggabc 发表
用SHELL编写安装脚本时
第一种是用rpm时我能找到一个目录
第二种是在自编译时又是另一个目录
现在能找到目录
但如何在if语句中区别rpm和自编译的情况
即if [?]
else [?]
谢谢

终于有点明白兄弟的意思啦。你是想寻找每一个软件的二进制文件以及相关文件(无论rpm方式还是make方式)的安装路径是吧。
rpm方式:
rpm -ql <command>
make方式:
type -path <command>
或者
whereis <command>

修正一下,默认情况下make方式的安装前缀为/usr/local,而rpm包的前缀为/usr。至于/usr/local以及/usr的区别,参见lfs文档。
http://lfs.linuxsir.cn/htdocs/blfscvs/introduction/position.html
rpm可以很方便地卸载软件,因为它有安装数据储备库;make方式可以用make uninstall或者用一些分析Makefile的卸载工具。
除了路径不同,程序还是原来的程序,两种安装方式没有什么区别。
发表于 2004-2-21 12:00:38 | 显示全部楼层
用SHELL编写安装脚本时
当用户输入rpm时和用自编译时
在脚本程序中用什么条件能区分这两种情况,使系统自动找到相关的目录
即if [?]
else [?]
?是什么条件,才能返回不同的目录
我不熟悉这个?是什么

大致意思:
if [ rpm ]
返回一个目录
else [ 自编译 ]
返回另一个目录
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表