簡體   English   中英

c ++中是否有任何功能可以檢查在特定路徑中給定的文件是否為腳本(.sh)文件

[英]is there any function in c++ to check whether a file given in a specific path is a script(.sh) file or not

其中一個目錄中存在.sh文件,例如:path = /opt/WD/CD/SCD/temp.sh

c ++有什么功能可以檢查該位置(路徑)中的文件是否為腳本(.sh)文件

bool ValidCommand(const string & path)
{
bool return = true;

    {
    if (!access(path.c_str(),X_OK))
    {
        return = true;
    }
    else
        return = false;
 }

路徑= /opt/WD/CD/SCD/temp.sh

訪問對我不起作用:(

看一下

  • stat-檢查可執行位
  • libmagic-從(ao)哈希行檢測文件類型

也許stat您的需求,否則您可以查看file的來源並查看其工作方式。

您可以使用stat 如果失敗(返回-1),則文件不存在。

您想要多精確。 讀取目錄並查找以.sh結尾的文件名非常簡單。 boost::filesystem擁有實現該功能所需的一切。)但是,當然,如果需要的話,我可以將C ++頭文件file.sh (有點不正常)。 更為准確的測試將涉及讀取文件的開頭:如果前兩個字節為"#!" ,它可能是某種腳本,並且如果第一行匹配"#!\\\\s*(?:/usr)?/bin/sh/[az]*sh" ,那么您幾乎可以確定它是一個外殼程序腳本。 刪除[az]* ,它是Bourne或Posix shell腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM