Skip to main content

리눅스 - 유닉스 명령어 : exec

[스무디] 리눅스 명령어 less tail grep (4 월 2025)

[스무디] 리눅스 명령어 less tail grep (4 월 2025)
Anonim

exec - 서브 프로세스 호출

개요

임원? 스위치들 ? arg ? arg … ?

기술

이 명령은 인수를 실행할 하나 이상의 서브 프로세스의 스펙으로 취급합니다. 인수는 표준 셸 파이프 라인의 형태를 취합니다. arg 명령의 한 단어가되며 각 명령은 하위 프로세스가됩니다.

초기 인수가임원 ~으로 시작하다- 명령 줄 스위치로 취급되며 파이프 라인 사양에 포함되지 않습니다. 현재 지원되는 스위치는 다음과 같습니다.

-keepnewline

파이프 라인 출력에 후행 줄 바꾸기를 유지합니다. 보통 후행 줄 바꿈이 삭제됩니다.

--

스위치의 끝을 표시합니다. 이 인수 다음 인수는 첫 번째 인수로 처리됩니다. arg 처음으로-.

만약 arg (또는 arg 's)는 아래에 설명 된 형식 중 하나를 가지며임원 서브 프로세스 간의 입출력 흐름을 제어한다. 이러한 인수는 서브 프로세스에 전달되지 않습니다. ``< 파일 이름 '' 파일 이름 ``< ''와는 별도의 인수에 있거나 중간에 공백이없는 동일한 인수 (즉,`` 파일 이름 '').

|

파이프 라인에서 다른 명령을 구분합니다. 선행 명령의 표준 출력은 다음 명령의 표준 입력으로 파이프됩니다.

|&

파이프 라인에서 다른 명령을 구분합니다. 앞의 명령의 표준 출력과 표준 오류 모두 다음 명령의 표준 입력으로 파이프됩니다. 이 리디렉션 형식은 2> 및> &와 같은 형식을 재정의합니다.

< 파일 이름

에 의해 명명 된 파일 파일 이름 파이프 라인의 첫 번째 명령에 대한 표준 입력으로 열리고 사용됩니다.

<@ fileId

FileId 열린 파일의 식별자 여야합니다 (예 : 이전 호출의 반환 값).열다. 이 명령은 파이프 라인의 첫 번째 명령에 대한 표준 입력으로 사용됩니다. FileId 독서를 위해 열려 있어야합니다.

<< 값

값 첫 번째 명령이 표준 입력으로 전달됩니다.

> 파일 이름

마지막 명령의 표준 출력은 이름이 지정된 파일로 리디렉션됩니다. 파일 이름 이전 내용을 덮어 씁니다.

2> 파일 이름

파이프 라인의 모든 명령에서 표준 오류가 지정된 파일로 리디렉션됩니다. 파일 이름 이전 내용을 덮어 씁니다.

>& 파일 이름

마지막 명령의 표준 출력과 모든 명령의 표준 오류가 모두 이름이 지정된 파일로 리디렉션됩니다. 파일 이름 이전 내용을 덮어 씁니다.

>> 파일 이름

마지막 명령의 표준 출력은 이름이 지정된 파일로 리디렉션됩니다. 파일 이름 그것을 덮어 쓰지 않고 추가합니다.

2>> 파일 이름

파이프 라인의 모든 명령에서 표준 오류가 지정된 파일로 리디렉션됩니다. 파일 이름 그것을 덮어 쓰지 않고 추가합니다.

>>& 파일 이름

마지막 명령의 표준 출력과 모든 명령의 표준 오류가 모두 이름이 지정된 파일로 리디렉션됩니다. 파일 이름 그것을 덮어 쓰지 않고 추가합니다.

>@ fileId

FileId 열린 파일의 식별자 여야합니다 (예 : 이전 호출의 반환 값).열다. 마지막 명령의 표준 출력은 다음으로 리디렉션됩니다. fileId 그 파일은 작성을 위해 열려 있어야합니다.

2>@ fileId

FileId 열린 파일의 식별자 여야합니다 (예 : 이전 호출의 반환 값).열다. 파이프 라인의 모든 명령에서 표준 오류가로 리디렉션됩니다. fileId 그 파일이야. 파일은 쓰기 위해 열렸어야합니다.

>&@ fileId

FileId 열린 파일의 식별자 여야합니다 (예 : 이전 호출의 반환 값).열다. 마지막 명령의 표준 출력과 모든 명령의 표준 오류가 모두로 리디렉션됩니다. fileId 그 파일이야. 파일은 쓰기 위해 열렸어야합니다.

표준 출력이 리디렉션되지 않은 경우임원 명령은 파이프 라인의 마지막 명령에서 표준 출력을 반환합니다. 파이프 라인의 명령 중 하나가 비정상적으로 종료되거나 죽거나 일시 중단되면 명령이 종료됩니다.임원 오류를 반환하고 오류 메시지는 파이프 라인 출력과 비정상 종료를 설명하는 오류 메시지를 포함합니다. 그만큼에러 코드 변수에는 발생한 마지막 비정상 종료에 대한 추가 정보가 포함됩니다. 명령 중 하나가 표준 오류 파일에 쓰고 표준 오류가 경로 재 지정되지 않으면임원 오류를 반환합니다. 오류 메시지에는 파이프 라인의 표준 출력, 비정상 종료 (있는 경우)에 대한 메시지, 표준 오류 출력 등이 포함됩니다.

결과 또는 오류 메시지의 마지막 문자가 개행 문자 인 경우 해당 문자는 일반적으로 결과 또는 오류 메시지에서 삭제됩니다. 이는 일반적으로 개행 문자로 끝나지 않는 다른 Tcl 반환 값과 일치합니다. 그러나,-keepnewline 가 지정되면 후행 줄 바꿈이 유지됩니다.

표준 입력이``< ''또는``<< ''또는``<@ ''로 리디렉션되지 않으면 파이프 라인의 첫 번째 명령에 대한 표준 입력은 응용 프로그램의 현재 표준 입력에서 가져옵니다.

마지막 arg ``& ''이면 파이프 라인은 백그라운드에서 실행됩니다. 이 경우임원명령은 요소가 파이프 라인의 모든 서브 프로세스에 대한 프로세스 식별자 인 목록을 리턴합니다.리디렉션되지 않은 경우 파이프 라인의 마지막 명령에서 표준 출력은 응용 프로그램의 표준 출력으로 이동하고 파이프 라인의 모든 명령에서 오류 출력은 리디렉션되지 않으면 응용 프로그램의 표준 오류 파일로 이동합니다.

각 명령의 첫 번째 단어는 명령 이름으로 간주됩니다. 틸드 대체가 수행되고 결과에 슬래시가없는 경우 PATH 환경 변수의 디렉토리에서 지정된 이름으로 실행 파일이 검색됩니다. 이름에 슬래시가 포함되어 있으면 현재 디렉토리에서 도달 할 수있는 실행 파일을 참조해야합니다. 명령에 대한 인수에``glob ''확장이나 다른 쉘 같은 대체가 수행되지 않습니다.

이식성 문제

Windows (모든 버전)

소켓에서 읽거나 소켓에 쓰는 것,``@ fileId '표기법, 작동하지 않습니다. 소켓에서 읽을 때 16 비트 DOS 응용 프로그램이 멈추고 32 비트 응용 프로그램이 파일 끝과 함께 즉시 반환됩니다. 두 가지 유형의 응용 프로그램이 소켓에 쓸 때, 정보는 콘솔에 보내지거나 대신 버려집니다.

Tk 콘솔 텍스트 위젯은 실제 표준 IO 기능을 제공하지 않습니다. 표준 입력에서 리디렉션 할 때 Tk에서 모든 응용 프로그램은 즉각적인 파일 끝을 보게됩니다. 표준 출력이나 표준 오류로 리다이렉트 된 정보는 버려 질 것이다.

정방향 또는 역방향 슬래시는 Tcl 명령에 대한 인수의 경로 분리 자로 허용됩니다. 응용 프로그램을 실행할 때 응용 프로그램에 대해 지정된 경로 이름은 경로 구분 기호로 정방향 또는 역방향 슬래시를 포함 할 수도 있습니다. 그러나 대부분의 Windows 응용 프로그램에서는 옵션 슬래시 만 옵션 인수로 사용할 수 있으며 경로에서는 백 슬래시를 사용할 수 있습니다. 슬래시가있는 경로 이름을 지정하는 응용 프로그램의 인수는 백 슬래시 문자를 사용하도록 자동 변환되지 않습니다. 인수에 경로 구분 기호로 슬래시가 포함되어 있으면 프로그램에 따라 경로 이름으로 인식되거나 인식되지 않을 수 있습니다.

또한 16 비트 DOS 또는 Windows 3.X 응용 프로그램을 호출 할 때 모든 경로 이름은 짧고 비밀스러운 경로 형식을 사용해야합니다 (예 : "applbakery.default"대신 "applba ~ 1.def"사용) ).

경로의 한 행에있는 두 개 이상의 앞으로 또는 뒤로 슬래시는 네트워크 경로를 나타냅니다. 예를 들어, 루트 디렉토리의 간단한 연결기음:/ 하위 디렉토리와 함께/ windows / system 산출 할 것이다c : // windows / system (함께 두 개의 슬래시), 마운트 지점을 참조하는 호출체계 기계에창문들 (그리고기음:/ 무시됩니다).c : / windows / system현재 컴퓨터의 디렉토리를 설명합니다. 그만큼파일 조인 명령은 경로 구성 요소를 병합하는 데 사용해야합니다.

Windows NT

응용 프로그램을 실행할 때,임원 먼저 이름이 지정된대로 검색합니다. 그런 다음 순서대로,.com, .exe, 및.박쥐 지정된 이름의 끝에 추가되고 더 긴 이름을 검색합니다. 디렉토리 이름이 응용 프로그램 이름의 일부로 지정되지 않은 경우 응용 프로그램을 찾으려고 할 때 다음 디렉토리가 순서대로 자동 검색됩니다.

Tcl 실행 파일이로드 된 디렉토리.현재 디렉토리.Windows NT 32 비트 시스템 디렉토리.Windows NT 16 비트 시스템 디렉토리.Windows NT 홈 디렉토리.경로에 나열된 디렉토리.

쉘 내장 명령을 실행하려면지시호출자는 "cmd.exe / c''원하는 명령.

Windows 95

응용 프로그램을 실행할 때,임원 먼저 이름이 지정된대로 검색합니다. 그런 다음 순서대로,.com, .exe, 및.박쥐 지정된 이름의 끝에 추가되고 더 긴 이름을 검색합니다. 디렉토리 이름이 응용 프로그램 이름의 일부로 지정되지 않은 경우 응용 프로그램을 찾으려고 할 때 다음 디렉토리가 순서대로 자동 검색됩니다.

Tcl 실행 파일이로드 된 디렉토리.현재 디렉토리.Windows 95 시스템 디렉토리.Windows 95 홈 디렉토리.경로에 나열된 디렉토리.

쉘 내장 명령을 실행하려면지시호출자는 "command.com / c''원하는 명령.

16 비트 DOS 응용 프로그램이 콘솔에서 표준 입력을 읽은 다음 종료하면 모든 후속 16 비트 DOS 응용 프로그램이 표준 입력을 이미 닫힌 것으로 간주합니다. 32 비트 응용 프로그램은이 문제가 없으며 16 비트 DOS 응용 프로그램에서 표준 입력이 닫힌 것으로 생각한 후에도 올바르게 실행됩니다. 현재이 버그에 대한 알려진 해결 방법이 없습니다.

사이의 리디렉션NUL : 장치 및 16 비트 응용 프로그램이 항상 작동하지는 않습니다. 에서 리디렉션 할 때NUL :일부 응용 프로그램은 멈출 수 있고, 다른 응용 프로그램은``0x01 ''바이트의 무한한 스트림을 얻게되며, 일부는 실제로 실제로 파일의 끝을 얻을 것입니다; 이 동작은 응용 프로그램 자체에 컴파일 된 것에 의존하는 것처럼 보입니다. 4K 이상으로 리디렉션 할 때NUL :, 일부 응용 프로그램이 중단됩니다. 32 비트 응용 프로그램에서는 위의 문제가 발생하지 않습니다.

모든 DOS 16 비트 응용 프로그램은 동 기적으로 실행됩니다. 파이프에서 16 비트 DOS 응용 프로그램으로의 모든 표준 입력은 임시 파일로 수집됩니다. 16 비트 DOS 응용 프로그램이 실행되기 전에 파이프의 다른 쪽 끝을 닫아야합니다.파이프에 대한 16 비트 DOS 응용 프로그램의 모든 표준 출력 또는 오류는 임시 파일로 수집됩니다. 임시 파일이 파이프 라인의 다음 단계로 리디렉션되기 전에 응용 프로그램을 종료해야합니다. 이것은 파이프 구현의 Windows 95 버그에 대한 해결 방법으로 인해 발생하며 표준 Windows 95 DOS 셸이 파이프 자체를 처리하는 방법입니다.

특정 응용 프로그램 (예 :command.com대화식으로 실행하면 안됩니다. 표준 입력을 읽고 표준 출력에 쓰는 것보다는 콘솔 창에 직접 액세스하는 응용 프로그램은 실패 할 수도 있고, Tcl을 멈추거나, 자신의 전용 콘솔 창을 사용할 수없는 경우 시스템을 멈출 수도 있습니다.

매킨토시

그만큼임원 명령이 구현되지 않았으며 Macintosh에서는 존재하지 않습니다.

유닉스

그만큼임원 명령은 완전히 기능하고 설명 된대로 작동합니다.

참고 사항

오류 (n), 열 (n)

키워드

실행, 파이프 라인, 리다이렉션, 서브 프로세스

중대한: 사용 남자 명령 ( % man )를 사용하여 특정 컴퓨터에서 명령이 어떻게 사용되는지 확인하십시오.