나는 단순히 명령을 실행하는 것에 대해 매우 걱정할 것입니다. 그것이 무엇을해야하는지 알더라도 시스템에 같은 이름의 다른 프로그램이 있다면 (우연히 또는 악의적으로) 명령을 실행하는 것만으로는 이상하고 아마도 나쁜 것일 수 있습니다. AFAIK, 제대로 이것을하는 것은 시스템 특정 일이 될 것이고 내가 제안 할 수있는 최선은 시스템에 어떤 명령 행 셸이든 활용하는 것입니다.
이 두 가지 질문에 대한 대답은 Linux에서이 작업을 수행하는 방법에 대한 좋은 정보를 제공하는 것으로 보이며, BSD에도 유효 할 것으로 기대합니다. Mac OS X에서도 마찬가지 일지 모르지만 기본적으로 명령 줄 셸과 관련하여 Mac OS X의 기능에 익숙하지 않으므로 잘 모르겠습니다.
How to check if command exists in a shell script?
는
Check if a program exists from a Bash script
답은 아래 type
명령을 사용하는 거의 종기에 보인다, 그러나 당신은 답변에서 세부 사항을 읽어야합니다. Windows의 경우, 빠른 검색이 밝혀 :
Is there an equivalent of 'which' on the Windows command line?
는 Windows에서 문제를 공격하기 위해 여러 가지 방법을 제공 할 것으로 보인다. 그래서, 거기에 무엇이있어, 특정 명령이 존재하는지 여부를 알려주는 쉘 명령을 Windows에서 실행하는 것이 가능해야합니다. 에 관계없이 비록 OS의
, 당신이해야 할 겁니다 것은
bool commandExists(string command)
{
import std.process, std.string;
version(linux)
return executeShell(format("type %s", command)).status == 0;
else version(FreeBSD)
return executeShell(format("type %s", command)).status == 0;
else version(Windows)
static assert(0, "TODO: Add Windows magic here.");
else version(OSX)
static assert(0, "TODO: Add Mac OS X magic here.");
else
static assert(0, "OS not supported");
}
같은 것입니다 그리고 그것은 일부 시스템이 될 수있다, 당신은 실제로 명령의 출력을 구문 분석해야합니다 그 상태를 보지 않고 올바른 결과를 주 었는지 확인하십시오. 불행히도, 이것은 정확히 시스템 고유의 것이 될 것입니다.
파일이 PATH에 기본적으로 환경에 존재하는 경우는 (그래서 이것은
Windows가 ... 다른 대답으로 밝혔다을 추가 할을 마법) 창에서이 기능을 사용할 수 있습니다