재 - 리눅스 명령 - 유닉스 명령

이름

sh - 명령 인터프리터 ( )

개요

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] - 단어 [ 대상 ... ]

기술

Sh는 시스템의 표준 명령 인터프리터입니다. sh 의 현재 버전은 에 대한 POSIX 1003.2 및 1003.2a 사양을 준수하도록 변경되는 중입니다. 이 버전에는 Korn 셸과 비슷한 점이 많지만 Korn 셸 복제본은 아닙니다 (ksh (1) 참조). POSIX 에 의해 지정된 기능과 몇 가지 버클리 확장 기능 만이이 쉘에 통합됩니다. 우리는 4.4 BSD가 발표 될 때까지 POSIX의 적합성을 기대한다. 이 맨 페이지는 튜토리얼 또는 쉘의 완전한 사양을위한 것이 아닙니다.

개요

쉘은 파일이나 터미널에서 행을 읽고 해석하고 일반적으로 다른 명령을 실행하는 명령입니다. 사용자가 시스템에 로그인 할 때 실행되는 프로그램입니다 (사용자가 chsh (1) 명령으로 다른 쉘을 선택할 수 있음). 쉘은 흐름 제어 구조를 갖는 언어를 구현하며, 내장 된 히스토리 및 라인 편집 기능과 함께 데이터 저장 이외에 다양한 기능을 제공하는 매크로 기능을 제공합니다. 대화식 사용을 돕기위한 많은 기능을 통합했으며 대화식 및 비 대화식 사용 (쉘 스크립트) 모두에서 해석 언어가 공통적이라는 이점이 있습니다. 즉, 명령을 실행중인 쉘에 직접 입력하거나 파일에 넣을 수 있으며 파일을 쉘이 직접 실행할 수 있습니다.

기도

args가없고 쉘의 표준 입력이 터미널에 연결되어 있거나 ( -i 플래그가 설정되어있는 경우) -c 옵션이 없으면 쉘은 대화식 쉘로 간주됩니다. 대화식 쉘은 일반적으로 각 명령 앞에 프롬프트를 표시하고 프로그래밍 및 명령 오류를 다르게 처리합니다 (아래 설명 참조). 처음 시작할 때, 쉘은 인수 0을 검사하고, 대시`- '로 시작하면 쉘은 로그인 쉘로 간주됩니다. 이것은 일반적으로 사용자가 처음 로그인 할 때 시스템에 의해 자동으로 수행됩니다. 로그인 쉘은 먼저 / etc / profile 파일과 .profile 파일에서 명령을 읽습니다. 환경 변수 ENV 가 쉘 입력시 설정되거나 로그인 쉘의 .profile에 설정된 경우, 쉘은 다음에 ENV에 명명 된 파일에서 명령을 읽습니다. 따라서 사용자는 실행될 명령을 .profile 파일의 로그인 시간 및 ENV 파일 내의 모든 셸에 대해 실행되는 명령 ENV 변수를 일부 파일로 설정하려면 홈 디렉토리의 .profile에 다음 행을 입력하십시오

ENV = $ HOME / .shinit; 수출 ENV

원하는 파일명 을``.shinit ''로 대체하십시오. 쉘 스크립트 및 비 대화식 쉘을 포함하여 쉘을 호출 할 때마다 ENV 파일을 읽으므로 다음 패러다임은 ENV 파일의 명령을 대화식 호출로 제한하는 데 유용합니다. 아래의``case ''와`` esac ''안에 명령을 넣으십시오 (이 명령은 나중에 설명합니다) :

case $ - in * i *)

대화식 사용을위한 # 명령

...

에삭

옵션 외의 커멘드 행 인수가 지정되고있는 경우, 쉘은 최초의 인수를 커멘드 (셸 스크립트)를 읽어내는 파일의 이름으로서 취급 해, 나머지의 인수는 셸의 위치 매개 변수로서 설정됩니다 ($ 1 , $ 2 등). 그렇지 않으면 쉘은 표준 입력에서 명령을 읽습니다.

인수 목록 처리

모든 단일 문자 옵션에는 - o 옵션에 대한 인수로 사용할 수있는 해당 이름이 있습니다. 집합 이름은 아래 설명에서 단일 문자 옵션 옆에 제공됩니다. 대시를 지정하면``- ''는 옵션을 켜고, '+'를 사용하면 옵션을 비활성화합니다. 다음 옵션은 명령 행 또는 set (1) 내장 명령 (다음에 설명)에서 설정할 수 있습니다.

- 알렉스 포트

에 할당 된 모든 변수를 내 보냅니다. (4.4 알파에 대한 unimpleted)

-기음

명령 행에서 명령을 읽으십시오. 명령은 표준 입력에서 읽 t지지 않습니다.

-Cnoclobber

기존 파일을``> ''로 덮어 쓰지 마십시오 (4.4 알파에서는 UNIMPLEMENTED).

-e errexit

대화식이 아닌 경우, 테스트되지 않은 명령이 실패하면 즉시 종료하십시오. 명령의 종료 상태는 if elif 를 제어하기 위해 명령이 사용되는 동안 또는 명령이 "&&"또는 "||"연산자의 왼쪽 피연산자 인 경우 명시 적으로 테스트 된 것으로 간주됩니다.

-f noglob

경로 이름 확장을 비활성화합니다.

-n noexec

대화 형이 아닌 경우 명령을 읽되 실행하지 마십시오. 이것은 쉘 스크립트의 구문을 검사 할 때 유용합니다.

-u nounset

설정되지 않은 변수를 확장하려고 시도 할 때 표준 오류에 메시지를 작성하고 쉘이 대화식이 아닌 경우 즉시 종료하십시오. (4.4 알파에 대한 unimpleted)

-v 자세한 정보 표시

쉘은 읽을 때 입력을 표준 오류에 기록합니다. 디버깅에 유용합니다.

-x xtrace

각 명령을 표준 오류에 쓰십시오 (실행되기 전에`+ '앞에옵니다. 디버깅에 유용합니다).

-q quietprofile

-v 또는 -x 옵션이 설정된 경우 초기화 파일을 읽을 때 적용하지 마십시오.이 파일은 / etc / profile .profile이며 ENV 환경 변수로 지정된 파일입니다.

- 나는 무시한다.

대화식 일 때 입력에서 EOF를 무시하십시오.

-i interactive

쉘이 대화식으로 동작하도록합니다.

-m 모니터

작업 제어를 켜십시오 (대화식 일 때 자동으로 설정).

-s stdin

표준 입력 에서 명령을 읽습니다 (파일 인수가없는 경우 자동으로 설정). 이 옵션은 셸이 이미 실행을 시작한 후에 설정하면 효과가 없습니다 (즉 set (1) 사용).

-V vi

내장 된 vi (1) 명령 행 편집기를 사용 가능하게하십시오 ( E - 사용 불가능하게 설정 됨).

- 이맥스

내장 된 emacs (1) 명령 행 편집기를 사용 가능으로 설정합니다 ( V 가 설정된 경우이를 비활성화합니다).

-b 알림

백그라운드 작업 완료에 대한 비동기 알림 사용 (4.4 알파에 대한 unimpleted)

어휘 구조

쉘은 파일의 행을 기준으로 입력을 읽어 공백 (공백 및 탭)의 단어와 "연산자"라는 쉘 특수 문자 시퀀스로 구분합니다. 두 가지 유형의 연산자가 있습니다. 제어 연산자 및 리디렉션 연산자 (그 의미는 나중에 설명합니다). 다음은 연산자 목록입니다.

"제어 사업자 :"

&&& (); ;; | || <개행 문자>

"리디렉션 연산자 :"

<>> | << >> <&> & << - <>

인용

인용 부호는 연산자, 공백 또는 키워드와 같은 특정 문자 또는 단어의 특수한 의미를 셸로 제거하는 데 사용됩니다. 따옴표에는 일치 된 작은 따옴표, 일치하는 큰 따옴표 및 백 슬래시 등 세 가지 유형이 있습니다.

백 슬래시

백 슬래시는 Aq 개행을 제외하고 다음 문자의 문자 적 ​​의미를 보존합니다. Aq 개행에 선행하는 백 슬래시는 줄 연속으로 처리됩니다.

작은 따옴표

작은 따옴표로 문자를 묶는 것은 모든 문자의 리터럴 의미를 보존합니다 (작은 따옴표를 제외하고 작은 따옴표를 작은 따옴표로 묶는 것은 불가능합니다).

큰 따옴표

큰 따옴표 안에 문자를 넣으면 dollarign ($) backquote (`)와 백 슬래시 (\)를 제외한 모든 문자의 리터럴 의미가 보존됩니다. 큰 따옴표 안에있는 백 슬래시는 역사적으로 이상하며 다음 문자 만 인용합니다.

$`\

그렇지 않으면 문자 그대로 유지됩니다.

예약어

예약어는 쉘에 특별한 의미가있는 단어이며 줄의 처음과 제어 연산자 뒤에 인식됩니다. 다음은 예약어입니다.

! Ta elif Ta fi Ta 동안

그렇지 않으면 Ta에 대한 Ta, 그 다음에 Ta {Ta}

Ta는 Ta esac 때 Ta까지 Ta를한다

그들의 의미는 나중에 논의됩니다.

별칭

별명은 alias (1) 내장 명령을 사용하여 설정된 이름과 해당 값입니다. 예약어가 발생할 때마다 (위 참조) 쉘은 예약어를 확인한 후 단어를 검사하여 별칭과 일치하는지 확인합니다. 존재하는 경우, 입력 스트림의 값으로 그 값을 옮겨 놓습니다. 예를 들어``ls -F ''값을 가진``lf ''라는 별칭이 있다면 다음과 같이 입력합니다 :

lf foobar <리턴>

될 것이다

ls -F foobar

별칭은 순진한 사용자가 인수를 사용하여 함수를 만드는 방법을 배우지 않고도 명령에 대한 약식을 만들 수있는 편리한 방법을 제공합니다. 어휘 적으로 모호한 코드를 작성하는데도 사용할 수 있습니다. 이 사용은 권장하지 않습니다.

명령들

쉘은 언어에 따라 읽는 단어를 해석합니다.이 언어는이 맨 페이지의 범위를 벗어납니다 ( POSIX 1003.2 문서의 BNF 참조). 근본적으로는 라인이 읽히고 라인의 첫 번째 단어 (또는 제어 연산자 뒤에)가 예약어가 아닌 경우 셸은 간단한 명령을 인식합니다. 그렇지 않으면, 복잡한 명령 또는 다른 특수 구조가 인식되었을 수 있습니다.

간단한 명령

간단한 명령이 인식되면 쉘은 다음 조치를 수행합니다.

  1. ``name = value ''형식의 앞선 단어는 제거되고 간단한 명령의 환경에 할당됩니다. 리디렉션 연산자와 해당 인수 (아래 설명 참조)는 제거되고 처리를 위해 저장됩니다.
  2. 나머지 단어는``Expansions ''에서 설명한대로 확장되고 나머지 첫 단어는 명령 이름으로 간주되어 명령이 위치합니다. 나머지 단어는 명령의 인수로 간주됩니다. 명령 이름이 없으면 항목 1에서 인식 한 "name = value"변수 할당이 현재 쉘에 영향을줍니다.
  3. 재 지정은 다음 절에서 설명하는대로 수행됩니다.

리디렉션

리디렉션은 명령이 입력을 읽거나 출력을 보내는 위치를 변경하는 데 사용됩니다. 일반적으로 리디렉션은 파일에 대한 기존 참조를 열거 나 닫거나 복제합니다. 리디렉션에 사용되는 전체 형식은 다음과 같습니다.

redir-op 파일 [n]

여기서 redir-op 는 앞서 언급 한 리디렉션 연산자 중 하나입니다. 다음은 가능한 리디렉션 목록입니다. Bq n은`3 '(파일 설명자를 참조하는`Bq 3'이 아니라)과 같이 선택적 숫자입니다.

[n]> 파일

표준 출력 (또는 n)을 파일로 리디렉션합니다.

[n]> | 파일

동일하지만, - C 옵션을 무시하십시오.

[n] >> 파일

표준 출력 (또는 n)을 파일에 추가합니다.

[n] <파일

표준 입력 (또는 n)을 파일에서 리디렉션합니다.

[n1] <& n2

파일 설명자 n2에서 표준 입력 (또는 n1)을 복제합니다.

[n] <& -

표준 입력 (또는 n)을 닫습니다.

[n1]> & n2

n2에서 중복 된 표준 출력 (또는 n1).

[n]> & -

표준 출력 (또는 n)을 닫습니다.

[n] <> 파일

표준 입력 (또는 n)에서 읽고 쓰기위한 파일을 엽니 다.

다음 리디렉션은 종종 "here-document"라고 불립니다.

[n] << 구분 기호

here-doc-text ...

구분 기호

구분 기호까지 연속적인 행의 모든 ​​텍스트는 저장되고 표준 입력의 명령 또는 파일 설명자가 지정된 경우 n에 사용 가능하게됩니다. 초기 줄에 지정된 구분 기호가 인용되면 here-doc-text는 문자 그대로 취급되며, 그렇지 않으면 텍스트가 매개 변수 확장, 명령 대체 및 산술 확장 ( "확장"절에서 설명한대로)을받습니다. '연산자가``<<'대신에``<< - ''인 경우 here-doc-text의 선두 탭은 제거됩니다.

검색 및 실행

명령에는 세 가지 유형이 있습니다. 쉘 기능, 내장 명령 및 일반 프로그램 -이 명령은 순서대로 (이름으로) 검색됩니다. 그들은 각각 다른 방식으로 실행됩니다.

쉘 함수가 실행되면 쉘 위치 매개 변수 ($ 0은 변경되지 않음)가 쉘 함수의 인수로 설정됩니다. 명령 환경에 명시 적으로 배치 된 변수 (함수 이름 앞에 할당을 지정 함)는 함수에 대해 로컬로 만들어지며 주어진 값으로 설정됩니다. 그런 다음 함수 정의에 주어진 명령이 실행됩니다. 위치 매개 변수는 명령이 완료 될 때 원래 값으로 복원됩니다. 이것은 모두 현재 쉘 내에서 발생합니다.

쉘 내장 함수는 새로운 프로세스를 생성하지 않고 쉘 내부에서 실행됩니다.

그렇지 않으면 명령 이름이 함수 또는 내장 명령과 일치하지 않으면 명령이 파일 시스템에서 일반 프로그램으로 검색됩니다 (다음 절에서 설명). 정상적인 프로그램이 실행되면 쉘은 프로그램을 실행하여 인수와 환경을 프로그램에 전달합니다. 프로그램이 정상적인 실행 파일이 아니라면 (즉 ASCII 표현이 "#!"인 "magic number"로 시작하지 않으면 execve (2)가 Er ENOEXEC를 반환합니다) 그러면 쉘은 서브 쉘. 자식 셸은이 경우 자체를 다시 초기화하므로 부모 셸에있는 해시 된 명령의 위치가 해당 셸에 저장되는 것을 제외하면 임시 셸 스크립트를 처리하기 위해 새 셸이 호출 된 것처럼 효과가 발생합니다. 어린이.

이 문서의 이전 버전과 소스 코드 자체는 오해의 소지가 있고 산발적으로 "쉘 프로 시저"로 매직 넘버가없는 쉘 스크립트를 참조합니다.

경로 검색

명령을 찾을 때 쉘은 먼저 해당 이름의 쉘 기능이 있는지 확인합니다. 그런 다음 그 이름으로 내장 명령을 찾습니다. builtin 명령이 없으면 두 가지 중 하나가 발생합니다.

  1. 슬래시가 포함 된 명령 이름은 검색을 수행하지 않고 간단히 실행됩니다.
  2. 쉘은 PATH의 각 항목을 순서대로 검색합니다. PATH 변수의 값은 콜론으로 구분 된 일련의 항목이어야합니다. 각 항목은 디렉토리 이름으로 구성됩니다. 현재 디렉토리는 빈 디렉토리 이름에 의해 암시 적으로 표시되거나 명시 적으로 단일 기간으로 표시 될 수 있습니다.

명령 종료 상태

각 명령에는 다른 셸 명령의 동작에 영향을 줄 수있는 종료 상태가 있습니다. 이 패러다임은 명령이 정상 또는 성공에 대해 0으로 종료되고 실패, 오류 또는 거짓 표시에 대해 0이 아닌 것입니다. 각 명령의 맨 페이지에는 다양한 종료 코드와 그 의미를 나타내야합니다. 또한 내장 명령은 실행 된 쉘 기능처럼 종료 코드를 반환합니다.

복잡한 명령

복잡한 명령은 간단한 명령과 제어 연산자 또는 예약어의 조합으로 더 큰 복잡한 명령을 만듭니다. 보다 일반적으로 명령은 다음 중 하나입니다.

달리 명시하지 않는 한 명령의 종료 상태는 명령에 의해 실행 된 마지막 단순 명령의 종료 상태입니다.

파이프 라인

파이프 라인은 제어 연산자로 구분 된 하나 이상의 명령 시퀀스입니다. 마지막 명령을 제외한 모든 명령의 표준 출력은 다음 명령의 표준 입력에 연결됩니다. 마지막 명령의 표준 출력은 평소와 같이 쉘에서 상속됩니다.

파이프 라인의 형식은 다음과 같습니다.

[!] command1 [|] command2 ...]

command1의 표준 출력은 command2의 표준 입력에 연결됩니다. 명령의 표준 입력, 표준 출력 또는 두 명령 모두는 명령의 일부인 경로 재 지정 연산자에 의해 지정된 경로 재 지정 전에 파이프 라인에 의해 할당 된 것으로 간주됩니다.

파이프 라인이 백그라운드에 있지 않으면 (나중에 설명), 쉘은 모든 명령이 완료되기를 기다립니다.

예약어! 파이프 라인에 선행하지 않으면 종료 상태는 파이프 라인에 지정된 마지막 명령의 종료 상태입니다. 그렇지 않으면, 종료 상태는 마지막 명령의 종료 상태의 논리적 NOT입니다. 즉, 마지막 명령이 0을 반환하면 종료 상태는 1입니다. 마지막 명령이 0보다 큰 값을 반환하면 종료 상태는 0입니다.

표준 입력 또는 표준 출력 또는 두 가지 모두의 파이프 라인 할당은 리디렉션 전에 발생하므로 리디렉션을 통해 수정할 수 있습니다. 예 :

$ command1 2> & 1 | command2

command1의 표준 출력과 표준 오류를 command2의 표준 입력에 보냅니다.

A; 또는 종결자를 사용하면 앞에서 설명한 AND-OR 목록 (다음에 설명 됨)이 순차적으로 실행됩니다. a &는 선행 AND-OR 목록의 비동기 실행을 유발합니다.

다른 쉘과 달리 파이프 라인의 각 프로세스는 호출 쉘의 하위입니다 (쉘 내장이 아닌 경우, 현재 쉘에서 실행되지만 환경에 미치는 영향은 제거됩니다).

배경 명령 -

명령이 제어 연산자 Z 퍼 드 (&)에 의해 종료되면 쉘은 명령을 비동기 적으로 실행합니다. 즉, 쉘은 다음 명령을 실행하기 전에 명령이 완료되기를 기다리지 않습니다.

백그라운드에서 명령을 실행하는 형식은 다음과 같습니다.

command1 & [command2 & ...]

쉘이 대화식이 아닌 경우 비동기 명령의 표준 입력은 / dev / null로 설정됩니다

목록 - 일반적으로 말하기

목록은 개행, 세미콜론 또는 앰퍼샌드로 구분 된 0 개 이상의 명령 시퀀스이며 선택적으로이 세 문자 중 하나에 의해 종료됩니다. 목록의 명령은 작성된 순서대로 실행됩니다. command 다음에 앰퍼샌드가 오면 쉘은 명령을 시작하고 즉시 다음 명령으로 진행합니다. 그렇지 않으면 다음 명령으로 진행하기 전에 명령이 종료되기를 기다립니다.

단락 목록 연산자

``&& ''와``|| ''는 AND-OR리스트 연산자입니다. ``&& ''는 첫 번째 명령을 실행 한 다음 첫 번째 명령의 종료 상태가 0 인 경우 두 번째 명령을 실행합니다. ``|| ''도 비슷하지만 첫 번째 명령의 종료 상태가 0이 아닌 경우 두 번째 명령을 실행합니다. ``&& ''와``|| ''는 모두 같은 우선 순위를 갖는다.

흐름 제어 구조 - 경우 동안, 동안, 경우

if 명령의 구문은 다음과 같습니다.

목록 일 경우
다음 목록
[elif 목록
다음 목록] ...
[else list]
fi

while 명령의 구문은 다음과 같습니다.

목록에있는 동안
목록을 작성하다
끝난

두 목록은 반복적으로 실행되며 첫 번째 목록의 종료 상태는 0입니다. until 명령은 유사하지만 while의 대신에 until이라는 단어가 있습니다.이 명령은 첫 번째 목록의 종료 상태가 0이 될 때까지 반복합니다.

for 명령의 구문은 다음과 같습니다.

단어의 변수에 ...
목록을 작성하다
끝난

단어가 확장 된 다음 목록이 차례대로 각 단어에 설정된 변수와 함께 반복 실행됩니다. do와 done은``{ ''와``} ''로 대체 될 수 있습니다.

break 및 continue 명령의 구문은 다음과 같습니다.

쉬다 [num]
계속하다 [num]

Break는 num 내부 for 또는 while 루프를 종료합니다. 연속은 가장 안쪽 루프의 다음 반복으로 계속됩니다. 이들은 내장 명령으로 구현됩니다.

case 명령의 구문은 다음과 같습니다.

~에있는 대문자
패턴) 목록 ;;
...
에삭

패턴은 실제로 하나 이상의 패턴 일 수 있으며 (나중에 설명 할 쉘 패턴 참조),`` ''문자로 구분됩니다.

함께 명령 그룹화

명령은 다음 중 하나를 작성하여 그룹화 할 수 있습니다.

(명부)

또는

{목록;

이들 중 첫 번째는 서브 쉘에서 명령을 실행합니다. a (목록)에 그룹화 된 내장 명령은 현재 쉘에 영향을 미치지 않습니다. 두 번째 형식은 다른 쉘을 포크하지 않으므로 약간 더 효율적입니다. 이 방법으로 명령을 그룹화하면 출력을 하나의 프로그램처럼 재지 정할 수 있습니다.

{printf hello; printf world \ n ";}> 인사말

기능들

함수 정의의 구문은 다음과 같습니다.

name () 명령

함수 정의는 실행 문입니다. 실행될 때 name이라는 함수를 설치하고 종료 상태 0을 리턴합니다. 이 명령은 일반적으로``{ ''와``} ''사이에있는 목록입니다

변수는 로컬 명령을 사용하여 함수에 대해 로컬로 선언 될 수 있습니다. 이것은 함수의 첫 번째 문으로 나타나야하며 구문은 다음과 같습니다.

지역 [변수 | -] ...

로컬은 내장 명령으로 구현됩니다.

변수가 지역 변수로 만들어지면 변수는 초기 값을 상속하고 주변 범위에 같은 이름의 변수에서 export 및 readonly 플래그 (있는 경우)를 표시합니다. 그렇지 않으면, 변수는 초기에 설정 해제됩니다. 셸은 동적 범위 지정을 사용하므로 변수 x를 함수 f에 로컬로 만들고 함수 g를 호출하면 g 내부에서 만들어진 변수 x에 대한 참조는 x라는 전역 변수가 아니라 f 내부에서 선언 된 변수 x를 참조합니다. .

로컬로 만들 수있는 유일한 매개 변수는``- ''``- ''로컬의 모든 셸 옵션을 함수 내에서 set 명령을 통해 변경하면 함수가 반환 될 때 원래 값으로 복원됩니다.

return 명령의 구문은 다음과 같습니다.

return [exitstatus

현재 실행중인 함수를 종료합니다. 리턴은 내장 명령으로 구현됩니다.

변수 및 매개 변수

쉘은 일련의 매개 변수를 유지합니다. 이름으로 표시된 매개 변수를 변수라고합니다. 시동시 쉘은 모든 환경 변수를 쉘 변수로 변환합니다. 새 변수는 양식을 사용하여 설정할 수 있습니다.

이름 = 값

사용자가 설정 한 변수는 영문자, 숫자 및 밑줄로만 구성된 이름을 가져야합니다. 그 중 첫 번째 숫자는 숫자가 아니어야합니다. 매개 변수는 아래에 설명 된대로 숫자 또는 특수 문자로 표시 될 수도 있습니다.

위치 매개 변수

위치 매개 변수는 숫자 (n> 0)로 표시된 매개 변수입니다. 쉘은 초기에 쉘 스크립트의 이름 뒤에 나오는 명령 행 인수 값으로 설정합니다. set (1) 내장 명령은 또한이를 설정하거나 재설정하는 데 사용할 수 있습니다.

특수 매개 변수

특수 매개 변수는 다음 특수 문자 중 하나로 표시된 매개 변수입니다. 매개 변수의 값은 문자 옆에 나열됩니다.

*

하나부터 시작하여 위치 매개 변수로 확장됩니다. 큰 따옴표로 묶은 문자열 에서 확장이 발생하면 각 매개 변수의 값을 IFS 변수의 첫 번째 문자로 구분하여 단일 필드로 확장하거나 IFS 가 설정되지 않은 경우 로 확장합니다.

@

하나부터 시작하여 위치 매개 변수로 확장됩니다. 확장이 큰 따옴표 안에서 발생하면 각 위치 매개 변수가 별도의 인수로 확장됩니다. 위치 매개 변수가없는 경우, @를 확장하면 @가 큰 따옴표 인 경우에도 0 인수가 생성됩니다. 이것은 기본적으로 $ 1이 "abc"이고 $ 2가 "def ghi"이면 Qq $ @가 두 개의 인수로 확장된다는 것을 의미합니다.

abc def ghi

#

위치 매개 변수의 수로 확장됩니다.

?

가장 최근의 파이프 라인의 종료 상태로 확장됩니다.

- (하이픈.)

현재 옵션 플래그 (문자열에 연결된 단일 문자 옵션 이름)를 호출시, 내장 명령 세트로 또는 쉘에서 암시 적으로 지정하여 확장합니다.

$

호출 된 쉘의 프로세스 ID로 확장됩니다. 서브 쉘은 부모와 동일한 $ 값을 유지합니다.

!

현재 쉘에서 실행 된 가장 최근의 백그라운드 명령의 프로세스 ID로 확장됩니다. 파이프 라인의 경우 프로세스 ID는 파이프 라인의 마지막 명령의 ID입니다.

0 (제로.)

쉘 또는 쉘 스크립트의 이름으로 확장됩니다.

단어 확장

이 절은 단어에 대해 수행되는 다양한 확장을 설명합니다. 나중에 설명하는 것처럼 모든 단어에 대해 모든 확장이 수행되는 것은 아닙니다.

단일 단어 내에서 발생하는 물결 확장, 매개 변수 확장, 명령 대체, 산술 확장 및 인용 제거가 단일 필드로 확장됩니다. 한 단어에서 여러 필드를 만들 수있는 필드 분할 또는 경로 이름 확장 일뿐입니다. 이 규칙에 대한 한 가지 예외는 위에서 설명한 바와 같이 큰 따옴표 안에 특수 매개 변수 @를 확장 한 것입니다.

단어 확장 순서는 다음과 같습니다.

  1. 물결 확장, 매개 변수 확장, 명령 대체, 산술 확장 (모두 동시에 발생 함).
  2. IFS 변수가 널 (Null)이 아닌 한, 단계 (1)에 의해 생성 된 필드에서 필드 분할이 수행됩니다.
  3. 경로명 확장 (set -f 가 적용되지 않는 한).
  4. 견적 제거.

$ 문자는 매개 변수 확장, 명령 대체 또는 산술 평가를 소개하는 데 사용됩니다.

물결표 확장 (사용자의 홈 디렉토리를 대체)

인용 부호가없는 물결표 문자 (~)로 시작하는 단어는 물결표 확장의 대상이됩니다. 슬래시 (/) 나 단어의 끝까지의 모든 문자는 사용자 이름으로 취급되며 사용자의 홈 디렉토리로 대체됩니다. 사용자 이름이 없으면 ~ / foobar와 같이 물결표가 HOME 변수 (현재 사용자의 홈 디렉토리)의 값으로 바뀝니다.

매개 변수 확장

매개 변수 확장 형식은 다음과 같습니다.

expression이 백 슬래시 나 따옴표로 묶인 문자열에서 이스케이프 처리되고 임베디드 산술 확장, 명령 대체 및 변수 확장에서 문자가 이스케이프 처리 될 때까지 표현식이 모든 문자로 구성됩니다. ``} ''와 일치합니다.

매개 변수 확장을위한 가장 간단한 형식은 다음과 같습니다.

있는 경우 매개 변수의 값이 대체됩니다.

매개 변수 이름 또는 기호는 중괄호로 묶을 수 있습니다. 둘 이상의 숫자가있는 위치 매개 변수 또는 매개 변수 다음에 이름의 일부로 해석 될 수있는 문자가 오는 경우를 제외하고는 선택적입니다. 큰 따옴표 안에 매개 변수 확장이있는 경우 :

  1. 경로명 확장은 확장 결과에 대해 수행되지 않습니다.
  2. @를 제외하고는 확장 결과에 필드 분할이 수행되지 않습니다.

또한 매개 변수 확장은 다음 형식 중 하나를 사용하여 수정할 수 있습니다.

기본값 사용. 매개 변수가 설정되지 않았거나 널인 경우 단어 확장이 대체됩니다. 그렇지 않으면 매개 변수의 값이 대체됩니다.

기본 값 할당. 매개 변수가 설정되지 않았거나 널인 경우 단어 확장이 매개 변수에 지정됩니다. 모든 경우에 매개 변수의 최종 값이 대체됩니다. 위치 매개 변수 또는 특수 매개 변수가 아닌 변수 만이 방식으로 할당 될 수 있습니다.

Null 또는 Unset 인 경우 오류를 나타냅니다. 매개 변수가 설정되지 않았거나 널 (NULL) 인 경우, 단어 확장 (또는 단어 생략)이 표준 오류에 기록되고 쉘은 0이 아닌 종료 상태로 종료됩니다. 그렇지 않으면 매개 변수의 값이 대체됩니다. 대화 형 쉘은 종료 할 필요가 없습니다.

대체 값 사용. 파라미터가 설정되어 있지 않은지, null의 경우는 null가 대신됩니다. 그렇지 않으면 단어 확장이 대체됩니다.

이전에 표시된 매개 변수 확장에서 형식의 콜론을 사용하면 설정되지 않았거나 null 인 매개 변수에 대한 테스트가 수행됩니다. 콜론을 생략하면 설정되지 않은 매개 변수에 대한 테스트가 수행됩니다.

문자열 길이. 매개 변수 값의 문자 길이입니다.

하위 문자열 처리를 위해 다음 네 가지 매개 변수 확장이 제공됩니다. 각각의 경우 정규 표현식 표기법 대신 패턴 일치 표기법 (쉘 패턴 참조)을 사용하여 패턴을 평가합니다. 매개 변수가 * 또는 @이면 확장 결과가 지정되지 않습니다. 전체 매개 변수 확장 문자열을 큰 따옴표로 묶는 것은 다음 네 가지 패턴 문자를 따옴표로 묶지 않고 괄호 안에있는 문자를 인용하면이 효과가 발생합니다.

가장 작은 접미어 패턴 제거. 단어는 패턴을 생성하기 위해 확장됩니다. 그런 다음 매개 변수 확장을 수행하면 매개 변수가 생성되며 접미사의 가장 작은 부분이 삭제 된 패턴과 일치합니다.

최대 접미사 패턴 제거. 단어는 패턴을 생성하기 위해 확장됩니다. 그런 다음 매개 변수 확장을 수행하면 매개 변수가 생성되며 접미사의 가장 큰 부분이 삭제 된 패턴과 일치합니다.

가장 작은 접두사 패턴 제거. 단어는 패턴을 생성하기 위해 확장됩니다. 그런 다음 매개 변수를 확장하면 접두사의 가장 작은 부분이 삭제 된 패턴과 일치하는 매개 변수가 생성됩니다.

가장 큰 접두사 패턴 제거. 단어는 패턴을 생성하기 위해 확장됩니다. 그런 다음 매개 변수 확장을 수행하면 접두사의 가장 큰 부분이 삭제 된 패턴과 일치하는 매개 변수가 생성됩니다.

명령 대체

명령 대체를 사용하면 명령 이름 자체 대신 명령 출력을 대체 할 수 있습니다. 명령 대체는 다음과 같이 명령을 묶을 때 발생합니다.

$ (명령)

또는 Po``backquoted ''버전 Pc :

`명령`

쉘은 서브 쉘 환경에서 command를 실행하고 명령 대체를 명령의 표준 출력으로 바꾸어 명령 대체를 확장하여 대체 끝에 하나 이상의 시퀀스를 제거합니다. (출력물이 끝나기 전에 삽입 된 은 제거되지 않지만, 필드 분할 중에는 IFS 의 값과 인용 부호 에 따라 로 변환 될 수 있습니다.)

산술 확장

산술 확장은 산술 표현식을 평가하고 그 값을 대체하는 메커니즘을 제공합니다. 산술 확장 형식은 다음과 같습니다.

$ ((표현식))

표현식은 이중 따옴표 안에있는 것처럼 처리됩니다. 단, 표현식 내의 큰 따옴표는 특별히 처리되지 않습니다. 쉘은 매개 변수 확장, 명령 대체 및 견적 제거에 대한 표현식에서 모든 토큰을 확장합니다.

다음으로, 쉘은이를 이것을 산술 표현식으로 처리하고 표현식의 값을 대체합니다.

공백 분할 (필드 분할)

매개 변수 확장, 명령 대체 및 산술 확장 후 쉘은 필드 분할에 대해 큰 따옴표로 나타나지 않은 확장 및 대체 결과를 스캔하여 여러 필드가 발생할 수 있습니다.

쉘은 IFS 의 각.자를 분리. 자로 취급하고 분리.자를 사용하여 매개 변수 확장 W 명령 대체의 결과를 필드로 분리합니다.

경로 이름 확장 (파일 이름 생성)

-f 플래그가 설정되어 있지 않으면 단어 분할이 완료된 후 파일 이름 생성이 수행됩니다. 각 단어는 일련의 패턴으로 표시되며 슬래시로 구분됩니다. 확장 프로세스는 단어를 지정된 패턴과 일치하는 문자열로 각 패턴을 대체하여 이름을 만들 수있는 기존 파일의 이름으로 바꿉니다. 여기에는 두 가지 제한 사항이 있습니다. 첫째, 패턴은 슬래시가 포함 된 문자열과 일치 할 수 없으며 둘째, 패턴의 첫 번째 문자가 마침표가 아닌 한 마침표로 마침표로 시작하는 문자열과 패턴을 일치시킬 수 없습니다. 다음 섹션에서는 Pathname Expansion과 case (1) 명령에 사용되는 패턴을 설명합니다.

쉘 패턴

패턴은 자신과 일치하는 일반 문자와 메타 문자로 구성됩니다. 메타 문자는``! ''``* '```?' '와``[' '인용 부호가 붙은 특별한 의미를 잃습니다. 명령 또는 변수 대체가 수행되고 달러 기호 또는 역 인용 부호가 큰 따 H 표가 아닌 경우, 변수의 값 또는 명령의 출력이이.자를 위해 스캔되어 메타 문자로 변환됩니다.

별표 (``* '')는 모든 문자열을 찾습니다. 물음표는 모든 단일 문자와 일치합니다. 왼쪽 괄호 (``[ '')는 문자 클래스를 소개한다. 문자 클래스의 끝은 (`` '' ')로 표시되며``' ''가 빠진 경우``[ ''는 문자 클래스를 도입하지 않고``[ ''와 일치합니다. 문자 클래스는 대괄호 사이의 문자와 일치합니다. 문자의 범위는 빼기 부호를 사용하여 지정할 수 있습니다. 문자 클래스는 느낌표를 문자 클래스의 첫 번째 문자로 만들어 보완 할 수 있습니다.

문자 클래스에`` '' '를 포함 시키려면, 나열된 첫 번째 문자로 만드십시오 (``!' '다음에). 빼기 기호를 포함 시키려면 나열된 첫 번째 또는 마지막 문자로 지정하십시오.

내장재

이 절에서는 별도의 프로세스에서 수행 할 수없는 작업을 수행해야하기 때문에 내장 명령을 나열합니다. 이것들 이외에도 효율성을 위해 내장 될 수있는 몇 가지 다른 명령이 있습니다 (예 : echo 1).

:

0 (true) 종료 값을 리턴하는 널 (null) 명령.

. 파일

지정된 파일의 명령은 쉘이 읽고 실행합니다.

별칭 [ 이름 [ = 문자열 ... ]]

name = string 이 지정되면 쉘은 값 문자열로 별명 이름 을 정의합니다. name 만 지정하면 별명 이름 의 값이 인쇄됩니다. 인수가없는 경우, 별명 내장 명령은 정의 된 모든 별명의 이름과 값을 인쇄합니다 ( unalias 참조 )

bg [ 취업] ...

지정된 작업 (또는 작업이 없으면 현재 작업)을 백그라운드에서 계속하십시오.

명령 명령 인수 ...

지정된 내장 명령을 실행하십시오. (내장 명령과 이름이 같은 쉘 함수가있을 때 유용합니다.)

cd [ 디렉토리 ]

지정된 디렉토리 (기본 $ HOME) 로 전환하십시오. CDPATH에 대한 항목이 cd 명령의 환경에 나타나거나 셸 변수 CDPATH 가 설정되고 디렉토리 이름이 슬래시로 시작하지 않으면 CDPATH에 나열된 디렉토리가 검색됩니다 지정된 디렉토리. CDPATH 의 형식은 PATH 의 형식과 동일합니다. 대화식 쉘에서 cd 명령은 사용자가 지정한 이름과 다른 경우 실제로 전환 한 디렉토리의 이름을 인쇄합니다. 이는 CDPATH 메커니즘이 사용되었거나 기호 링크가 넘어 졌기 때문에 다를 수 있습니다.

eval string ...

모든 인수를 공백으로 연결하십시오. 그런 다음 명령을 다시 구문 분석하고 실행하십시오.

exec [ 명령 인수 ... ]

명령을 생략하지 않는 한, 쉘 프로세스는 지정된 프로그램으로 대체됩니다 (쉘 내장 또는 함수가 아닌 실제 프로그램이어야 함). exec 명령의 모든 재 지정은 영구적으로 표시되므로 exec 명령이 완료 될 때 실행 취소되지 않습니다.

exit [ exitstatus ]

쉘 프로세스를 종료하십시오. exitstatus 가 주어지면 쉘의 종료 상태로 사용됩니다. 그렇지 않으면 선행 명령의 종료 상태가 사용됩니다.

이름 내보내기 ...

수출 -p

지정된 이름은 후속 명령의 환경에 나타나도록 내보내집니다. 변수를 un-export하는 유일한 방법은 그것을 unset하는 것입니다. 셸을 사용하면 변수의 값을 서면으로 내보내는 동시에 설정 될 수 있습니다

내보내기 이름 = 값

인수가없는 경우 export 명령은 내 보낸 모든 변수의 이름을 나열합니다. -p 옵션을 지정하면 출력이 비대화 형으로 적절하게 형식화됩니다.

fc [- e 편집기 ] [ first [ last ]]

fc -l [- nr ] [ first [ last ]]

fc -s [ old = new ] [ first ]

fc 내장 명령은 이전에 대화 형 쉘에 입력 된 명령을 나열하거나 편집하고 다시 실행합니다.

-e 편집기

편집기에서 명명 한 편집기를 사용하여 명령을 편집하십시오. 편집기 문자열은 명령 이름이며 PATH 변수를 통해 검색 할 수 있습니다. - e 가 지정되지 않은 경우 FCEDIT 변수의 값이 기본값으로 사용됩니다. FCEDIT 가 널 (null)이거나 설정되지 않은 경우, EDITOR 변수의 값이 사용됩니다. EDITOR 가 널이거나 설정되지 않은 경우 ed (1)이 편집기로 사용됩니다.

-l (ell)

명령을 편집하는 대신 명령을 나열하십시오. 명령은 첫 x ​​째 피연산자와 마지막 피연산자가 나타내는 순서대로 쓰여지고, 각 명령 앞에 명령 번호가 오는 -r의 영향을 ^습니다.

-엔

-l을 사용하여 나열 할 때 명령 번호를 표시하지 않습니다.

-아르 자형

나열된 명령의 순서를 반대로합니다 ( -l 또는 편집 됨 ( -l 또는 -s 도 사용하지 않음 )

-에스

편집기를 호출하지 않고 명령을 다시 실행하십시오.

먼저

마지막

나열하거나 편집 할 명령을 선택하십시오. 액세스 할 수있는 이전 명령의 수는 HISTSIZE 변수 의 값에 의해 결정됩니다. first 또는 last 값 또는 둘 모두의 값은 다음 중 하나입니다.

[+] 숫자

명령 번호를 나타내는 양수. 명령 번호는 -l 옵션으로 표시 할 수 있습니다.

-번호

이전에 명령 수를 실행 한 명령을 나타내는 음의 십진수. 예를 들어, -1은 바로 이전 명령입니다.

해당 문자열로 시작하는 가장 최근에 입력 한 명령을 나타내는 문자열입니다. old = new 피연산자가 -s 와 함께 지정되지 않으면 첫 번째 피연산자의 문자열 형식에 포함 된 등호가 포함될 수 없습니다.

다음 환경 변수는 fc의 실행에 영향을줍니다.

FCEDIT

사용할 편집기의 이름입니다.

과장된

액세스 할 수있는 이전 명령 수.

fg [ 취업 ]

지정된 작업 또는 현재 작업을 포 그라운드로 이동하십시오.

getopts optstring var

POSIX getopts 명령은 Bell Labs에서 파생 된 getopt (1)와 혼동하지 마십시오.

첫 번째 인수는 일련의 문자로 이루어져야하며, 각 인수 앞에 옵션으로 인수가 필요함을 나타내는 콜론이 붙을 수 있습니다. 지정된 변수는 구문 분석 된 옵션으로 설정됩니다.

getopts 명령은 공백을 포함하는 인수를 처리하기 때문에 이전 getopt (1) 유틸리티를 더 이상 사용하지 않습니다.

getopts 내장 함수는 매개 변수 목록에서 옵션과 인수를 얻는 데 사용할 수 있습니다. 이 옵션을 호출하면 getopts 는 옵션 문자열의 다음 옵션 값을 var에 지정된 쉘 변수의 목록에두고 쉘 변수의 인덱스는 OPTIND로 지정 합니다. 쉘이 호출되면 OPTIND 는 1로 초기화됩니다. 인수가 있으면, 내장 된 getopts 는 그것을 쉘 변수 OPTARG에 넣습니다. 옵션이 optstring에 허용되지 않으면 OPTARG 가 설정되지 않습니다.

optstring 은 인식 된 옵션 문자의 문자열입니다. 글자 뒤에 콜론이 오는 경우, 옵션에는 공백으로 구분 될 수도 있고 분리되지 않을 수도있는 인수가 있어야합니다. 옵션 문자가 예상되는 곳에서 발견되지 않으면 getopts 는 변수 var 를``? ''로 설정합니다. getoptsOPTARG 를 설정 해제하고 출력을 표준 오류에 기록합니다. optstring 의 첫 번째 문자로 콜론을 지정하면 모든 오류가 무시됩니다.

마지막 옵션에 도달하면 0이 아닌 값이 반환됩니다. 나머지 인수가 없으면 getoptsvar 를 특수 옵션 인``- ''로 설정하고 그렇지 않으면 var 를``? ''로 설정합니다.

다음 코드 단편은 인수가 필요한 옵션 [a]와 [b] 및 옵션 [c]을 취할 수있는 명령의 인수를 처리하는 방법을 보여줍니다.

while getopts abc : f
해야 할 것
case $ f 안에
a | b) flag = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; 출구 1 ;;
에삭
끝난
`expr $ OPTIND - 1`을 시프트하십시오.

이 코드는 다음 중 하나를 동등한 것으로 간주합니다.

cmd -acarg 파일 파일
cmd -a -c arg 파일 file
cmd -carg -a 파일 file
cmd -a -carg - 파일 file

해시 -rv 명령 ...

셸은 명령 위치를 기억하는 해시 테이블을 유지 관리합니다. 인수가 없으면 hash 명령은이 테이블의 내용을 인쇄합니다. 마지막 cd 명령 이후로 보지 않은 항목에는 별표가 표시됩니다. 이러한 항목이 유효하지 않을 수 있습니다.

인수를 사용하여 해시 명령은 해시 테이블에서 지정된 명령을 제거한 다음 (함수가 아닌 경우) 찾은 다음 찾습니다. - v 옵션을 사용하면 해시가 명령을 찾았을 때 명령의 위치를 ​​출력합니다. -r 옵션을 사용하면 해시 명령이 함수를 제외하고 해시 테이블의 모든 항목을 삭제합니다.

직업 [ 직업 ]

작업의 프로세스 ID를 출력하십시오. 작업 인수가 생략되면 현재 작업이 사용됩니다.

일자리

이 명령은 현재 쉘 프로세스의 하위 인 모든 백그라운드 프로세스를 나열합니다.

pwd

현재 디렉토리를 인쇄하십시오. builtin 명령은 현재 디렉토리가 매번 다시 계산되기보다는 기억하고 있기 때문에 builtin 명령은 같은 이름의 프로그램과 다를 수 있습니다. 이렇게하면 더 빠릅니다. 그러나 현재 디렉토리의 이름이 바뀌면 pwd 의 내장 버전은 계속 디렉토리의 이전 이름을 인쇄합니다.

[- p 프롬프트 ] [- r ] 변수를 읽으십시오 ...

- p 옵션이 지정되고 표준 입력이 터미널 인 경우 프롬프트가 인쇄됩니다. 그런 다음 표준 입력에서 행을 읽습니다. 후행 줄 바꿈은 줄에서 삭제되고 줄은 위의 단어 나누기 절에서 설명한대로 분할되고 조각은 순서대로 변수에 할당됩니다. 하나 이상의 변수를 지정해야합니다. 변수보다 많은 조각이 있으면 나머지 조각 ( IFS 에서 분리 된 문자와 함께)이 마지막 변수에 할당됩니다. 조각보다 많은 변수가 있으면 나머지 변수에 널 문자열이 지정됩니다. EOF가 입력시에 발생하지 않으면 read 내장 명령은 성공을 나타냅니다.이 경우 실패가 반환됩니다.

기본적으로 - r 옵션을 지정하지 않으면, 백 슬래시``\ ''는 이스케이프 문자로 작동하여 다음 문자가 문자 그대로 처리됩니다. 백 슬래쉬 뒤에 개행이 오는 경우, 백 슬래시와 개행은 삭제됩니다.

읽기 전용 이름 ...

읽기 전용 -p

지정된 이름은 읽기 전용으로 표시되므로 나중에 수정하거나 설정을 취소 할 수 없습니다. 쉘은 변수의 값이 쓰기 로만 읽기 전용 으로 표시되는 동시에 설정되도록 허용합니다

읽기 전용 name = value

인수가 없으면 readonly 명령은 모든 읽기 전용 변수의 이름을 나열합니다. -p 옵션을 지정하면 출력이 비대화 형으로 적절하게 형식화됩니다.

[{- options | + 옵션 | - arg ... ]

set 명령은 세 가지 다른 기능을 수행합니다.

인수없이 모든 쉘 변수의 값을 나열합니다.

옵션이 주어지면 지정된 옵션 플래그를 설정하거나 Sx 인수 목록 처리 섹션에서 설명한대로 지 웁니다.

set 명령의 세 번째 사용은 쉘의 위치 매개 변수 값을 지정된 args로 설정하는 것입니다. 옵션을 변경하지 않고 위치 매개 변수를 변경하려면``- ''을 첫 번째 인수로 사용하십시오. args가 없으면 set 명령은 모든 위치 매개 변수를 지 웁니다 (`` shift $ # ''를 실행하는 것과 같습니다).

가변 값

변수에 값을 할당합니다. 일반적으로 setvar를 사용하는 대신 variable = value를 쓰는 것이 좋습니다. setvar 는 이름이 매개 변수로 전달되는 변수에 값을 할당하는 함수에서 사용하기위한 것입니다.

쉬프트 [ n ]

위치 매개 변수를 n 번 이동하십시오. shift$ 1 의 값을 $ 2 의 값을 $ 2 의 값으로 $ 3 의 값으로 설정하고, 계속하여 $ # 의 값을 1 씩 줄입니다. n이 위치 매개 변수의 수보다 큰 경우, shift 는 오류 메시지를 발행하고 리턴 상태 2로 종료합니다.

타임스

셸 및 셸에서 실행되는 프로세스에 대한 누적 된 사용자 및 시스템 시간을 인쇄하십시오. 리턴 상태는 0입니다.

트랩 액션 신호 ...

쉘이 지정된 신호를 수신 할 때 조치를 구문 분석하고 실행하게하십시오. 신호는 신호 번호로 지정됩니다. signal0이면 쉘이 종료 될 때 액션이 실행됩니다. action 은 null이거나``- ''일 수 있습니다. 전자는 지정된 신호를 무시하고 후자는 기본 조치를 취하게합니다. 쉘이 서브 쉘을 포크 할 때, 덫을 놓은 (무시할 수없는) 시그널을 디폴트 액션으로 리셋합니다. trap 명령은 쉘 입력시 무시 된 신호에는 영향을 미치지 않습니다.

타입 [ 이름 ... ]

각 이름을 명령으로 해석하고 명령 검색의 해상도를 인쇄하십시오. 가능한 해결책은 쉘 키워드, 별명, 쉘 내장 명령 , 명령, 추적 별명 및 찾을 수없는 것입니다. 별칭의 경우 별칭 확장이 인쇄됩니다. 명령 및 추적 된 별명의 경우 명령의 전체 경로 이름이 인쇄됩니다.

ulimit [- H -S ] [- a -tfdscmlpn [ value ]]

프로세스에 대한 하드 또는 소프트 제한에 대해 문의하거나 설정하거나 새 제한을 설정합니다. 하드 한도 (어떤 프로세스도 위반할 수 없으며, 한 번 낮추지 않은 프로세스는 제기 할 수 없음)와 소프트 한도 (프로세스가 신호를 보내지 만 반드시 죽일 필요는없고 제기 될 수도 있음) 사이의 선택은 이 플래그들 :

-H

엄격한 제한에 대해 설정하거나 문의하십시오.

-에스

소프트 한도에 대해 설정하거나 문의하십시오. - H 및 - S 가 지정되지 않으면 소프트 제한이 표시되거나 두 제한이 설정됩니다. 둘 다 지정되면 마지막 하나가 이깁니다.

심문하거나 설정할 수있는 제한은 다음 플래그 중 하나를 지정하여 선택합니다.

-에이

모든 전류 한계를 보여라.

-티

CPU 시간 제한 (초) 표시 또는 설정

-에프

생성 될 수있는 가장 큰 파일에 대한 제한을 보여 주거나 설정합니다 (512 바이트 블록 단위).

-디

프로세스의 데이터 세그먼트 크기에 대한 제한을 표시하거나 설정합니다 (킬로바이트 단위).

-에스

프로세스의 스택 크기 제한 표시 또는 설정 (KB 단위)

-기음

생성 될 수있는 최대 코어 덤프 크기에 대한 제한을 표시하거나 설정합니다 (512 바이트 블록으로).

-엠

프로세스가 사용할 수있는 총 물리적 메모리의 제한을 보여 주거나 설정합니다 (킬로바이트 단위).

-엘

프로세스가 mlock (2)로 잠글 수있는 메모리의 양을 표시하거나 설정합니다 ( 킬로바이트 단위 ).

-피

이 사용자가 한 번에 가질 수있는 프로세스 수에 대한 제한 표시 또는 설정

-엔

한 번에 프로세스가 열 수있는 파일의 수를 표시하거나 설정합니다.

이들 중 어느 것도 지정되지 않으면 표시되거나 설정된 파일 크기의 한계입니다. value가 지정되면 한계가 해당 숫자로 설정됩니다. 그렇지 않으면 현재 한계가 표시됩니다.

임의의 프로세스의 한계는 sysctl (8) 유틸리티를 사용하여 표시하거나 설정할 수 있습니다.

umask [ 마스크 ]

umask (umask (2) 참조)의 값을 지정된 8 진수 값으로 설정하십시오. 인수가 생략되면, umask 값이 인쇄됩니다.

unalias [- a ] [ 이름 ]

name 이 지정되면 쉘은 해당 별명을 제거합니다. -a가 지정되면 모든 별명이 제거됩니다.

설정되지 않은 이름 ...

지정된 변수 및 함수는 설정 해제 및 반출되지 않습니다. 주어진 이름이 변수와 함수 모두에 해당하면 변수와 함수가 모두 설정 해제됩니다.

기다려 [ 직업 ]

지정된 작업이 완료 될 때까지 기다렸다가 작업의 마지막 프로세스의 종료 상태를 리턴하십시오. 인수가 생략되면, 모든 작업이 완료 될 때까지 대기하고 종료 상태 0을 리턴하십시오.

명령 행 편집

sh 가 터미널에서 대화식으로 사용되면 현재 명령과 명령 기록 (Sx Builtins의 fc 참조)은 vi 모드 명령 줄 편집을 사용하여 편집 할 수 있습니다. 이 모드는 아래에 설명 된 명령을 사용합니다.이 명령은 vi 맨 페이지에 설명 된 것과 유사합니다. `set '-o vi는 vi 모드 편집을 가능하게하고 sh를 vi 삽입 모드에 놓습니다. vi 모드를 사용하면 sh를 삽입 모드와 명령 모드 사이에서 전환 할 수 있습니다. 편집기는 여기에 전체적으로 설명되어 있지는 않지만 나중에 설명 될 것입니다. 그것은 vi와 유사합니다 : Aq ESC를 입력하면 명령 VI 명령 모드로 들어가게됩니다. 명령 모드에서 Aq 리턴을 누르면 쉘에 라인이 전달됩니다.

중요 : man 명령 ( % man )을 사용하여 특정 컴퓨터에서 명령이 어떻게 사용되는지보십시오.