모든 Linux 기반 배포판에서 사용할 수있는 표준 명령은 무엇입니까?


39

모든 Linux 시스템에서 사용할 수있는 표준 명령이 무엇인지 알고 싶습니다.

예를 들어 debian / ubuntu / redhat / suse / arch / slackware 등을 얻는 경우 항상 다음과 같은 명령을 찾을 수 있습니다.

cd, mkdir, ls, echo, grep, sed, awk, ping 등

언급 된 명령 중 일부는 셸이 내장되어 있지만 다른 명령은 아니지만 항상 항상 있습니다 (내 지식과 경험을 바탕으로).

반면 gawk, parted, traceroute 및 기타 유명한 명령은 다른 Linux 배포판에 기본적으로 설치되지 않습니다.

다른 웹 검색을했지만 이에 대한 정답을 찾지 못했습니다.

목적은 쉘 스크립트를 만들고 싶습니다. 그리고 스크립트에서 사용 된 명령이 시스템에서 사용 가능한지 여부를 확인해야합니다. 그렇지 않으면 필요한 바이너리를 설치하라는 메시지가 표시됩니다.


5
힌트 : " 스크립트에서 사용 된 명령이 시스템에서 사용 가능한지 여부를 확인해야합니다 "는 Autoconf 와 매우 흡사 합니다.
sr_

확실히 자동 구성 또는 더 과학적인 사촌의 경우는 약속 이론 입니다.
와일드 카드

@Wildcard, 나는 초기 설치 후에도 시스템의 지속적인 상태 점검 및 자체 복구를 원하지 않는 한 모든 구성 관리 시스템이 그러한 경우에 과도한 영향을 미칠 것이라고 생각합니다.
Vangelis Tasoulas

@VangelisTasoulas, 나는 그렇게 생각하지 않습니다. 가정용 컴퓨터와 같은 단일 사용자 설치에서 왜 스크립트를 작성해야합니까? 구성 관리는 과도 할 수 있지만 스크립트 검사와 수동 검사도 마찬가지입니다 . 일관성을 유지하려는 여러 상자가있는 시나리오에서는 스크립팅이 과도하지 않으며 구성 관리도 아닙니다. 또는 제품의 패키지 설치 중에 위생 검사를 실행하려는 소프트웨어 개발자입니까? 시나리오에 따라 다르지만 구성을 관리하려는 경우 구성 관리 도구가 과도하지 않습니다. ;)
와일드 카드

1
@Wildcard,이 질문을 쓸 때 나는 후자를 생각하고있었습니다. 단일 컴퓨터에서 설치하는 동안 소프트웨어가 제대로 실행되도록하기 위해 위생 검사를 실행하고 싶습니다. 물론 여러 서버를 관리하고 분산 배포 등을 처리하려면 구성 관리가 장기적으로 진행되는 방법이라는 데 동의합니다.
Vangelis Tasoulas

답변:


41

불행히도 사용 가능한 항목에 대한 보장은 없습니다.

그러나 대부분의 시스템에는 GNU coreutils가 있습니다. 이것만으로도 약 105 개의 명령이 제공됩니다. BusyBox를 대신 사용할 수있는 임베디드 시스템이 아닌 경우에는 그 시스템에 의존 할 수 있습니다 .

당신은 또한에 의존 아마 수 bash는 , 크론 , GNU의 findutils의 , GNU 그렙는 , GZIP는 , iproute2를이 , iputils는 , 인간이 DB는 , 모듈 --도구 초기화하기 , 그물 도구 , passwd 파일 ( passwd 파일 또는 그림자 ), procps의 , 타르util- 리눅스 .

일부 프로그램은 배포판에 약간의 차이가있을 수 있습니다. 예를 들어 gawk 또는 mawk/usr/bin/awk 일 수 있습니다 . POSIX 모드에서 대시 또는 bash 일 수 있습니다 . 일부 구형 시스템에서는 BIND 버전 과 동일한 구문이 없으므로 dig 를 사용하는 것이 좋습니다 ./bin/sh/usr/bin/host

일부 표준을 찾고 있다면 Linux Standard Base는 일반적으로 발견되는 일부 프로그램을 정의 하지만 모든 배포판이 표준을 준수한다고 주장하는 것은 아니며 일부는 선택적 LSB 호환성 패키지를 설치하는 경우에만 수행됩니다. 예를 들어, 내가 본 일부 시스템lsb_release 은 기본 설치로 제공되지 않습니다 .

뿐만 아니라 POSIX에서 표준화 한 명령 목록 이 도움이 될 수 있습니다.

문제에 대한 또 다른 접근법은 각 배포판의 패키징 도구 (예 : RPM for Red Hat, DEB for Debian 등)를 사용하여 스크립트를 패키징하고 필요한 다른 프로그램이나 패키지에 대한 종속성을 선언하는 것입니다. 약간의 작업이지만 누락 된 내용뿐만 아니라 설치해야 할 패키지를 알려주는 친숙한 오류 메시지가 사용자에게 표시됩니다.

더 많은 정보:


패키지 및-추가 종속성이 중대하다 -idea는 아래의 Autoconf 손으로 다이빙 친다:)
sr_

2
좋은 대답, 나는 모든 것에 동의합니다. 추가주의 단계를 추가하고 싶습니다. 사용중인 특정 버전의 명령에 대한 추가 옵션을 고려하십시오 ... 일부 버전에서는 작동하지 않을 수 있습니다 (이 작업은 프로젝트에서 발생했습니다).
JoséNunoFerreira

이 명령 목록이있는 일반 텍스트 파일이 어디에 있다고 생각하지 않습니까? pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html 은 비교적 쉽게 쉽게 변환 할 수 있지만 여전히 많은 것들이 빠져 있습니다.
Dylan Nicholson

7

내장되지 않은 Linux 시스템에서는 일반적으로 대부분의 GNU 유틸리티를 사용할 수 있습니다.

플러스 폴더의 유틸리티 - 리눅스 제품군과 procps의 스위트 . 참고 /bin/sh이하의 복수의 포크 중 하나와 같은 기능을 항상 bash는 아니다, 그것은 쉘이 될 수 .

리눅스 표준 자료는 모두 부합하는 시스템에서 예상되는 기능으로 일반적인 유틸리티의 집합을 정의합니다. POSIX에 의해 지정된 대부분의 유틸리티를 기대할 수도 있습니다 . 주목할만한 예외는입니다 pax. 이는 많은 배포판의 기본 설치의 일부가 아닙니다.

일을 단순하게 유지하려면 lsb_release패키지 설치를 요청하십시오 . 많은 배포판에는 LSB에 필요한 모든 종속성을 가져 오는 패키지가 있습니다.

임베디드 시스템에서는 모든 베팅이 해제되어 있습니다. 임베디드 리눅스 시스템은 일반적으로 BusyBox를 실행 하지만 많은 유틸리티와 기능은 선택 사항이므로 확신 할 수있는 것은 거의 없습니다.


6

모든 Linux 배포판은 아니지만 대부분의 명령 세트가 있으며 그 문제를 위해 Unix 배포판도 제공됩니다. 이것은 POSIX 표준에 의해 지정된 필수 명령 입니다.

당신이 인용 대부분의 명령 ( cd, mkdir, ls, echo, grep, sed, awk, 등) 그것을이다. pingWhiteWinterWolf 의 예외는 올바르게 언급되었습니다.


1
실제로 pingPOSIX의 일부가 아닙니다 ...
WhiteWinterWolf

POSIX 홈페이지 가 보장에 초점을 맞출 것을 상태 "소스 코드 레벨에서 응용 프로그램의 이식성을" 예. 내 이해에 따라 그들은 시스템 API, 시스템 (쉘 포함) 동작 및 응용 프로그램을 구성, 컴파일 및 설치하고 소스 코드를 처리하는 데 사용할 수있는 명령에 관심이 있습니다.
WhiteWinterWolf

그들은 유틸리티 네트워킹에 대해 걱정하지 않는다 ( "시스템 구성 및 자원 가용성은" 같은 유비쿼터스 명령 아웃 오브 범위를 명시 적이다) ping, ifconfig, telnet그들은 단지, 등이 표준 (나 다른 하나 AFAIK의 일부가 아닌 최선의 노력으로 "역사적 구현" 과의 호환성을 목표로 합니다.
WhiteWinterWolf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.