명령 대 프로그램?

명령 대 프로그램?

adduseruseradd, 및 의 차이점을 찾고 있었습니다.설명그것은 useradd명령이고 adduserPerl 스크립트입니다. 나는 perl 스크립트가 무엇인지 이해하지만, 내가 이해하지 못하는 것은 commandthen이 정확히 무엇인지입니다.

나는 항상 , 등의 명령은 ls모두 ln단순히 cd한 가지 작업을 수행하는 언어로 작성된 간단한 프로그램이라고 생각했습니다. 이러한 "간단한 프로그램"과 Perl 스크립트의 차이점은 무엇입니까?

물론 (perl) 스크립트는 컴파일되지 않고 런타임에 해석된다는 것을 알고 있지만 이것이 유일한 차이점은 아닌 것 같습니다.

답변1

간단히 말해서 명령은 컴퓨터가 수행하는 명령(또는 명령 집합)입니다.

독립 실행형 명령

ls, 등과 같은 기본 Unix 유틸리티는 ln(보통) C로 작성되고 독립 실행형 실행 파일로 컴파일됩니다.프로그램들통역사를 실행할 필요가 없습니다. 그들은 일반적으로 특정을 요구합니다도서관시스템에 파일을 설치할 예정이지만 이는 또 다른 질문에 대한 답변입니다.

스크립트

스크립트는 명령의 모음이며 실제로 스크립트 자체는 명령으로 간주됩니다.

펄 스크립트일련의 Perl 문이며 perl실행 파일(독립 실행형 및 컴파일된)이 필요합니다.프로그램Perl 문을 해석합니다.

때로는 크고 복잡한 해석 스크립트(Perl, Python 및 Ruby와 같은 언어)를 다음과 같이 지칭하기도 합니다.통역 프로그램기간 동안스크립트더 짧고 간단한 스크립트용으로 예약되어 있습니다.

쉘 스크립트일련의 다른 명령(모든 유형의 명령)이며 스크립트를 해석하려면 Bash와 같은 Unix 셸이 필요합니다. Bash 매뉴얼 페이지에서:

Bash는 표준 입력이나 파일에서 읽은 명령을 실행하는 sh 호환 명령 언어 해석기입니다.

쉘 내장

쉘은 일반적으로내장독립형 프로그램도 아니고 스크립트도 아닌 명령. 대신, 이들은 셸 자체의 일부이며 셸에서 직접 실행됩니다. cd이러한 내장 명령의 예입니다.

때로는 쉘 내장 명령과 독립 실행형 명령으로 동시에 존재하는 명령(예: command)이 있습니다 echo.

$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo

echo자체적으로 내장된 쉘을 실행하는 반면, 독립형 명령은 전체 경로를 제공하여 실행할 수 있습니다.

내장 버전의 echo를 실행합니다.

$ echo --version
--version

독립 실행형 echo프로그램 실행:

$ /usr/bin/echo --version
echo (GNU coreutils) 8.23
Packaged by Cygwin (8.23-4)
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

참고: 위의 세부 사항은 Unix 환경을 의미하지만 Windows 환경에도 동일한 원칙이 적용됩니다.

답변2

내장 명령은 쉘의 일부입니다. 프로그램은 쉘에 의해 실행됩니다.

내장 명령은 셸 자체에 포함되어 있습니다. 내장된 명령의 이름이 간단한 명령의 첫 번째 단어로 사용되는 경우(참조:간단한 명령), 쉘은 다른 프로그램을 호출하지 않고 명령을 직접 실행합니다. 별도의 유틸리티로는 얻을 수 없거나 불편한 기능을 구현하려면 내장 명령이 필요합니다.

http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands

답변3

명령단지 응용 프로그램이나 시스템에 작업을 수행하도록 지시하는 방법을 의미합니다.

응용프로그램은 일반적으로 GUI 또는 에서 다양한 명령을 허용 stdin하지만 UNIX 소켓이나 명명된 파이프, 일종의 웹 API, RPC 연결 또는 기타 사용자 정의 프로토콜과 같은 다른 방법도 가능합니다.

일반적으로 GUI 없이 한 가지 작업만 수행한 다음 종료되는 응용 프로그램을 명령이라고 부를 수도 있습니다. 왜냐하면 실제로 이 응용 프로그램에 의미 있는 "명령" 하나만 "줄" 수 있기 때문입니다. 이것이 ls와 같은 작은 프로그램이 작동하는 방식이며 명령이라고 불리는 이유입니다.

그러나 Photoshop을 명령이라고 부르지는 않지만 GUI를 통해 Photoshop 내에서 명령을 실행하는 것은 확실합니다.

그러나 이 용어는 사람들마다 다른 의미를 가질 수 있습니다. 귀하의 예에서는명령작동하기 위해 스크립트 인터프리터가 필요한 파일과 비교하여 직접 실행되는 실행 파일을 설명하는 데 사용됩니다. Perl 스크립트를 실행할 때 /usr/bin/perl실제로 실행되는 바이너리이기 때문에 구별이 중요할 수 있습니다(따라서 오랫동안 실행되는 Perl 스크립트를 종료하려면 에서 이를 찾아야 합니다 ps). 그러나 대부분의 셸에는 셸 자체에 대한 명령인 "내장" 명령이 있으며 외부 실행 파일이 실행되지 않습니다. 예를 들어, 자체적 cd으로 처리되며 bash호출하거나 유사하지 않습니다 /sbin/cd.

관련 정보