首页
服装论坛t.vhao.net
专栏
课程

[原创][tools] which完成道理

2019-5-14 23:27 1316

[原创][tools] which完成道理

2019-5-14 23:27
1316

which完成道理

Linux下很多好用的敕令行对象,各类复杂的操作,几个敕令就完成了。本节将要说的就是which敕令。

which简介及类似敕令比较

  • which 检查可履行文件的地位,从全局情况变量PATH外面查找对应的途径,默许是找 bash内所标准的目次
  • whereis 检查文件的地位,合营参数-b,用于法式榜样名的搜刮,从linux数据库查找。
  • locate 合营数据库检查文件地位。
  • find 实际搜索硬盘查询文件称号,效力低。

windows下也能够应用Linux敕令,只需你装置了Cygwin等法式榜样便可;固然,假设你装置了git,也能够找到很多Linux敕令对象(我装置在D盘了,目次为D:\Program Files\Git\usr\bin\which.exe)。

 

下面演示下法式榜样的应用:

C:\Users\Administrator>"D:\Program Files\Git\usr\bin\which.exe" cmd

/c/Windows/system32/cmd


C:\Users\Administrator>"D:\Program Files\Git\usr\bin\which.exe" adb

/usr/bin/which: no adb in (/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Program Files/Microsoft SQL Server/110/Tools/Binn:/cmd:/d/Program Files/TortoiseGit/bin:/c/Users/Administrator/AppData/Local/Microsoft/WindowsApps)

可以看出,假设能找到目标法式榜样cmd,which将显示其全途径;假设没有找到目标法式榜样,将提示出未找到,并打印搜刮途径。

which完成道理

从下面的例子可以猜想,which经过过程体系搜刮规矩,查找相干途径下能否有目标法式榜样。

 

详细完成可以检查源码,源码地址为http://mirrors.ustc.edu.cn/gnu/which/which-2.21.tar.gz,个中找到which.c可以检查详细完成。

另类完成

windows有多个雷同称号应用的时辰,常常碰到须要确认法式榜样途径的情况,比如adb.exe,常常由于多个版本招致异常成果。一向想在windows下写个类似的which法式榜样的功能,又认为太过琐碎,完成起来费事。不过,明天忽发奇想,LoadLibrary函数加载PE文件的搜刮途径和which搜刮途径千篇一概,何不经过过程LoadLibrary函数完成which功能呢。

 

因而写了下面代码:

int main(int argc, char **argv)

{

    if (argc != 2)

    {

        std::cout << "必须有一个参数!\n";

        return -1;

    }


    HMODULE module = LoadLibraryA(argv[1]);

    printf("module = 0X%08X\n", (unsigned int)module);


    char szModuleFileName[MAX_PATH] = { 0 };

    GetModuleFileNameA(module, szModuleFileName, MAX_PATH);

    printf("%s 的全途径是 %s\n", argv[1], szModuleFileName);

    getchar();


    return 0;

}

设置adb情况变量前,运转成果以下图所示,不克不及精确查找到目标过程途径:

 

设置adb情况变量前

 

设置adb情况变量后,运转成果以下图所示,精确地将目标过程途径打印了出来:

 

设置adb情况变量后

 

相干源码已上传git:https://github.com/ninecents/MyOpen/tree/master/tools/tools

广而告之

九分出品,迎接吐槽。更多出色,可之前去博客地址



[推荐]看雪企服平台,供给安然分析、定制项目开辟、APP等级保护、渗透渗出测试等安然办事!

最后于 2019-5-14 23:29 被kinghzking编辑 ,缘由:
上一主题 下一主题
最新答复 (7)
junkboy 2019-5-15 00:52
2
1
Windows 有一个敕令叫 where,有点像 Linux 的 whereis,它的第一行就相当于 which 了
rongge 2019-5-15 07:14
3
0
要PATH变量搜刮目次有的才行
kinghzking 1 2019-5-15 08:33
4
0
rongge 要PATH变量搜刮目次有的才行
loadlibrary也搜刮了path,是还有其他没推敲到吗
kinghzking 1 2019-5-15 09:11
5
0
junkboy Windows 有一个敕令叫 where,有点像 Linux 的 whereis,它的第一行就相当于 which 了
受教了,今后不再怕法式榜样走丢了。
xie风腾 2019-5-15 14:45
6
0

进修了,多谢楼主分享
kinghzking 1 2019-5-15 15:27
7
0
xie风腾 [em_4] 进修了,多谢楼主分享
谦虚了
zzage 1 2019-5-15 15:43
8
0
SearchPath
https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa365527(v=vs.85).aspx
旅客
登录 | 注册 方可回帖
前往