답변1
아래에는 각 수정자에 대한 예가 나와 있습니다. 및 와 같은 일부는 여기에 표시된 용도 외에도 exec
다양한 용도로 사용됩니다 .command
실행하는 데 사용되는 유틸리티는
-
0번째 인수(명령 이름)의 첫 번째 문자로 대시를 삽입합니다. 명령 이름의 첫 번째 문자인 대시는 로그인 쉘로 초기화해야 함을 쉘에 알리는 일반적인 방법입니다.# Start the yash shell as a login shell: - yash
이로 인해 쉘이 다른 시작 스크립트 세트를 읽기 시작할 수 있습니다. 예를 들어 의 경우 파일을 먼저
yash
읽고~/.yash_profile
, 그렇지 않으면 읽지 않습니다.-
쉘이 의 첫 번째 문자로 시작되면$0
로그인 쉘이 됩니다. 로그인 쉘에는 일반적으로l
(소문자 ell) 도 있습니다$-
(비록bash
쉘은 이 규칙을 따르지 않는 것 같습니다).$ sh -c 'echo "$0"; echo "$-"' sh ch
$ - sh -c 'echo "$0"; echo "$-"' -sh clh
사용
builtin
:builtin cd mydir
cd
예를 들어 , 기능의 일부로 작업 디렉토리를 실제로 변경하기 위해 호출되는 내장 변형인 셸 함수를 작성하려는 경우cd
유용할 수 있습니다 . 그냥 사용하면cd
함수에 대한 재귀 호출이 발생합니다.$ cd () { builtin cd "$@" && printf 'Now in %s\n' $PWD; } $ cd /tmp Now in /tmp
명령
command
은표준 POSIX 명령예를 들어, 이는 사용자의 현재 시스템에 특정 유틸리티가 존재하는지 확인하는 데 사용될 수 있습니다PATH
.if ! command -v gsed >/dev/null 2>&1; then echo 'gsed is not available' fi
이
command
명령은 위에서 설명한 것과 유사한 방식으로 특정 유틸리티에 대한 별칭 및 함수 조회를 비활성화하는 데에도 일반적으로 사용됩니다builtin
.키워드
exec
는또한 표준, 완전히 사용할 수 있습니다바꾸다현재 쉘 및 다른 프로세스:# Replace the shell with bash exec bash
이후 입력은 쉘 세션으로 대체
exit
되었기 때문에 원래 쉘 세션으로 돌아가지 않습니다bash
.또한 이를 사용하여
exec
현재 쉘의 표준 I/O 스트림에 대한 리디렉션을 설정할 수도 있습니다.현재 대화식 쉘 세션에 대해 철자 교정(
setopt CORRECT
)이 활성화된 경우nocorrect
다음을 사용하십시오.아니요명령 수정을 활성화합니다.일반적으로:
$ setopt CORRECT $ seed zsh: correct 'seed' to 'sed' [nyae]? n zsh: command not found: seed
그리고
nocorrect
:$ setopt CORRECT $ nocorrect seed zsh: command not found: seed
이
noglob
수정자는 현재 명령에 대해 와일드카드를 비활성화합니다.$ noglob echo * *
noglob
수정자가 없으면*
패턴이 확장되고 결과 단어(현재 디렉터리의 파일 이름)가 인수로 제공됩니다echo
.다른 셸에서는 와일드카드를 사용하여 일시적으로 껐다
set -f
가 다시 켤 수 있습니다set +f
. 이것은 ~이 될 것이다표준 방식셸에서 파일 이름 글로빙을 비활성화합니다. 이set -f
명령은 쉘 이zsh
에뮬레이트되거나 .sh
ksh