스크립트에서 사용하는 명령 목록을 출력합니다. 다음에서 사용되는 명령 목록을 만들 수 있습니다.
set -n file_which_need_to_check.sh > found _commands.txt
또는 다음을 통해:
compgen -c file_which_need_to_check.sh > found_commands.txt
또는 다음을 통해:
shellcheck -x 또는 이와 유사합니다:
다음 정보는 알려져 있지만 요청되지 않습니다.
폴더의 경로 또는 모든 bash 파일이 포함된 목록은 다음과 같이 얻을 수 있습니다.
find \ordnerpfad -type f
시스템이 특정 명령을 지원하는지 여부를 테스트할 수 있습니다.
compgen -ac | grep searchstr
답변1
(내가 아는 한, 그리고 내가 상상할 수 있는 한) 그러한 도구는 없습니다. 알아보려면 스크립트를 실행해야 합니다. 특히 크고 복잡한 스크립트는 시스템에서 사용 가능한 항목(예: ggrep
// egrep
/ bsdgrep
/ perl
... 또는 gmake
vs make
vs bsdmake
vs ninja
)을 감지하고 다양한 작업을 수행하는 경우가 많습니다.
소프트웨어 관점에서 실행해야 하는 명령은 때때로(일반적으로 설치 프로그램 및 시스템 관리 도구를 보는 경우) 스크립트에 "내장"되어 있으므로 소스 코드를 실행하지 않으면 실행 파일이 무엇인지조차 알 수 없습니다. 실행할 파일.
따라서 이를 알려면 실행하거나 셸에 대한 전체 코드 분석기를 구축해야 합니다. 이는 매우 복잡한 작업이며 누구도 그렇게 하는 것을 상상할 수 없습니다. 왜냐하면 문서화되지 않은 코드를 실행하는 것만 피하면 되기 때문입니다. 실패할 때까지 셸 스크립트를 실행합니다. (이제 실제 시스템의 컨테이너화된 VM 복제본에서 무료로 이 작업을 수행할 수 있습니다.)
그러한 파서를 작성하는 것보다 무엇에 의존하고 있는지 알 수 있도록 문제의 모든 스크립트를 다시 구현하는 것이 더 쉬울 것입니다.
그것은 모두 스크립트 작성자로서 훌륭한 소프트웨어 엔지니어링을 수행하고 어딘가에 요구 사항을 명확하게 명시하는 것으로 귀결됩니다.
일부 스크립트는 스크립트를 실행하기 위해 컴퓨터에 설치해야 하는 xdotool과 같은 다른 도구를 사용합니다.
글쎄요, 인터넷의 어두운 구석에서 찾은 스크립트를 무작위로 실행하지 않기를 바랍니다! 일반적으로 스크립트는 패키지 소프트웨어 형태로 제공됩니다.
예를 들어, /usr/bin에서 임의로 하나를 선택했고 /usr/bin/virt-copy-out
내 시스템의 스크립트는 libguestfs
Fedora 패키지에서 나왔습니다. 시스템에 해당 패키지가 무엇에 의존하는지 물어보면 bash
(분명히 bash 스크립트이고 bash 없이는 실행되지 않습니다), coreutils
(cp, sort, find...),, less
... 를 포함하는 더 긴 목록이 있습니다 tar
.
따라서 패키지(및 스크립트) 작성자는 패키지(포함된 스크립트 포함)에 필요한 것이 무엇인지 파악하는 데 시간을 보냅니다. 이것이 배포판 패키지를 원하는 이유 중 하나입니다! 패키지를 설치하려고 할 때 이들 중 하나라도 누락된 경우 패키지 관리자가 자동으로 이러한 모든 종속성을 설치합니다.