TCSH(1)

명칭
tcsh - 파일명 보완과 명령행 편집을 추가한 C 쉘

서식
tcsh [-bcdefFimnqstvVxX] [-Dname[=value]] [arg ...]
tcsh -l

해설
tcsh 는, 버크 레이판 UNIX 의 C 쉘 csh(1)와 완전하게 호환성이 있어, 한층 더 기능 강화한 쉘입니다. 대화적인 로그인 쉘, 또 셸 스크립트의 명령 프로세서의 양쪽 모두의 용도로 사용되는 명령 인터프리터입니다. tcsh 에는, 명령행 편집 (커멘드행 편집의 항을 참조), 프로그램 가능한 단어의 보완 (보완과 일람의 항을 참조), 스펠 정정 (스펠 정정의 항을 참조), 히스토리 (역사 치환의 항을 참조), 작업 제어 (작업의 항을 참조), C 언어풍의 문법이 있습니다. 신기능의 장에서는, csh(1)에는 존재하지 않는, tcsh 의 주된 추가 기능에 대해 설명하고 있습니다. 이 메뉴얼을 통해, tcsh 의 기능 가운데, csh(1)의 대부분의 실장 (특히 4.4BSD 의 csh)에 없는 기능에 대해, label (+)를 붙여 있습니다. 그리고, csh(1)에 있었지만 문서화되어 있지 않았던 기능에 label (u)를 붙여 있습니다.

  인수 리스트 프로세싱
쉘에의 1 번째의 인수 (인수 0 번)가 `-'의 경우, 쉘은 로그인 쉘이 됩니다. 쉘을 -l 플래그를 지정해 기동하는 것도 로그인 쉘로 할 수 있습니다.

나머지의 플래그는 이하와 같이 해석됩니다.

-b  이 플래그는, 옵션의 처리를 강제적으로 중단시키는 경우에 사용합니다. 이 플래그 이후의 인수는 모두, 옵션은 아닌 것으로서 처리됩니다. 이것에 의해, 혼란을 피해 세공을 하지 않아도, 셸 스크립트에 옵션을 건네주는 것이 가능하게 됩니다. set-user ID 스크립트는 본옵션없이는 실행할 수 없습니다.

-c  명령을, 본플래그의 다음에 오는 인수 (이 인수는 생략 할 수 없습니다. 또, 1 개(살) 뿐일 필요가 있습니다)로부터 읽어들여, 실행합니다. 이 인수는, 나중에 참조할 수 있도록(듯이), 셸 변수 command 에 격납됩니다. 나머지의 인수는, 셸 변수 argv 에 대입됩니다.

-d  로그인 쉘인지 어떤지에 관계없이, 스타트 업과 셧다운의 항으로 해설되고 있도록(듯이) ~/.cshdirs 로부터, 디렉토리 스택을 읽어들입니다. (+)

-Dname[=value]
    환경 변수 name 에 값 value 를 설정합니다. (Domain/OS 마셔) (+)

-e  기동한 명령이 이상종료(ABEND) 하거나 0 이 아닌 종료 스테이터스를 돌려주었을 때에, 즉시 쉘을 종료합니다.

-f  ~/.tcshrc 를 읽어들이지 않고 무시하므로, 기동이 고속으로 됩니다.

-F  프로세스를 생성할 때에 vfork(2) 대신에 fork(2)를 사용합니다. (Convex/OS 마셔) (+)

-i  비록 단말상에서 실행되어 있지 않아도, 대화적으로 동작해 최상정도 레벨의 입력 시에 prompt를 표시합니다. 입력과 출력이 함께 단말인 경우, 본옵션없이도 쉘은 대화적으로 동작합니다.

-l  로그인 쉘이 됩니다 (-l 가, 지정된 유일한 플래그이다 경우에게만 유효합니다).

-m  실효 유저에 속하지 않아도 ~/.tcshrc 를 로드합니다. 새로운 버젼의 su(1)는 -m 를 쉘에 건네주는 것이 할 수 있습니다. (+)

-n  명령의 해석은 실시합니다만, 실행은 하지 않습니다. 셸 스크립트의 디버그에 도움이 됩니다.

-q  SIGQUIT (시그널 처리의 항을 참조)를 받아들이도록(듯이) 해, 디버거의 아래에서 사용되어도 작동하게 됩니다. 작업 제어는 무효가 됩니다. (u)

-s  표준 입력으로부터 명령을 읽어들입니다.

-t  입력으로부터 1 행만 읽어들여, 그것을 실행합니다. 입력행의 개행의 직전에 `\'를 두는 것으로, 다음의 행에의 계속을 실시할 수가 있습니다.

-v  셸 변수 verbose 를 설정합니다. 이것에 의해, 역사 치환된 상태의 명령행을 표시하게 됩니다.

-x  셸 변수 echo 를 설정합니다. 이것에 의해, 실행 직전에, 실행하는 명령을 표시하게 됩니다.

-V  ~/.tcshrc 를 실행하기 전에, 셸 변수 verbose 를 설정합니다.

-X  ~/.tcshrc 를 실행하기 전에, 셸 변수 echo 를 설정합니다.

-X  에 대한 -x 의 관계는, -V 에 대한 -v 의 관계에 상당합니다.

플래그 인수의 처리뒤, 만약 인수가 남아 있어, 한편, -c, -i, -s, -t 의 어느 플래그도 지정되어 있지 않으면, 남아 있는 인수 중 최초의 것은 명령 파일, 즉 「스크립트」의 이름으로 간주해집니다. 쉘은 이 파일을 오픈해,`$0'에 의한 치환에 대비해 파일명을 보존합니다. 많은 시스템은, 스크립트가 본쉘과 호환성이 없다 version 6 또는 version 7 의 표준의 쉘을 사용하고 있기 (위해)때문에, 스크립트의 선두의 캐릭터가 `#'가 아닌 경우, 즉 스크립트가 코멘트로부터 시작되지 않는 경우, 본쉘은 그러한 「표준」의 쉘을 기동해 실행합니다.

나머지의 인수는 셸 변수 argv 로 설정됩니다.

  스타트 업과 셧다운
로그인 쉘의 경우는, 실행 개시에 즈음해, 우선 시스템 파일 /etc/csh.cshrc 와 /etc/csh.login 를 읽어들여 실행합니다. 그리고 쉘을 기동한 유저의홈디렉토리중에서, 우선 처음에 ~/.tcshrc (+)를 읽어들여 실행합니다. 만약, ~/.tcshrc 가 발견되지 않는 경우는, ~/.cshrc 를 읽어들여 실행합니다. 다음에, ~/.history (혹은, 셸 변수 histfile 의 값)를, 그 다음에 ~/.login 를, 마지막으로, ~/.cshdirs (혹은, 셸 변수 dirsfile 의 값) (+)를 읽어들여 실행합니다. 컴파일의 방법에 의해, 쉘은 /etc/csh.cshrc 의 다음에는 없게 전에 /etc/csh.login 를 읽어들여, ~/.tcshrc (또는 ~/.cshrc)와 ~/.history 의 다음에는 없게 전에 ~/.login 를 읽어들이는 경우가 있습니다. 셸 변수 version 를 참조해 주세요. (+)

로그인 쉘이 아닌 경우는, /etc/csh.cshrc 와 ~/.tcshrc (또는 ~/.cshrc)만을 기동시에 읽어들입니다.

스타트 업 파일의 예는, http://tcshrc.sourceforge.net (을)를 봐 주세요.

stty(1)나 tset(1)와 같은 명령은, 로그인한다 마다 1 번만 실행될 필요가 있습니다만, 이러한 명령은, 보통은 ~/.login 파일에 넣습니다. csh(1)와 tcsh 의 양쪽 모두로 같은 파일세트를 사용한다 필요가 있는 유저는, ~/.cshrc 만을 사용해, 그 중에 셸 변수 tcsh (값은 임의)가 있는지 어떤지 체크해 (으)로부터, tcsh 특유의 명령을 사용하도록(듯이) 합니다. 또는, ~/.cshrc 와 ~/.tcshrc 의 양쪽 모두를 사용하지만, ~/.tcshrc 로, source 명령 (편입 커멘드의 항을 참조)를 사용 ~/.cshrc 를 읽어들이도록(듯이) 합니다. 이하, 이 메뉴얼의 나머지의 부분에서 `~/.tcshrc'라고 표현했을 때는, 「~/.tcshrc, 또는 ~/.tcshrc 가 발견되지 않는다 경우는 ~/.cshrc」라고 하는 의미로 사용합니다.

통상, 쉘은 prompt `> '를 표시해, 단말로부터 명령의 읽기를 개시합니다 (인수 처리와 명령 스크립트를 포함한 파일의 처리를 위한 쉘의 사용에 대해서는, 다음에 설명합니다). 쉘은, 입력된 명령행의 읽어들여, 읽어들인 커멘드행을 단어에 분해, 및 명령 히스토리에의 격납, 커멘드행의 해석, 명령행안의 커멘드 각각의 실행을 반복합니다.

로그아웃 하려면 , 하늘의 행으로 `^D'와 타이프 치는지, `logout'하는지, `login'하는지, 쉘의 자동 로그아웃 기구 (셸 변수 autologout 를 참조)를 사용합니다. 로그인 쉘이 실행 종료하려면 , 로그아웃의 상황에 따라 셸 변수 logout 를 `normal'인가 `automatic'로 설정해, /etc/csh.logout 파일과 ~/.logout 파일에 있다 명령을 실행합니다. 컴파일의 방법에 따라서는, 쉘은, 로그아웃시에 DTR 를 떨어뜨린다 일이 있습니다. 이것에 대해서는 셸 변수 version 를 참조해 주세요.

시스템의 로그인 파일명, 로그아웃 파일명은, 다른 csh(1) 간에서의 호환성을 유지하기 위해서(때문에), 시스템 마다 파일이 다릅니다. 이것에 대해서는, 관련 파일를 참조해 주세요.

  편집
처음에, 명령행 에디터에 대해 설명합니다. 보완과 일람와스펠 정정의 2 개의 기능은, 편집 명령로서 실장되고 있습니다만, 특별히 나누어 설명할 필요가 있기 (위해)때문에, 항을 재차 설명합니다. 마지막으로, 편집 명령의 항으로, 쉘에 특유의 편집 커멘드에 대해, 일람을 주어 디폴트의 바인드와 함께 설명합니다.

  명령행 편집 (+)
명령행의 입력 데이터는, GNU Emacs 나 vi(1)로 사용되고 있는 것과 잘 닮은 키 순차 순서를 사용해 편집할 수 있습니다. 셸 변수 edit 가 세트 되고 있을 때 마셔, 편집할 수 있도록(듯이) 되어 있습니다. 대화적인 쉘에서는, 이 값은 디폴트로 설정되어 있습니다. 편입 명령 bindkey 로, 키 바인드를 변경하거나 표시하거나 할 수 있습니다. 디폴트에서는, Emacs 형식의 키 바인드가 사용되고 있습니다 (다른 방법으로 컴파일 하지 않으면 그렇게 됩니다. 셸 변수 version 를 참조). 그러나, 명령 bindkey 로, 키 바인드를 vi 형식에 일괄해 변경할 수 있습니다.

쉘은, 항상 커서 키 (환경 변수 TERMCAP 로 정의된 것입니다)를, 다음과 같이 할당하고 있습니다.

    하 화살표
        down-history
    상 화살표
        up-history
    왼쪽 화살표
        backward-char
    오른쪽 화살표
        forward-char

다른 1 캐릭터 바인드에 의해, 변함없으면 이와 같이 됩니다. 이러한 바인드로 하고 싶지 않은 경우, settc 를 사용해, 커서 키의 escape sequence를 하늘의 캐릭터 라인에 세트 할 수가 있습니다. ANSI/VT100 의 커서 키 순차 순서는, 항상 바인드 되고 있습니다.

그 외의 키 바인드는, 그 대부분은, Emacs, vi(1) 유저가 예상할 수 있는 것입니다. 또, 간단하게 bindkey 명령로 표시시킨다 일도 할 수 있으므로, 여기서, 그러한 바인드를 늘어놓을 필요는 없을 것입니다. 같은, bindkey 명령은, 각각의 편집 커멘드를 간단한 설명 첨부로, 표시시킬 수가 있습니다.

주의: 「단어」라고 하는 개념에 관해서, 편집 명령은, 쉘과 같은 개념을 가지지 않는 것에 주의해 주세요. 에디터는, 셸 변수 wordchars 안에는 없는 비영수캐릭터 (영문자, 숫자가 어느 쪽도 아닌 캐릭터)에 의해 단어의 단락을 결정합니다. 한편, 쉘은, 화이트 스페이스 (공백, 탭, 개행)와 자구 구조의 항으로 열거하는 특수한 의미를 가지는 캐릭터의 몇개인가를 식별합니다.

  보완과 일람 (+)
쉘은, 일의로 정해지는 단축형이 주어지면(자), 자주 단어의 보완을 실시할 수가 있습니다. 단어의 일부 (예를 들어 `ls /usr/lost')를 타이프 쳐, 탭 키를 누르면(자), 편집 명령 complete-word 가 실행합니다. 쉘은, 파일명 `/usr/lost'를 보완해 `/usr/lost+found/'로 합니다. 이 때, 입력 버퍼 중(안)에서, 불완전한 단어를 완전한 단어로 옮겨놓습니다. (주의: 말단의 `/'에 임해서: 보완에서는, 디렉토리명을 보완하면(자) 마지막에 `/'를 덧붙입니다. 그리고, 디렉토리명 이외의 단어를 보완하면(자), 말미에 공백 캐릭터를 덧붙입니다. 이렇게 하는 것으로, 타입 입력이 빨라져, 또, 보완이 성공했던 것(적)이 한눈에 압니다. 셸 변수 addsuffix 세트를 떼면, 이것들을 덧붙이지 않게 할 수도 있습니다. ) 합치하는 것이 눈에 띄지 않는 경우 (아마 `/usr/lost+found'가 존재하지 않는 경우지요), 단말의 벨이 울립니다. 단어가 벌써 보완되고 있는 경우 (시스템에 `/usr/lost'가 존재하는 경우인가, 혹은, 유저가 아득한 앞까지 생각해, 모든 것을 입력해 버리고 있었을 경우지요),`/'또는 공백 캐릭터가 말미에 아직 없으면, 덧붙일 수 있습니다.

보완은, 행의 제일 최후가 아니어도, 도중 어디서에서도 기능합니다. 그리고, 텍스트의 보완에 의해, 그 만큼, 행의 나머지는 우측향에 밀립니다. 단어의 중간으로 보완되었을 경우, 자주 커서의 우측으로 캐릭터가 남아, 그것을 지우는 지경이 될 수도 있습니다.

명령와 변수는, 거의 같은 방법으로 보완할 수 있습니다. 예를 들어, `em[tab]'와 타이프 쳤을 때, 사용하고 있는 시스템으로 `em'로부터 시작되는 명령이 유일 emacs 뿐이라면, `em'는 `emacs'와 보완됩니다. 보완은, path 중의 디렉토리에 있는 명령인가, 풀 패스가 주어지면, 거기에 있는 명령을 찾아낼 수가 있습니다. `echo $ar[tab]'와 타이프 쳤을 때, 그 밖에 `ar'로부터 시작되는 변수가 없으면, `$ar'는 `$argv'와 보완됩니다.

쉘은, 입력 버퍼를 해석해, 보완하고 싶은 단어를, 파일명으로서인가, 명령로서인가, 변수로서인가, 어떻게 보완해야할 것인가를 결정합니다. 버퍼안의 최초의 단어와`;', `|', `|&', `&&', `||'의 곧 다음에 오는 단어는, 명령로 간주합니다. `$'로 시작되는 단어는, 변수로 간주합니다. 그 외의 것은, 파일명으로 간주합니다. 하늘의 행은, 파일명으로서 `보완되어'있습니다.

언제라도, `^D'와 타이프 치는 것으로, 편집 명령 delete-char-or-list-or-eof 를 실행시켜, 보완 가능한 단어의 후보를 늘어놓고 들 수가 있습니다. 쉘은, 편입 명령 ls-F (q.v. )(을)를 사용해, 보완 가능한 후보를 늘어놓고 듭니다. 그리고, prompt와 미완성의 명령행을 재표시합니다. 다음에 예를 나타냅니다.

    > ls /usr/l[^D]
    lbin/ lib/ local/ lost+found/
    > ls /usr/l

셸 변수 autolist 를 세트 하고 있으면, 쉘은, 보완에 실패했을 때는 언제라도 나머지의 선택사항을 표시합니다.

    > set autolist
    > nm /usr/lib/libt[tab]
    libtermcap.a@ libtermlib.a@
    > nm /usr/lib/libterm

셸 변수 autolist 를 `ambiguous (애매한)'에 세트 했을 경우는, 보완에 실패해 보완되는 단어에 새로운 캐릭터를 그 이상 추가할 수 없게 되었을 때에 한정해, 선택사항을 표시합니다.

보완하는 파일명에는, 변수, 자신 혹은 타인의 홈 디렉토리 (`~'로 단축한 것. 파일명 치환의 항을 참조), 디렉토리 스택 엔트리 (`='로 단축한 것. 디렉토리 스택 치환의 항을 참조)를 포함할 수가 있습니다. 예를 들어, 다음과 같이 됩니다.

    > ls ~k[^D]
    kahn kas kellogg
    > ls ~ke[tab]
    > ls ~kellogg/

혹은,

    > set local = /usr/local
    > ls $lo[tab]
    > ls $local/[^D]
    bin/ etc/ lib/ man/ src/
    > ls $local/

변수에 대해서는, 편집 명령 expand-variables 를 지정해 사용해도 전개할 수 있는 것에 주의해 주세요.

명령 delete-char-or-list-or-eof 는, 행의 최후에서만 리스트를 표시합니다. 행의 중간의 경우, 커서 위치의 캐릭터를 소거합니다. 공행의 경우, 로그아웃 합니다. 다만, ignoreeof 가 세트 되어 있으면, 아무것도 하지 않습니다. `M-^D'는, 편집 명령 list-choices 에 바인드 되고 있습니다만, 이것은 행중의 어디에서라도, 보완의 후보의 리스트를 표시합니다. list-choices (또는, delete-char-or-list-or-eof 로 열거하는 명령로, 소거하는 커멘드, 하지 않는 커멘드, 리스트 표시하는 명령, 로그아웃 하는 커멘드의 어떤 것에서도) (은)는, 그러한 있고 경우, 편입 명령 bindkey 로 `^D'에 바인드 할 수도 있습니다.

편집 명령 complete-word-fwd 와 complete-word-back (디폴트에서는, 어느 키에도 할당할 수 있고 있지 않습니다)(을)를 사용하는 것으로, 보완 후보의 리스트를 위 또는 아래에 순서에 둘러싸, 리스트상의 현재의 단어를, 다음의 단어 또는 1 개(살)전의 단어에 옮겨놓을 수가 있습니다.

셸 변수 fignore 에, 보완 시에 무시하는 파일의 사픽스의 리스트를 세트 할 수 있습니다. 다음의 예를 생각해 보겠습니다.

    > ls
    Makefile condiments.h~ main.o side.c
    README main.c meal side.o
    condiments.h main.c~
    > set fignore = (. o \~)
    > emacs ma[^D]
    main.c main.c~ main.o
    > emacs ma[tab]
    > emacs main.c

`main.c~'와 `main.o'는, fignore 에 사픽스가 등록되어 있기 위해서(때문에), 보완에서는 무시됩니다 (그러나 리스트상에는 표시됩니다). 파일명 치환의 항으로 해설하고 있도록(듯이), home 에 확장되지 않게 하기 위해서,`~'의 전에 `\'가 필요한 일로 주의해 주세요. 보완의 후보가 1 개 밖에 없는 경우는, fignore 의 설정은 무시됩니다.

셸 변수 complete 가 `enhance(확장)' 에 세트 되고 있었을 경우, 보완은 1) 대문자 소문자의 구별을 무시해, 2) 피리어드, 하이픈, 언더스코어 (`. ', `-', `_')를, 단어를 나누는 기호이라고 간주, 하이픈과 언더스코어는 동등한 것으로 간주합니다. 다음과 같은 파일이 있는 경우,

    comp.lang.c comp.lang.perl comp.std.c++
    comp.lang.c++ comp.std.c

`mail -f c.l.c[tab]'와 타이프 치면, `mail -f comp.lang.c' (와)과 같이 보완되어 ^D 의 경우에는, `comp.lang.c'와 `comp.lang.c++'가 리스트로서 표시됩니다. `mail -f c..c++[^D]'와 타이프 쳤을 경우는, `comp.lang.c++'와 `comp.std.c++'가 표시됩니다. 다음의 파일이 있는 디렉토리에서, `rm a--file[^D]'와 타이프 쳤다 경우,

    A_silly_file a-hyphenated-file another_silly_file

의 3 개의 파일 모든 것이 일람표 나타납니다. 왜냐하면, 대문자 소문자의 구별은 무시되어, 하이픈과 언더스코어는 동등이라고 해석되기 때문입니다. 그렇지만, 피리어드는, 하이픈이나 언더스코어와 동등하지는 않습니다.

보완과 일람은, 그 밖에도 몇개의 셸 변수의 영향을 받습니다. 그 하나, recexact 를 세트 하면(자), 계속해 타이프 치면 보다 긴 단어에 합치하는 것 같은 경우조차도, 최단에 일의에 일치하는 단어에 합치하게 됩니다. 예를 들어,

    > ls
    fodder foo food foonly
    > set recexact
    > rm fo[tab]

이 경우는 벨이 울릴 뿐입니다. 왜냐하면, `fo'는, `fod'또는 `foo'에 전개할 수 있기 때문입니다. 그러나, 한층 더 `o'와 타이프 치면(자),

    > rm foo[tab]
    > rm foo

`food'나 `foonly'도 합치하는 것에도 불구하고, 보완은 `foo'로 완료합니다. autoexpand 를 세트 하면(자), 보완을 시도하기 전에, 매회, 편집 명령 expand-history 를 실행하게 됩니다. autocorrect 를 세트 하면(자), 보완을 시도하기 전에, 매회, 그 단어의 스펠 정정을 하게 됩니다 (스펠 정정의 항을 참조). correct 를 세트 하면(자), `return (enter)'키를 누른 뒤, 자동적으로 명령을 보완하게 됩니다. matchbeep 를 세트 하면(자), 보완에 즈음하여, 상황의 변화에 응해, 벨을 울리거나 울지 않게 할 수 있습니다. nobeep 를 세트 하면(자), 전혀 벨을 울리지 않게 할 수 있습니다. nostat 에는, 디렉토리의 리스트나 디렉토리에 합치하는 패턴을 세트 할 수 있어 이러한 디렉토리에서 보완 기구가 stat(2)를 실행하지 않게 할 수가 있습니다. listmax 나 listmaxrows 에 세트 하는 것으로, 우선 문의하지 않고 일람표시 하는 항목의 수나, 열의 수를, 각각 제한할 수가 있습니다. recognize_only_executables 를 세트 하면(자), 쉘이 명령 일람을 표시할 때에, 실행 가능 파일만을 일람표시 하도록(듯이) 시킬 수가 있습니다. 다만, 동작은 극히 늦어집니다.

마지막으로, 편입 명령 complete 를 사용해, 파일명, 명령, 변수 이외의 단어를 보완하는 방법을 쉘에 가르칠 수가 있습니다. 보완과 일람은, 그로브파탄 (파일명 치환의 항을 참조) 위에서는 기능합니다만, 편집 명령 list-glob 와 expand-glob 는 그로브파탄에 대해 동등의 기능으로서 실행됩니다.

  스펠 정정 (+)
쉘은, 보완하거나 일람표시 하는 것과 같게, 파일명, 명령, 변수명의 스펠을 정정할 수가 있는 일이 있습니다.

개개의 단어는, 편집 명령 spell-word (보통은 M-s 와 M-S 에 바인드 되고 있습니다)로 스펠 정정할 수 있습니다. 입력 버퍼 전체는 spell-line (보통은 M-$ 에 할당할 수 있고 있습니다)로 스펠 정정할 수 있습니다. 셸 변수 correct 에 `cmd'를 설정되어 두면, 명령명이 스펠 정정됩니다. `all'를 설정해 두면, 리턴이 타입 된다 여행에 행 전체가 스펠 정정됩니다. autocorrect 가 세트 되고 있으면, 단어에 보완을 시도하기 전에 그 단어를 스펠 정정합니다.

스펠 정정이, 여기서 설명한 방법의 어느 쪽인가에보다 불려 가 명령행의 어디엔가 스펠 잘못이 있다고 판단하면(자), 쉘은, 다음과 같이 정정 끝난 명령행을 표시해 입력을 기다립니다.

    > set correct = cmd
    > lz /usr/bin
    CORRECT>ls /usr/bin (y|n|e|a)?

이것에 대해, `y'또는 공백 캐릭터로 대답하면(자), 정정이 끝난행을 실행해, `e'로 대답하면(자), 입력 버퍼에 정정전의 명령을 남겨, `a'로 대답하면(자), `^C'가 밀렸을 경우와 같게 명령을 중지해, 그 이외의 경우는, 원 인 채의 행을 바꾸지 말고 실행합니다.

스펠 정정은, 유저 정의의 보완을 식별합니다 (편입 명령 complete 를 참조). 만약, 보완이 실행되는 위치에서, 입력된 단어가 보완 리스트안의 단어에 비슷했을 때, 스펠 정정은, 미스 스펠 기록해, 발견된 단어를 정정 후보로서 제안합니다. 그러나, 입력된 단어가 그 위치에서, 어느 보완 후보에도 합치하지 않았던 때, 스펠 정정은, 미스 스펠을 나타내지 않습니다.

보완과 같이, 스펠 정정은 행의 어디에서라도 기능합니다. 행의 나머지를 오른쪽으로 밀어 내거나 나머지의 여분의 캐릭터를 커서의 오른쪽으로 남기거나 합니다.

주의: 스펠 정정은, 의도대로 동작하는 프로텍션은 없습니다. 그리고, 거의 실험적인 기능으로서 제공되고 있습니다. 제안, 개선하는 점이 있으면 환영합니다.

  편집 명령 (+)
`bindkey'는 키 바인드 일람을 표시해, `bindkey -l'는 편집 명령의 일람과 짧은 해설을 표시합니다. 여기에서는, 새로운 편집 명령, 또는, 특히 흥미로운 편집 커멘드에 붙어서만 해설합니다. 에디터의 키 바인드 할당의 기술에 대해서는, emacs(1)와 vi(1)를 참조해 주세요.

디폴트로 각각의 명령에 바인드캐릭터 (혹은 복수 캐릭터) (은)는, 괄호안에 나타냈습니다. `^character'는 제어 캐릭터를 의미합니다. `M-character'는 메타 캐릭터입니다. 메타키가 없는 단말의 경우는, escape-character 와 타이프 칩니다. 대문자 소문자의 구별은 있습니다만, 디폴트로 영문자에 할당할 수 있는 명령은, 편의상, 대문자, 소문자의 양쪽 모두에 키 바인드 되고 있습니다.

complete-word (tab)
    보완과 일람의 항으로 해설하고 있는 대로, 단어를 보완합니다.

complete-word-back (not bound)
    complete-word-fwd 와 같습니다만, 단어 리스트의 마지막으로부터, 우에에 갑니다.

complete-word-fwd (not bound)
    현재의 단어를, 보완 가능 단어 리스트상의 초의 단어로 옮겨놓습니다. 본명령을 반복하는 것으로, 단어 리스트 야단 법석 내려 갈 수가 있습니다. 단어 리스트의 끝까지 가면(자), 벨이 울려, 미보완의 단어에 돌아옵니다.

complete-word-raw (^X-tab)
    complete-word 와 같습니다만, 유저 정의한 보완은 무시됩니다.

copy-prev-word (M-^_)
    현재의 행으로, 1 개(살)전의 단어를 입력 버퍼에 카피합니다. insert-last-word 도 참조해 주세요.

dabbrev-expand (M-/)
    이전 입력한 단어 중(안)에서, 현재의 단어가 선두 부분 캐릭터 라인이며, 게다가 최근의 것을 찾아내, 그래서 전개합니다. 필요하면, 역사 리스트를 일주 돌아 원래대로 돌아가 찾습니다. dabbrev-expand 를 중단하지 않고 반복하는 것으로, 그 다음의 단어로 바뀝니다. history-search-backward 와 같게, 동일한 매칭은 스킵 합니다.

delete-char (할당하고 없음)
    커서하의 캐릭터를 삭제합니다. delete-char-or-list-or-eof 도 참조해 주세요.

delete-char-or-eof (할당하고 없음)
    커서하에 캐릭터가 있으면 delete-char 를 실행해, 공행에서는 end-of-file 를 실행합니다. delete-char-or-list-or-eof 도 참조해 주세요.

delete-char-or-list (할당하고 없음)
    커서하에 캐릭터가 있으면 delete-char 를 실행해, 행의 말미에서는 list-choices 를 실행합니다. delete-char-or-list-or-eof 도 참조해 주세요.

delete-char-or-list-or-eof (^D)
    커서하에 캐릭터가 있으면 delete-char 를 실행해, 행의 말미에서는 list-choices 를 실행해, 공행에서는 end-of-file 를 실행합니다. 이러한 3 개의 명령도 참조해 주세요. 이러한 명령은, 각각 1 개의 동작을 실행할 뿐입니다. delete-char-or-eof, delete-char-or-list, list-or-eof 는, 각각 3 개 중이 다른 2 개(살)을 실행합니다.

down-history (하 화살표, ^N)
    up-history 와 같습니다만, 1 개(살)씩 아래로 이동해, 원래의 입력행으로 멈춥니다.

end-of-file (할당하고 없음)
    파일의 종단인 것을 쉘에 통지합니다. 셸 변수 ignoreeof (그 쪽도 참조)가 세트 되어 없는 경우, 그 결과적으로, 쉘은 실행을 종료합니다. delete-char-or-list-or-eof 도 참조해 주세요.

expand-history (M-space)
    현재의 단어의 역사 치환을 전개합니다. 역사 치환를 참조해 주세요. magic-space, toggle-literal-history 와 셸 변수 autoexpand 도 참조해 주세요.

expand-glob (^X-*)
    커서의 왼쪽으로 그로브파탄을 전개합니다. 파일명 치환를 참조해 주세요.

expand-line (할당하고 없음)
    expand-history 와 같습니다만, 입력 버퍼의 각각의 단어의 역사 치환을 전개합니다.

expand-variables (^X-$)
    커서의 왼쪽으로 변수를 전개합니다. 변수 치환를 참조해 주세요.

history-search-backward (M-p, M-P)
    역사 리스트를 후방으로 향해, 입력 버퍼의 현재의 내용 (커서 위치까지)(으)로 시작되는 명령을 검색해, 그것을 입력 버퍼에 카피합니다. 검색 캐릭터 라인은,`*', `? ', `[]', `{}'를 포함한 그로브파탄 (파일명 치환를 참조) 에서 만나도 괜찮습니다. up-history 와 down-history 는, 역사 리스트의 해당한다 지점으로부터 시작할 수가 있습니다. Emacs 모드만입니다. history-search-forward 와 i-search-back 도 참조해 주세요.

history-search-forward (M-n, M-N)
    history-search-backward 와 같습니다만, 전방에 검색합니다.

i-search-back (할당하고 없음)
    후방에, history-search-backward 와 같이 검색해, 최초로 합치한 것을 입력 버퍼에 카피해, 커서를 패턴의 마지막에 위치시킵니다. 그리고, `bck: 'prompt와 최초로 합치한 것을 표시합니다. 추가의 캐릭터를 타이프 쳐, 그 검색을 연장할 수가 있습니다. i-search-back 를 타이프 쳐, 같은 패턴으로 검색을 연장한다 일도 할 수 있습니다. 필요가 있으면, 역사 리스트를 일주 돌아 원래대로 돌아가 검색을 계속합니다. (이것을 실시하기 위해서(때문에)는, i-search-back 는, 1 캐릭터에 바인드되어 있지 않으면 안됩니다. ) 혹은, 이하의 특수 캐릭터를 타이프 칠 수도 있습니다.

        ^W  커서하의 단어의 나머지를 검색 패턴에 가세합니다.
        delete (혹은 backward-delete-char 에 바인드 된 캐릭터)
            마지막에 타입 된 캐릭터의 효과를 취소해, 적당하면 검색 패턴으로부터 캐릭터를 삭제합니다.
        ^G  전의 검색이 성공해 아픈들 , 검색 전체를 중지합니다. 그렇지 않으면, 제일 마지막에 성공한 검색까지 돌아옵니다.
        escape
            검색을 끝내 입력 버퍼의 현재의 행을 그대로 남깁니다.

    이 다른 캐릭터로, self-insert-command 에 바인드 되고 있다 이외의 것을 타이프 치면(자), 검색이 종료합니다. 입력 버퍼의 현재의 행은 그대로 되어, 타이프 친 캐릭터는 통상의 입력으로서 해석됩니다. 특히, 왕복대 리턴의 경우는, 현재의 행을 실행으로 옮깁니다. Emacs 모드만입니다. i-search-fwd 와 history-search-backward 도 참조해 주세요.

i-search-fwd (할당하고 없음)
    i-search-back 와 같습니다만, 전방에 검색합니다.

insert-last-word (M-_)
    1 개(살)전의 입력행 (`! $')의 마지막 단어를 입력 버퍼에 삽입합니다. copy-prev-word 도 참조해 주세요.

list-choices (M-^D)
    보완과 일람로 해설하고 있도록(듯이), 보완의 가능성을 일람표 가리킵니다. delete-char-or-list-or-eof 와 list-choices-raw 도 참조해 주세요.

list-choices-raw (^X-^D)
    list-choices 와 같습니다만, 유저 정의된 보완을 무시합니다.

list-glob (^X-g, ^X-G)
    커서의 좌측의 그로브파탄 (파일명 치환를 참조)에 합치한 것을 (편입 명령 ls-F 를 이용해) 일람표 가리킵니다.

list-or-eof (할당하고 없음)
    list-choices 를 실행하는지, 또는, 공행의 경우 end-of-file 를 실행합니다. delete-char-or-list-or-eof 도 참조해 주세요.

magic-space (할당하고 없음)
    우선 expand-history 와 같게, 현재의 행의 역사 치환을 전개해, 그 후로 공백을 1 개 덧붙입니다. magic-space 는 스페이스 키에 바인드 하도록(듯이) 설계되고 있습니다만, 디폴트에서는 바인드 되고 있지 않습니다.

normalize-command (^X-? )
    패스안의 현재의 단어를 검색합니다. 그리고, 발견되었을 경우, 실행 가능 파일을 가리키는 풀 패스로 옮겨놓습니다. 특수 캐릭터는 쿼트 됩니다. 앨리어스(alias)는 전개되어, 쿠트 됩니다만, 앨리어스(alias)중의 명령은 전개 / 쿼트 되지 않습니다. 이 명령은, 예를 들어, `dbx'나 `sh -x'등과 같이, 명령이 인수를 취득하는 경우에 도움이 됩니다.

normalize-path (^X-n, ^X-N)
    셸 변수 symlinks 의 설정 `expand'의 항으로 설명되고 있도록(듯이), 현재의 단어를 전개합니다.

overwrite-mode (할당할 수 있고 있지 않습니다)
    입력 모드와 덧쓰기 모드(replace mode)의 사이에 바꿉니다.

run-fg-editor (M-^Z)
    현재의 입력행을 보존합니다. 그리고, 환경 변수 EDITOR 또는 VISUAL 의 파일명 부분의 마지막 원가요소 (또는, 어느쪽이나 세트되어 있지 않으면, `ed'인가 `vi') (와)과 동일한 이름을 가져, 스톱 하고 있는 작업을 찾습니다. 그러한 작업이 발견되면, `fg %job'와 타이프 친 것과 똑같이, 실행 재개됩니다. 이것은, 에디터와 쉘이 얼이 빠져 교대로 바꾸는 것을 용이하게 한다 위해(때문에) 사용됩니다. 이 명령을 `^Z'에 바인드 해, 좀 더 간단하게 교호의 변환이 할 수 있도록(듯이) 하는 사람도 있습니다.

run-help (M-h, M-H)
    보완 routine의 `현재의 명령'와 같은 개념에 의한다 현재의 명령의 문서를 검색해, 표시합니다. 페이쟈를 사용하는 방법은 없습니다. run-help 는 짧은 헬프 파일과 (을)를 위해서(때문에) 설계되고 있기 (위해)때문입니다. 특별한 앨리어스(alias) helpcommand 가 정의되고 있었을 경우, 명령명을 유일한 인수로서 그 값이 실행됩니다. 그 밖에, 문서의 파일명은, 명령명 .help, 명령명 . 1, 커멘드명 . 6, 명령명 . 8, 커멘드명의 언젠가가 아니면 안됩니다. 또, 그 파일은, 환경 변수 HPATH 중(안)에서, 일람에 가고 있는 디렉토리 중 1 개에 들어가 있지 않으면 안됩니다. 만약, 1 개(살) 이상의 헬프 파일이 있는 경우는, 최초의 1 개만이 프린트 됩니다.

self-insert-command (텍스트 캐릭터)
    삽입 모드 (디폴트)에서는, 타이프 친 캐릭터를, 커서하의 캐릭터의 뒤에 삽입합니다. 덧쓰기 모드(replace mode)에서는, 타이프 친 캐릭터로, 커서하의 캐릭터를 옮겨놓습니다. 입력 모드는, 통상, 각 행의 사이에 유지되고 있습니다만, 셸 변수 inputmode 를 `insert(삽입)'혹은, `overwrite(덧쓰기)'에 세트 해 두면(자), 에디터를, 각 행의 시작으로, 그 모드로 할 수가 있습니다. overwrite-mode 도 참조해 주세요.

sequence-lead-in (화살표 접두사, 메타 접두사, ^X)
    다음에 계속되는 캐릭터가 멀티 키 순차 순서 (복수 캐릭터의 연속)인 것을 나타냅니다. 멀티 키 순차 순서를 명령에 바인드 하는 경우, 실제로는, 다음의 2 개의 바인드를 만듭니다. 우선, 최초의 캐릭터를 sequence-lead-in 로 합니다. 그리고, 순차 순서 전체를 그 명령에 바인드 합니다. sequence-lead-in 에 바인드 된 캐릭터로 시작된다 모든 순차 순서는, 다른 명령에 바인드되어 있지 않으면, 실질적으로는 undefined-key 에 바인드 된 것과 같은 것에 됩니다.

spell-line (M-$)
    spell-word 와 같게, 입력 버퍼중의 각 단어의 스펠 정정을 시도합니다. 그러나, 단어의 최초의 캐릭터가, `-', `! ', `^', `%' 중 어떤 것인가의 경우와 단어중에 `\', `*', `? '의 어느쪽이든을 포함하고 있는 경우는, 스윗치나, 치환등의 문제를 피하기 위해서(때문에), 이러한 단어를 무시합니다. 스펠 정정를 참조해 주세요.

spell-word (M-s, M-S)
    스펠 정정의 항으로 설명되고 있는 것과 같은 방식으로, 현재의 단어의 스펠의 정정을 시도합니다. 패스명으로서 나타나는 단어의 부분을 각각 체크합니다.

toggle-literal-history (M-r, M-R)
    입력 버퍼의 역사 치환을 전개하거나`하지 않기도 하고'합니다. expand-history 와 셸 변수 autoexpand 도 참조해 주세요.

undefined-key (할당의 명령이 없는 키)
    벨을 울립니다.

up-history (상 화살표, ^P)
    역사 리스트중에서 1 개전의 엔트리를 입력 버퍼에 카피합니다. histlit 가 세트 되고 있는 경우, 그 기입된 캐릭터 대로의 형식을 사용합니다. 역사 리스트를 위에 1 개씩 이동을 반복했을 경우, 맨 위에서 멈춥니다.

vi-search-back (? )
    검색 캐릭터 라인 (history-search-backward 와 같이, 그로브파탄에서도 상관하지 않습니다)의 입력을 위해서(때문에) `? '를 prompt 표시합니다. 그 캐릭터 라인을 검색해, 같은 캐릭터 라인을 입력 버퍼에 카피합니다. 합치하는 것이 발견되지 않으면, 벨이 울립니다. 리턴 키 (enter 키)를 누르면(자), 검색을 종료해, 입력 버퍼중에 마지막에 합치한 단어를 남깁니다. escape 키를 누르면(자), 검색을 종료해, 합치한 것을 실행합니다. vi 모드만입니다.

vi-search-fwd (/)
    vi-search-back 와 같습니다만, 전방에 검색합니다.

which-command (M-? )
    입력 버퍼의 최초의 단어에 대해서, which (편입 명령 의 해설을 참조)를 실행합니다.

  자구 구조
쉘은 입력된 행을 탭이나 공백에서 단어에 분할합니다. 특수 캐릭터 `&', `|', `;', `<', `>', `(', `)', 2 캐릭터 반복의 `&&', `||', `<<' , `>>'는, 공백에서 둘러싸여 있을까 제발에 관계없이, 항상 단어의 단락이 됩니다.

쉘의 입력이 단말로부터는 아닐 때, 캐릭터 `#'는, 코멘트의 시작과 해 다루어집니다. `#'와 그 뒤의 입력행의 나머지는 코멘트라고 해석되어 문법 해석되지 않고 버려집니다.

특수 캐릭터 (공백, 탭 포함한다)는, 그 캐릭터의 직전에 backslash `\' (을)를 두는 것으로, 또는, 단일 인용부호 `'', 이중 인용부호 `"', 역인용부호 ``'로 둘러싸는 것으로, 특수한 이유를 가지지 않게 하거나 경우에 따라서는, 다른 단어의 일부분으로 할 수도 있습니다. 그 밖에 인용이 이루어지지 않는 이상`\'의 직후에 개행 캐릭터를 두면(자), 개행 캐릭터는 공백 취급이 됩니다. 그러나, 인용중에서는, 이 캐릭터의 줄은 개행 캐릭터에 됩니다.

게다가역사 치환를 제외한, 모든치환 (다음 방향을 참조)(은)는, 치환을 포함한 캐릭터 라인 (혹은 캐릭터 라인의 일부)을 단일 인용부호로 둘러싸는 것으로 막을 수가 있습니다. 혹은, 중대한 캐릭터 (예를 들어, 변수 치환 (이)라면 `$'나, 명령 치환라면 ``')를 `\'로 쿼트 하는 것으로 막을 수가 있습니다. (앨리어스(alias) 치환도 예외가 아닙니다. 한 번 정의된 alias 에 대해서, 어떠한 방법으로 그 단어의 어떤 것인가의 캐릭터를 쿼트 하는 것으로, 그 앨리어스(alias)의 치환을 막는 것이 할 수 있습니다. 앨리어스(alias)를 쿼트 하는 보통 방법은, 그 앨리어스(alias)의 전에 backslash를 두는 것입니다. ) 역사 치환는, backslash를 이용하는 것으로 막는 것이 할 수 있습니다만, 단일 인용부호에서는 막을 수가 없습니다. 이중 인용부호, 역인용부호로 쿼트 된 캐릭터 라인은, 변수 치환와명령 치환는 받습니다만, 그 외의 치환은 받지 않습니다.

단일 인용부호, 이중 인용부호로 둘러싸인 텍스트는 1 개의 단어 (또는 그 일부)됩니다. 그러한 캐릭터 라인중의 메타 캐릭터 (공백, 탭을 포함한다)는, 단어를 분할하지 않습니다. 하나만 특수한 경우 (다음의명령 치환를 참조)로서 이중 인용부호로 둘러싸인 캐릭터 라인을 1 개 이상의 단어로 나눌 수가 있습니다. 이것은, 단일 인용부호로 둘러싸인 캐릭터 라인에서는 결코 할 수 없습니다. 역인용부호는 특수해, 명령 치환 (그 쪽도 참조)에, 영향을 주어 그 결과가 1 개 이상의 단어가 될 수도 있습니다.

복잡한 캐릭터 라인을 쿼트 하는 경우, 특히, 캐릭터 라인 자신에게 쿠트 캐릭터가 포함되어 있는 경우는, 이해하기 어려울지도 모릅니다. 인간이 쓴 것의 안에서는, 인용부호를 인용을 위해서(때문에) 사용할 필요는 없는 것을 잊지 않게! 캐릭터 라인 전체를 쿼트 하는 것이 아니라, 만약 적당하면 다른 타입의 인용부호를 이용해 쿼트 할 필요가 있는 캐릭터 라인의 일부분만을 쿠트 한다 것이, 간단할지도 모릅니다.

셸 변수 backslash_quote (그 쪽도 참조)를 세트 하면(자), backslash가 항상 `\', `'', `"'를 쿼트 하도록 할 수 있습니다. (+) 이것에 의해, 복잡한 인용을 하는 일이 간단하게 될지도 모릅니다. 그러나 csh(1)의 스크립트에서는, 구문 에러의 원인이 됩니다.

  치환
여기서, 쉘이 입력에 대해서 실시하는 다양한 변환을, 처리를 하는 순으로 기술합니다. 동시에, 처리에 관련되는 데이터 구조와 데이터 구조에 영향을 주는 명령와 변수와에도 접해 둡니다. 자구 구조의 곳에서 설명하는 인용에 의해, 치환을 억제할 수 있는 것을 기억해 둬 주세요.

  역사 치환
단말로부터 입력한 명령 하나 하나 (이벤트)는, 역사 리스트에 보존됩니다. 직전의 명령은 항상 보존됩니다. 게다가 보존한다 명령수를, 셸 변수 history 로 설정할 수가 있습니다. 중복 하는 이벤트를 보존하는지 어떤지, 같은 이벤트의 연속을 그대로 보존하는지 어떤지를, 셸 변수 histdup 로 설정하는 것이 할 수 있습니다.

보존된 명령에는, 1 으로부터 시작되는 연속한 번호가 차여 타임 스탬프가 맞읍니다. 보통 이벤트 번호를 이용할 필요는 없습니다만, 셸 변수 prompt 안에 `! '를 두는 것으로, 현재의 이벤트 번호를 prompt의 일부로 할 수가 있습니다.

실제의 곳, 쉘은, 역사를 전개 형식과 캐릭터 대로 (미전개)의 형식으로 보존하고 있습니다. 셸 변수 histlit 를 설정해 두면(자), 역사를 표시하는 / 역사에 보존하는 명령로 캐릭터 대로의 형식을 이용하게 됩니다.

편입 명령 history 에 의해, 역사 리스트의 표시, 파일에 보존, 파일로부터의 읽어들여, 클리어를 언제라도 실시할 수 있습니다. 셸 변수 savehist 와 histfile 에 의해, 역사 리스트의 로그아웃시의 자동 보존과 로그인시의 자동 읽기를 설정할 수가 있습니다.

역사 치환에 의해, 역사 리스트로부터 단어의 열을 입력 스트림에 반입합니다. 이것에 의해, 전의 명령의 반복해, 전의 커멘드로 사용했다 인수의 반복해, 전의 명령로 잘못한 스펠의 수정을 몇 안 되는 키 입력으로, 꽤 확실히 용이하게 실시할 수가 있게 됩니다.

역사 치환은, 캐릭터 `! '로 시작됩니다. 역사 치환은, 입력 스트림의 어디에서 개시해도 괜찮습니다가, 상자에는 할 수 없습니다. 캐릭터 `! '의 전에 `\'를 두는 것으로,`! '의 특수한 의미를 지우는 것이 할 수 있습니다. 캐릭터 `! '가, 공백 캐릭터, 탭 캐릭터, 개행 캐릭터,`=',`('의 전에 있는 경우는, 그러한 (분)편이 편리해서, 무변경인 채 건네받습니다. 입력행이 `^'로 시작되는 경우에도, 역사 치환이 생깁니다. 이 생략 표현에 대해서는 다음에 설명합니다. 역사 치환을 나타내기 위한 캐릭터 (`! '와 `^')는, 셸 변수 histchars 를 설정하는 것으로써 변경하는 것이 할 수 있습니다. 입력행이 역사 치환을 포함한 경우, 실행전에 치환 결과가 항상 표시됩니다.

역사 치환에는 「이벤트 지정」, 「단어 지정자 (word designator)」, 「수식자 (modifier)」를 포함할 수가 있습니다. 이벤트 지정은, 어느 이벤트로부터 단어의 열을 꺼내는지를 지정합니다. 단어 지정자는, 선택한 이벤트로부터 어느 단어를 선택하는지를 지정합니다. 수식자는, 선택한 단어를 어떻게 조작하는지를 지정합니다.

이벤트 지정에는, 다음의 것이 있습니다.

    n   번호: 이것은 어느 특정의 이벤트를 지정합니다.
    -n  오프셋(offset): 이것은 현재의 이벤트의 전 n 개목의 이벤트를 지정합니다.
    #   현재의 이벤트를 지정합니다. 이것은 csh(1) 중(안)에서는 주의해 취급하지 않으면 되지 않습니다. csh(1)에서는, 재귀 호출의 체크를 하고 있지 않기 때문입니다. tcsh 에서는, 재귀 호출은 10 레벨까지 용서되고 있습니다. (+)
    !   1 개(살)전의 이벤트를 지정합니다 (`-1'와 등가).
    s   선두의 단어가 s 로 시작되는 이벤트 가운데, 가장 새로운 것을 지정합니다.
    ? s?
        캐릭터 라인 s 를 포함한 이벤트 가운데, 가장 새로운 것을 지정합니다. 직후가 개행 캐릭터의 경우는, 2 번째의 `? '는 생략 가능합니다.

예를 들어, 다음과 같은 역사 리스트가 있다고 합니다.

    9 8:30 nroff -man wumpus.man
    10 8:31 cp wumpus.man wumpus.man.old
    11 8:36 vi wumpus.man
    12 8:37 diff wumpus.man.old wumpus.man

명령이, 이벤트 번호와 타임 스탬프 첨부로 표시되고 있습니다. 현재의 이벤트는, 아직 입력하고 있었습니다만, 이벤트 13 입니다. `! 11'와 `! -2'는, 이벤트 11 을 가리킵니다. `!!'는, 직전의 이벤트인 이벤트 12 를 가리킵니다. `!!'는, 뒤로 `:'가 붙어 있는 경우,`! '와 생략 할 수가 있습니다 (`:'는 다음에 설명합니다). `! n'는, `n'로부터 시작되어 있는, 이벤트 9 를 가리킵니다. `!?old? '는, `old'를 포함하고 있다 이벤트 12 를 가리킵니다. 단어 지시자도 단어 수식자도 어느쪽이나 포함하지 않는 경우, 역사 참조는 그 이벤트 전체를 전개할 뿐입니다. 그러니까, 카피 명령을 재실행하고 싶을 때는 `! cp'라고 입력하고, `diff'의 출력이 화면상단으로부터 스크롤 해 사라져 버리는 경우,`!!|more'와 입력합니다.

필요하게 응해 안괄호로 둘러싸는 것으로, 역사 치환을 전후의 텍스트로부터 분리할 수가 있습니다. 예를 들어,`! vdoc'로 하면(자), `vdoc'로 시작된다 명령을 찾습니다만, 이 예로 발견되지 않는다고 해도,`! {v}doc'에서는, 애매함도 없고 `vi wumpus.mandoc'에 전개됩니다. 안괄호 중(안)에서도, 역사 치환은 상자가 되지 않습니다.

(+) csh(1)에서는, 예를 들어 `! 3d'는, 이벤트 3 의 뒤로 영문자 `d'를 부가해 전개합니다만, tcsh 에서는, 이것을 `3d'로 시작되는 이벤트 중 최신의 것에 전개합니다. 즉, 완전한 수치 인수 만을 이벤트 번호라고 봅니다. 이것에 의해, 숫자로부터 시작되는 이벤트를 호출하는 것이 가능해집니다. `! 3d'를 csh(1)와 같이 전개시키려면 ,`! \3d'와 지정해 주세요.

이벤트로부터 단어를 선택하는 경우,`:'와 선택하는 단어를 나타내는 지시자를 사용해, 이벤트 지정을 실시할 수가 있습니다. 입력행의 단어에는, 0 으로부터 시작된다 번호가 차이고 있습니다. 최초의 단어 (보통, 명령입니다)는 0 으로, 2 번째의 단어 ( 제 1 인수)는 1 이라고 하는 상태입니다. 기본적인 단어 지시자는 다음과 같이 됩니다.

    0   최초의 단어 (명령)
    n   n 번째의 인수
    ^   최초의 인수,`1'와 등가
    $   마지막 인수
    %   ? s? 검색으로 일치한 단어
    x-y 어느 범위의 단어
    -y  `0-y' 와 등가
    *   `^-$'와 등가. 단, 이벤트가 1 단어 밖에 포함하지 않는 경우는 아무것도 돌려주지 않는다.
    x*  `x-$' 와 등가
    x-  `x*' 와 등가. 단, 마지막 단어 (`$')는 제외하다.

선택한 단어는, 공백 캐릭터 1 개(살)로 단락지어져 명령행에 삽입됩니다. 예를 들어, `diff !!:1.old !!:1'와 박는 것으로, 앞의 예의 `diff'명령을 입력할 수도 있습니다 (`:1'로, 직전의 이벤트로부터 최초의 인수를 선택하고 있습니다). 또, `diff ! -2:2 ! -2:1'와 박는 것으로 `cp'명령의 인수를 선택해, 바꿔 넣을 수가 있습니다. `diff'명령의 인수의 차례를 신경쓰지 않으면, `diff ! -2:1-2'와 박아도 상관하지않고, 단지 `diff ! -2:*'에서도 상관하지 않습니다. `cp'명령은, 현재의 이벤트를 가리키는 `#'를 사용해, `cp wumpus.man ! #:1.old'라고 쓸 수가 있습니다. `! n:- hurkle.man'는, `nroff'명령로부터 최초의 2 단어를 재이용해, `nroff -man hurkle.man'로 하게 됩니다.

캐릭터 `:'는 단어 지정으로부터 이벤트 지정을 분리합니다만, 인수 선택자가 `^', `$', `*', `%', `-'로 시작될 때, 이 캐릭터 `:'는 생략 가능 입니다. 예를 들어, 방금전의 `diff'명령은 `diff !!^.old !!^' 혹은 `diff !!$.old !!$'에서도 상관없었습니다. 그러나,`!!'가 `! '에 생략 가능한 경우,`-'로 시작되는 인수 선택자는 이벤트 지정으로서 해석됩니다.

역사 참조에, 이벤트 지정이 없는 단어 지시자가 있어도 상관하지 않습니다. 그 경우, 직전의 명령을 참조합니다. `diff'의 예를 계속한다면, 단순하게 `diff ! ^.old ! ^'라고 입력하는 것이 할 수 있습니다. 혹은, 역순의 인수를 얻을 뿐(만큼)이라면, 단지 `diff ! *'로 좋습니다.

역사 참조안의 단어는 편집 가능합니다. 즉, 단어의 뒤로 1 개 또는 복수의 수식자 (수식자 각각은 `:'로 시작됩니다)를 붙이는 것으로 「수식」가능합니다.

    h   선두의 것 1 개(살)을 남겨, 패스명의 원가요소의 뒤의 부분을 삭제합니다.
    t   말미의 것 1 개(살)을 남겨, 패스명의 원가요소의 선두의 부분을 삭제합니다.
    r   파일명 확장자(extension) `.xxx'를 삭제해, 이름의 기본 부분만큼을 남깁니다.
    e   확장자(extension)만을 남겨, 외를 모두 삭제합니다.
    u   최초의 영소문자를 대문자로 변환합니다.
    l   최초의 영대 캐릭터를 소문자로 변환합니다.
    s/l/r/
        l 를 r 로 치환합니다. l 는 r 와 같게, 단순한 캐릭터 라인입니다. 대부인 ed(1) 명령와 같은 정규 표현이 아닙니다. `/'대신에 임의의 캐릭터를 단락지어 캐릭터로서 사용할 수가 있습니다. `\'를 사용해, l 나 r 중(안)에서 단락지어 캐릭터를 쿼트 하는 것이 할 수 있습니다. r 중의 캐릭터 `&'는, l 로 옮겨놓을 수 있습니다. `\'로 `&'도 쿼트 할 수 있습니다. l 가 하늘 (``'')의 경우, 이전의 치환의 l, 또는 이전의 이벤트 지정 `? s? '의 s 를 사용합니다. 마지막 단락 캐릭터의 직후가 개행 캐릭터의 경우, 그 단락 캐릭터를 생략 할 수 있습니다.
    &   이전의 치환을 반복합니다.
    g   뒤의 수식자를 단어 각각 적용합니다.
    a (+)
        뒤의 수식자를, 어느 단어인 만큼 가능한 한 많은 회수, 적용합니다. `a'와 `g'를 함께 이용해, 수식자를 글로벌하게 적용하는 것이 할 수 있습니다. 현재의 실장에서는, 수식자 `a'와 수식자 `s'를 동시에 사용하면(자), 엔들레스 루프에 빠질 가능성이 있습니다. 예를 들어, `:as/f/ff/'는 결코 끝나지 않습니다. 이 동작은 향후 변경될지도 모릅니다.
    p   새로운 명령행을 표시합니다만, 실행은 하지 않습니다.
    q   치환된 단어를 쿼트 해, 그 이상의 치환이 일어나지 않게 합니다.
    x   q 와 같습니다. 다만, 단어를 공백 / 탭 / 개행 캐릭터의 곳에서 분할합니다.

수식자는 최초로 발견된 수식 가능한 단어인 만큼 적용됩니다 (`g'를 사용하지 않는 한). 수식 가능한 단어가 없는 경우는 에러가 됩니다.

예를 들어, 앞의 예의 `diff'명령은, `diff wumpus.man.old ! #^:r'라고도 쓸 수가 있습니다. 이것은, `r'를 이용해, 같은 행 (`! #^')의 최초의 인수로부터 `.old'를 삭제하고 있습니다. `echo hello out there'와 말해 두고 나서, `echo ! *:u'를 사용 `hello'를 대문자로 할 수 있습니다. `echo ! *:au'를 사용 큰 소리로 말하도록 할 수 있습니다. `echo ! *:agu'를 사용 절규시킬 수도 있습니다. `mail -s "I forgot my password" rot' 의 다음에 `! :s/rot/root'를 계속하는 것으로, `root'의 스펠 실수를 고치는 것 하지만 할 수 있습니다 (스펠 실수의 정정에 대해서는, 스펠 정정의 항에 다른 방식이 있습니다).

치환에는 특별한 생략 기법이 있습니다. `^'가 입력행의 선두에 있는 경우, `! :s^'와 등가입니다. 따라서, 앞의 예로 스펠을 정정하려면 , ^rot^root 라고 할 수도 있던 것입니다. 이것은 명시적으로 `! '로 시작되지 않는 역사 치환으로서는 유일한 것입니다.

(+) csh 에서는, 역사 전개 또는 변수 전개에 적용되는 수식자는 1 개(살) 뿐입니다. tcsh 에서는, 1 개(살) 이상의 수식자가 사용될 가능성이 있습니다. 예를 들어, 다음과 같은 경우를 생각합니다.

    % mv wumpus.man /usr/man/man1/wumpus. 1
    % man ! $:t:r
    man wumpus

csh 에서는, 이 결과는 `wumpus. 1:r'됩니다. 코론이 뒤로 계속된다 치환은, 안괄호를 이용해 코론과 단락지을 필요가 있습니다.

    > mv a.out /usr/games/wumpus
    > setenv PATH ! $:h:$PATH
    Bad ! modifier: $.
    > setenv PATH ! {-2$:h}:$PATH
    setenv PATH /usr/games:/bin:/usr/bin:.

최초의 시도는 csh 에서는 성공합니다만, tcsh 에서는 실패합니다. 이 이유는, tcsh 는 2 번째의 코론의 뒤로,`$'는 아니고 수식자가 있다고 생각하고 있기 때문입니다.

마지막으로, 역사는 여기서 설명해 온 치환 뿐만이 아니라, 에디터에서도 이용할 수가 있습니다. 편집 명령 up-history, down-history, history-search-backward, history-search-forward, i-search-back, i-search-fwd, vi-search-back, vi-search-fwd, copy-prev-word, insert-last-word 는 역사 리스트중의 이벤트를 검색해, 입력 버퍼에 이벤트를 카피합니다. 편집 명령 toggle-literal-history 는, 입력 버퍼로 역사행을 전개할까 캐릭터대로 취급할까를 바꿉니다. expand-history, expand-line 는 각각, 현재의 단어, 또는, 입력 버퍼 전체로 역사 치환을 전개합니다.

  앨리어스(alias) 치환
쉘은, 앨리어스(alias)의 리스트를 보관 유지하고 있습니다. 이 리스트는, alias, unalias 명령을 사용해 설정, 삭제, 표시한다 일이 생깁니다. 명령행을 해석해 단순 커멘드 (커멘드를 참조) 에 분할한 뒤, 복수의 명령을 왼쪽에서 오른쪽에, 각각의 최초의 단어가 앨리어스(alias)를 가지고 있는지를 체크합니다. 앨리어스(alias)를 가지고 있다 경우, 최초의 단어를 앨리어스(alias)로 옮겨놓습니다. 옮겨놓은 앨리어스(alias)가 역사 참조를 포함한 경우, 원의 명령을 직전의 입력행으로 간주해, 역사 치환 (그 쪽도 참조)가 적용됩니다. 앨리어스(alias)가 역사 치환을 포함하지 않는 경우, 인수 리스트는 변경되지 않고 그대로입니다.

그 때문에, 예를 들어 `ls'의 앨리어스(alias)가 `ls -l'였던 경우, 명령 `ls /usr'는 `ls -l /usr'가 됩니다. 여기서, 인수 리스트는 영향을 받지 않습니다. `lookup'의 앨리어스(alias)가 `grep ! ^ /etc/passwd' (이)라고 하면(자), 명령 `lookup bill'는 `grep bill /etc/passwd'에 됩니다. 앨리어스(alias)를 사용해, 파서의 메타 기법을 이용할 수 있습니다. 예를 들어, `alias print 'pr \! * | lpr''는, 인수를 라인 프린터에 pr(1) 하는 ``명령''(`print')를 정의합니다.

명령의 최초의 단어가 앨리어스(alias)를 가지지 않게 될 때까지, 앨리어스(alias) 치환은 반복해집니다. (앞의 예의 같게) 앨리어스(alias) 치환이 최초의 단어를 변경하지 않는 경우, 그 앨리어스(alias)에 표시를 해 루프가 생기지 않는다 같게 합니다. 그 이외의 루프는 검출되어 에러 취급이 됩니다.

쉘이 참조하는 앨리어스(alias)가 몇개인가 있습니다. 특수 앨리어스(alias) (을)를 참조해 주세요.

  변수 치환
쉘은 변수의 리스트를 관리하고 있어, 그것들은 0 개 또는 그 이상의 개수의 단어의 리스트를 값으로 해서 가집니다. 셸 변수의 값은, 명령 set, unset 에 의해 표시, 변경할 수가 있습니다. 시스템은, 자기 자신의 ``환경''변수의 리스트를 보관 유지하고 있습니다. 환경 변수는 명령 printenv, setenv, unsetenv 에 의해 표시, 변경할 수가 있습니다.

(+) `set -r' (참조)에 의해 변수를 읽어내기 전용으로 하는 것이 할 수 있습니다. 읽어내기 전용 변수는, 변경이나 unset 를 할 수 없습니다. 이것을 시도하면(자) 에러가 됩니다. 한 번 읽어내기 전용으로 한 변수는, 기입해 가능하게 되돌릴 수 없습니다. 그러니까, `set -r'는 주의해 사용할 필요가 있습니다. 환경 변수는 읽어내기 전용에 할 수 없습니다.

쉘이 설정, 참조하는 변수가 몇개인가 있습니다. 예를 들어, 변수 argv (은)는, 쉘의 인수 리스트의 복제로, 이 변수의 값인 단어는 특별한 방법으로 참조됩니다. 쉘이 참조하는 변수안에는, 토글스위치가 있습니다. 쉘은, 이러한 변수가 무슨치를 가지고 있을까가 아니고, 값이 설정되어 있는지 어떤지에만 영향을 받습니다. 예를 들어, 변수 verbose 는, 명령 입력을 에코 하는지 어떤지를 제어하는 토글스위치입니다. 명령행 옵션 -v 가 이 변수에 값을 설정합니다. 쉘이 참조하는 변수 모든 리스트는, 특별한 셸 변수에 있습니다.

변수를 수치로서 취급하는 조작도 있습니다. 명령 `@'에 의해, 수치계산을 실행해, 결과를 변수에 대입하는 것이 가능해집니다. 그렇지만, 변수의 값은 항상 (0 개 이상의) 캐릭터 라인으로서 표현되어 있습니다. 수치로서 취급하기 위해서(때문에), 공문자열은 0 으로 보여집니다. 복수의 단어로부터 되는 값의, 2 번째 이후의 단어는 무시됩니다.

입력행의 앨리어스(alias) 처리를 끝내 어휘분석을 끝낸 다음에, 그리고, 각 명령을 실행하기 전에,`$'캐릭터를 키로서 변수 치환을 합니다. 이 전개는 `$'의 전에 `\'를 두는 것으로 억제할 수 있습니다. 다만,`"'의 안은 별개로, 여기에서는 항상변수 치환을 합니다. 또,`''의 안도 별개로, 여기에서는 결코변수 치환을 하지 않습니다. ``'로 쿼트 한 캐릭터 라인은 다음에 해석되기 때문에, ( 후의명령 치환를 참조) 거기서의 `$'치환은 나중이 될 때까지 행해지지 않습니다. `$'의 뒤가 공백, 탭, 개행 캐릭터의 경우는,`$'치환은 발생하지 않습니다.

입출력 리디렉트는, 변수 전개 전에 식별되어 따로 따로 변수 전개됩니다. 그 이외에서는, 명령명과 인수 리스트 전체가 함께 전개됩니다. 그러니까, (이 시점에서의) 최초의 단어 (명령)로부터 2 개 이상의 단어가 생성된다 가능성이 있습니다. 전개 후의 복수의 단어 중 최초의 것이 명령명이 되어, 나머지의 단어는 인수가 됩니다.

`"'로 둘러싸여 있는지, 수식자 `:q'가 지정되어 있는 경우를 제외해, 최종적으로는, 변수 치환의 결과에 대해, 명령 치환과 파일명 치환이 적용됩니다. `"'로 둘러싸여 있는 경우, 값이 복수의 단어로 구성되는 변수는, 1 개의 단어 (의 일부)에 전개됩니다. 이 단어에는, 그 변수의 값인 단어가 공백에서 단락지어진 것을 포함합니다. 치환 시에 수식자 `:q'가 적용되는 경우, 변수는 복수의 단어에 전개됩니다. 각각의 단어는 공백에서 단락지어져 이후, 명령 치환과 파일명 치환이 적용되지 않게 쿼트 됩니다.

쉘에의 입력에 변수의 값을 반입하기 위한 방법으로서 이하의 구문이 있습니다. 특별히 따르지 않는 이상 설정되어 있지 않은 값의 참조는 에러가 됩니다.

$name
${name}
    변수 name 의 값인 단어에 치환합니다. 이 단어는, 각각이 공백에서 단락지어진 것입니다. 안괄호는 name 와 그것 이후의 캐릭터 라인을 분리해, 이후의 캐릭터 라인도 포함해 1 개의 변수명으로서 해석되지 않게 합니다. 셸 변수의 이름은 상한이 20 캐릭터이며, 선두는 영문자로, 2 캐릭터눈이후는 영문자나 숫자로 구성됩니다. 언더스코어는 영문자라고 봅니다. name 가 셸 변수는 아니지만, 환경으로 설정되어 있는 경우, 환경의 값을 돌려줍니다 (다만, 수식자 `:'와 다음으로 가리키는 다른 형식은 이용 가능합니다).
$name[selector]
${name[selector]}
    name 의 값 중 선택한 단어만으로 치환합니다. selector 는 `$'치환이 적용되어 1 개의 수치 또는 `-'로 단락지은 2 개의 수치로 구성할 수가 있습니다. 변수의 값의 선두의 단어는 1 번째로서 셉니다. 범위의 최초의 값을 생략 했을 경우, 디폴트의 값 1 이 됩니다. 범위의 마지막 수치를 생략 했을 경우, 디폴트의 값 `$#name 가 됩니다. selector `*'는 모든 단어를 선택합니다. 2 번째의 인수가 생략 되든가, 혹은 범위에 들어가고 있는 경우, 범위가 비워도 에러가 되지 않습니다.
$0  명령 입력을 읽어들이고 있는 파일명으로 치환합니다. 파일명이 불명의 경우 에러가 됩니다.
$number
${number}
    `$argv[number]'와 등가입니다.
$*  `$argv'와 등가입니다. 이것은 `$argv[*]'와 등가입니다.

역사 치환의 곳에서 설명한 `:'수식자 (`:p'를 제외한다)가, 상기의 치환에 대해서 적용할 수 있습니다. 2 개(살) 이상의 수식자도 적용할 수 있습니다. (+) 역사 치환 (그 쪽도 참조)와 같게, 변수 치환과 리터럴의 코론을 분리하기 위해서, 안괄호가 필요한 일이 있습니다. 수식자는 안괄호안에 두지 않으면 되지 않습니다.

이하의 치환은 `:'수식자로 수식할 수 없습니다.

$? name
${? name}
    name 가 설정되어 있을 때는, 캐릭터 라인 `1'로 옮겨놓을 수 있습니다. 설정되어 있지 않을 때는, 캐릭터 라인 `0'로 옮겨놓을 수 있습니다.
$? 0
    현재의 입력 파일명을 알 수 있고 있을 때는,`1'로 옮겨놓을 수 있습니다. 모를 때는,`0'로 옮겨놓을 수 있습니다. 대화형의 쉘에서는, 항상 `0'입니다.
$#name
${#name}
    name 중의 단어의 수로 옮겨놓을 수 있습니다.
$#  `$#argv'와 등가입니다. (+)
$%name
${%name}
    name 의 캐릭터수로 옮겨놓을 수 있습니다. (+)
$%number
${%number}
    $argv[number] 의 캐릭터수로 옮겨놓을 수 있습니다. (+)
$?  `$status'와 등가입니다. (+)
$$  (친) 쉘의 (10 진수의) 프로세스 번호로 옮겨놓을 수 있습니다.
$!  본쉘이 개시한 백그라운드 프로세스 중 최신의 것의 (10 진수의) 프로세스 번호로 옮겨놓을 수 있습니다. (+)
$_  마지막에 실행한 명령의 커멘드행으로 옮겨놓습니다. (+)
$<  표준 입력으로부터 읽어들인 1 행을, 일절 해석을 하지 않고 이 변수와 옮겨놓습니다. 셸 스크립트중에서, 키보드로부터 읽어들일 때에 이용합니다. (+) csh 는,`$<:q'와 등가인것 같이,$< 를 쿼트 합니다만, tcsh 는 그렇게 하지 않습니다. 그 만큼이 아니고, tcsh 가 유저의 입력행을 기다릴 때, 유저는 세치기를 입력해, 치환되어야 할 행이 들어가는 열을 중단할 수가 있습니다. 그러나 csh 에서는 그렇게 하는 것이 할 수 없습니다.

편집 명령 expand-variables 는, 통상은 `^X-$'에 바인드 되고 있습니다만, 이것을 사용해, 개개의 변수를 대화적으로 전개할 수가 있습니다.

  명령 치환, 파일명 치환, 디렉토리 스택 치환
편입 명령의 인수에 대해, 나머지의 치환이 선택적으로 적용됩니다. 선택적이란, 행 중(안)에서 평가되지 않았던 부분은, 이러한 전개의 대상으로 안 된다고 하는 의미입니다. 쉘의 내부 명령이 아닌 커멘드에 대해서는, 명령명은 인수 리스트와는 별개에 치환됩니다. 이 치환은 마지막 (분)편, 입출력 리디렉트를 실행한 뒤, 메인 쉘의 아이중에서 생깁니다.

  명령 치환
``'로 둘러싸인 명령은, 커멘드 치환을 나타냅니다. 둘러싸인 커멘드의 출력을, 공백, 탭, 개행 캐릭터의 곳에서 다른 단어에 분할합니다. 이 출력에 변수 치환, 명령 치환을 실행해, 원래의 캐릭터 라인이 있던 장소에 둡니다.

니겹인용부호 (`"')의 안쪽의 명령 치환은, 공백, 탭을 보존합니다. 개행 캐릭터만은 새롭고 단어 나누기를 실시합니다. 다만, 어떠한 경우에서도 마지막 개행 캐릭터만은 새로운 단어가 되지 않습니다. 그러니까, 1 행 꼬박 출력하는 것 같은 명령에서도, 커멘드 치환을 이용한다고 단어의 일부만을 생성할 수가 있습니다.

  파일명 치환
단어가 `*', `? ', `[', `{'의 몇개의 캐릭터를 포함한 경우, 또는 선두가 `~' 그리고 시작되는 경우, 그 단어는 파일명 치환 (혹은 그로브 (globbing)와 불립니다)의 후보가 됩니다. 이러한 단어를 패턴 (그로브파탄)(이)라고 봐, 그 패턴에 매치 하는 파일명의 리스트를 알파벳순서로 정렬한 것으로 옮겨놓습니다.

파일명 매치 시에, 파일명의 선두, 또는 `/'의 직후의 캐릭터 `. '는,`/'와 같게, 명시적으로 매치 시키지 않으면 안됩니다. 캐릭터 `*'는, 공문자열을 포함한 어떠한 캐릭터 라인에도 매치 합니다. 캐릭터 `? '는, 어떠한 1 캐릭터에도 매치 합니다. 렬 `[...]'는, 괄호 중(안)에서 지정한 캐릭터의 어느 쪽인가에 매치 합니다. `[...]' 안에서는, 캐릭터의 대를 `-'로 잇는 것으로, (캐릭터 순서로) 그 2 캐릭터의 범위에 있다 캐릭터의 어느 쪽인가에 매치 합니다.

(+) 그로브파탄안에는 반전을 지정할 수 있는 것이 있습니다. 렬 `[^...]'는, 괄호내의 캐릭터 / 범위에서 지정해 없는캐릭터 정확히 1 개(살)에 매치 합니다.

`^'에 의해, 그로브파탄 전체를 반전시킬 수도 있습니다.

    > echo *
    bang crash crunch ouch
    > echo ^cr*
    bang ouch

`? ', `*', `[]'의 모두 사용하지 않는 그로브파탄이나, `{}', `~' (나중에 설명하겠습니다)를 사용하는 그로브파탄은, 반전해도 올바른 결과를 얻을 수 없습니다.

메타 기법 `a{b, c, d}e'는, `abe ace ade'의 생략 기법입니다. 왼쪽에서 오른쪽에의 출현 순서는 보존됩니다. `/usr/source/s1/{oldls, ls}. c'는, `/usr/source/s1/oldls.c /usr/source/s1/ls.c'에 전개합니다. 매칭의 결과는 하위의 레벨로 개별적으로 정렬되어 출현 순서는 보존 됩니다. `../{memo, *box}'는,`../memo ../box ../mbox' 등에 전개되겠지요 (여기서, `memo'가 `*box'의 매칭 결과와 함께 정렬되어 있지 않은 것에 주의해 주세요). 이 지정이 전개된 결과 파일이 존재하지 않아도 에러가 되지 않습니다만, 전개 결과를 건네준 앞의 명령로 에러가 될 가능성은 있습니다. 이 지정은 상자로 하는 것이 할 수 있습니다. 특수한 경우로서 단어 `{', `}', `{}'는 변경되지 않고 그대로 건네받습니다.

파일명 선두의 캐릭터 `~'는, 홈 디렉토리를 가리킵니다. 단독으로 이용되었을 경우, 즉 `~'만의 경우, 셸 변수 home 의 값에 반영되고 있도록(듯이), 호출한 유저의 홈 디렉토리에 전개됩니다. `~'의 직후에 영문자, 숫자, 또는 캐릭터 `-'로 구성되는 이름이 계속되는 경우, 쉘은 그 이름을 가지는 유저를 검색해, 그 유저의 홈 디렉토리에 전개합니다. 그러니까, `~ken'는 예를 들어 `/usr/ken'에 전개됩니다. 또, `~ken/chmach'는, 예를 들어 `/usr/ken/chmach'에 전개됩니다. 캐릭터 `~'의 뒤로 영문자도 아니고 `/'도 아닌 캐릭터가 계속되었을 경우, 혹은, 캐릭터 `~'가 단어의 선두 이외에 나타났을 경우, 변경되지 않고 그대로 건네받습니다. 그러니까, `setenv MANPATH /usr/man:/usr/local/man:~/lib/man'와 같은 명령 그럼, 기대 그대로의 홈 디렉토리 치환이 일어나지 않습니다.

`*', `? ', `[', `~'의 어떤 것인지를 포함한 그로브파탄 (`^'는 붙어 있지 않아도 같다)(은)는, 매치 하는 파일이 하나도 없으면 에러가 됩니다. 그러나, 그로브파탄의 리스트 중 하나에서도 매치 하면 (다른 것은 성냥 하는 것이 없어도) 에러가 되지 않습니다 (따라, 예를 들어 `rm *. a *. c *. o'는, 커런트 디렉토리에 `. a', `. c', `. o'로 끝나는 파일이 하나도 없을 때에 한정해 에러가 됩니다). 또, 셸 변수 nonomatch 가 설정되어 있는 경우, 어느 것에도 매치하지 않는 패턴 (혹은 패턴의 열)은 에러가 되지 않고 무변환인 채 남겨집니다.

파일명 치환을 멈추기 위해서(때문에), 셸 변수 noglob 를 설정하는 것이 할 수 있습니다. 편집 명령 expand-glob 는, 통상은 `^X-*'에 결합되어 있습니다만, 이것을 사용해, 개개의 파일명 치환의 전개를 대화적으로 실시할 수가 있습니다.

  디렉토리 스택 치환 (+)
디렉토리 스택은 디렉토리의 열이며, 0 으로부터 번호 붙일 수 있어 편입 명령 pushd, popd, dirs (그 쪽도 참조)(이)가 사용합니다. dirs 명령을 사용하면(자), 디렉토리 스택을 언제라도 표시할 수 있어 파일에 기입할 수가 있어 파일로부터 읽어들일 수가 있고 그리고 클리어 하는 것이 할 수 있습니다. 셸 변수 savedirs, dirsfile 에 값을 설정하는 것으로, 로그아웃시의 디렉토리 스택의 기입과 로그인시의 읽기를 자동적으로 실시할 수가 있습니다. 셸 변수 dirstack 를 사용해, 디렉토리 스택안을 조사할 수가 있어 디렉토리 스택에 임의의 디렉토리를 설정할 수가 있습니다.

캐릭터 `='의 뒤로 1 자리수 이상의 숫자가 계속되면(자), 그것은 디렉토리 스택중의 엔트리에 전개됩니다. 특수한 경우로서 `=-'는 스택의 최신의 디렉토리에 전개합니다. 예를 들어, 다음과 같게입니다.

    > dirs -v
    0 /usr/bin
    1 /usr/spool/uucp
    2 /usr/accts/sys
    > echo =1
    /usr/spool/uucp
     echo =0/calendar
    /usr/bin/calendar
    > echo =-
    /usr/accts/sys

셸 변수 noglob, nonomatch 와 편집 명령 expand-glob 는 파일명 치환과 같게 디렉토리 스택에도 적용됩니다.

  그 외의 치환 (+)
파일명을 포함한 변환이 그 밖에 몇개인가 있습니다. 엄밀하게는 먼저 설명했다 물건과 관계가 있는 것은 아닙니다만, 완전을 기하기 위해서(때문에) 여기서 설명해 둡니다. 변수 symlinks (그 쪽도 참조) 하지만 `expand'로 설정되어 있는 경우, 어떠한파일명도 풀 패스에 전개될 가능성이 있습니다. 쿼트 하는 것으로 이 전개를 멈출 수가 있어 편집 명령 normalize-path 를 사용한다고 요구에 응해 전개를 멈출 수가 있습니다. 또, 편집 명령 normalize-command 는, PATH 에 있는 명령을, 요구에 응해 풀 패스에 전개합니다. 마지막으로, cd 와 pushd 는 `-'를 이전의 작업 디렉토리 (셸 변수 owd 와 등가)(이)라고 해석합니다. 이것은 치환이든 뭐든 없고, 이 명령만으로 인식되는 생략 기법입니다. 그런데도, 이 표기도 쿼트 하는 것으로 이 해석을 멈출 수가 있습니다.

  명령
다음의 3 개의 섹션에서는, 쉘이 어떻게 명령을 실행해, 그러한 입출력을 어떻게 취급하는지를 설명합니다.

  단순 명령, 파이프라인, 커멘드열
단순 명령은, 단어의 열이며, 그 최초의 단어가 실행되는 명령입니다. `|'캐릭터에 의해 단락지어진 일련의 단순 명령은 파이프라인을 형성합니다. 파이프라인내의 각각의 명령의 출력은 다음의 커멘드의 입력에 접속됩니다.

단순 명령와 파이프라인은 `;'캐릭터를 사용해 명령열에 집어 넣을 수가 있어 줄지어 있는 순으로 실행됩니다. 명령와 파이프라인은 `||'나 `&&'로 커멘드열에 짜넣을 수도 있어 C 언어로 다루어지는 것과 같게, 최초의 명령이 실패했을 때에만 (`||'의 경우), 혹은 성공했을 때에만 (`&&'의 경우), 다음의 명령이 실행됩니다.

단순 명령, 파이프라인, 또는 커멘드열은, 괄호 `()'를 사용해 단순 명령을 형성할 수가 있어 파이프라인이나 명령열의 일부로서 사용할 수 있습니다. 명령, 파이프라인, 또는 커멘드열의 뒤에 `&'를 두어 실행하면(자), 그 명령의 종료를 기다리지 않고 다음의 명령을 실행할 수 있습니다.

  편입 명령, 비편입 커멘드의 실행
편입 명령은, 쉘 중(안)에서 실행됩니다. 파이프라인의 원가요소의 최후 이외가 편입 명령 때, 파이프라인은, 서브 쉘내에서 실행됩니다.

괄호로 괄명령은, 항상 서브 쉘내에서 실행됩니다.

    (cd; pwd); pwd

이것은, 현재의 디렉토리를 이동하는 일 없이 구홈 디렉토리를 표시 (그 후에 현재의 디렉토리를 표시)해, 그 한편,

    cd; pwd

이 경우는홈디렉토리로 이동합니다. 괄호로 괄명령은, 대부분 cd 가 현재의 쉘에 영향을 주는 것을 막기 위해서(때문에) 사용합니다.

실행하는 명령이 짜넣어 커멘드가 아닌 것이 판명되면(자), 쉘은 그 명령을 execve(2)를 통해서 실행하려고 합니다. 환경 변수 path 내의 각 어는, 쉘이 명령을 검색한다 디렉토리를 지정합니다. -c, -t 옵션의 모두 지정되어 있지 않은 경우, 이러한 디렉토리내의 이름을 내부 테이블로 해시 해, 그 명령이 존재할 가능성이 있는 디렉토리에서만 execve(2)의 실행을 시도합니다. 이것은, 검색 패스내의 디렉토리의 수가 많은 경우에, 명령의 위치 확정을 많이 고속화합니다. 이 기구가 (unhash 에 의해) 오프로 되어 쉘에 -c 또는 -t 의 옵션이 주어지는지, 각각의 path 의 디렉토리 원가요소중 한쪽이 `/'로 시작되지 않은 경우, 쉘은 현재의 작업 디렉토리와 주어진 명령명을 결합해 실행하는 파일의 패스명을 형성합니다.

파일에 실행 허가여 시스템이 실행 가능하지 않는 경우, (예 : 실행 가능 바이너리, 인터 프린터를 지정한 스크립트 (은)는 아닐 때), 그것을 쉘 명령을 포함한 파일이라고 간주, 새로운 쉘을 기동해 그 파일을 읽어들입니다. 쉘의 특수한 앨리어스(alias)로, 쉘 자체는 아니고 인터프리터를 지정하도록(듯이) 설정할 수도 있습니다.

관습적인‘#! '스크립트 인터프리터를 이해하지 않는 시스템상에서는, 쉘은 그것을 에뮤레이트 하도록(듯이) 컴파일 됩니다 ; 셸 변수 version 를 참조해 주세요. 그 경우, 쉘이 파일의 최초의 행을 체크해, 그것이 `#! 인터프리터 arg ...'의 형식인지 어떤지를 확인합니다. 이 형식이면, 쉘은 주어진인수와 함께 인터프리터를 기동해, 그 파일을 표준 입력에 공급합니다.

  입출력
명령의 표준 입력과 표준 출력은 이하의 문법에 따라 리디렉트 할 수가 있습니다:

< name
    파일 name (변수, 명령, 파일명 전개를 받습니다) (을)를 오픈해, 명령의 표준 입력으로 합니다.
<< word
    word 와 동일한 행이 출현할 때까지, 쉘의 입력을 읽어들입니다. word 는 변수, 파일명, 명령 치환을 받지 않습니다. 쉘 입력의 행은 읽히자마자, 치환을 실시하기 전에 word 라고 비교됩니다. word 에 `\', `"', `'', ``' 의 쿼트가 출현하지 않으면, 행 중(안)에서 명령 치환이 실행됩니다. 이 치환을 억제하기 위해서, `\'에 의해 `$', `\', ``'를 쿼트 할 수가 있습니다. 명령 치환에 대해, 모든 공백, 탭, 개행은 보존됩니다만, 마지막 개행은 삭제됩니다. 읽어들인 행은 모두 임시 파일에 보존되어 명령의 표준 입력으로서 이용됩니다.
> name
>! name
>& name
>&!  name
    파일 name 를 표준 출력으로서 이용합니다. 파일이 존재하지 않으면 작성됩니다. 벌써 파일이 존재하면 그 내용은 잘라 버릴 수 있어 이전의 내용은 없어집니다.

    셸 변수 noclobber 가 세트 되고 있는 경우, 파일이 존재하지 않는가 캐릭터형 특수 파일 (단말이나 `/dev/null'와 같이)(이)가 아니면 에러가 됩니다. 이것은, 벌써 존재하는 파일을 잘못해 삭제해 버리는 것을 방지합니다. `! '를 이용한 형식을 사용하면(자), 이 검사를 억제할 수가 있습니다.

    `&'를 이용한 형식에서는, 표준 출력과 함께 진단 메세지 출력도 파일에 리디렉트 됩니다. name 는,`<'의 입력 파일명의 경우와 같은 전개를 받습니다.
>> name
>>& name
>>! name
>>&!  name
    `>'와 같게, 파일 name 를 표준 출력으로서 이용합니다. 다만, 명령의 출력은 파일에 추가됩니다. 변수 noclobber 가 세트 되고 있는 경우, 파일이 존재하지 않으면에러가 됩니다. `! '를 이용하는 것으로, 이 검사를 억제할 수가 있습니다.

명령은, 쉘이 기동되었을 때의 환경을 계승합니다. 다만 이 환경은 입출력의 파라미터에 의해 변경되고, 명령이 파이프라인안에 있었을 경우도 변경됩니다. 따라서, 이전의 몇개의 쉘과는 달라, 쉘의 명령 파일로부터 기동된 커멘드는, 디폴트에서는 그 명령의 텍스트에 액세스 할 수 없습니다. 대신에 그러한 명령은, 쉘의 원래의 표준 입력을 그대로 계승합니다. 셸 스크립트의 내부에서, 명령에 미리 정해졌다 (inline) 데이터를 건네주는 경우에는, 표준 입출력의 형식이 아니고, `<<'의 기구를 사용할 수가 있습니다. 이와 같이 제한하는 것으로써, 쉘 명령 스크립트를 파이프라인의 일부로서 이용할 수가 있습니다. 백그라운드에서 실행되고 있는 명령의 표준 입력도 /dev/null 등에 리디렉트 되는 것 없고, 쉘의 표준 입력을 그대로 계승하고 있습니다. 만약 표준 입력이 단말로, 명령이 단말로부터 읽어들이려고 했을 경우, 그 프로세스는 블록 되어 쉘은 유저에게 그것을 통지합니다 (작업의 항을 참조).

진단 메세지 출력도 파이프에 리디렉트 하는 것이 할 수 있습니다. 단지 `|'의 것인지 비교적 `|&'를 사용합니다.

쉘은, 표준 출력의 리디렉트없이, 진단 메세지 출력을 리디렉트 할 수 없게 됩니다. 그 때문에,`(명령 > 출력 파일 ) >& 에러 파일 '는, 무난한 예비 수단으로서 되고 있습니다. 출력 파일, 에러 파일의 어느 쪽인지가, 단말에 출력을 보내기 위한 `/dev/tty'입니다.

  특징
여기에서는 쉘이 어떻게 명령행을 받아들여 해석해, 실행하는지를 설명했습니다. 다음은, 편리한 특징에 대해 설명합니다.

  제어 플로우(flow)
이 쉘에는, 명령 파일 (셸 스크립트)이나 (제약은 있지만 편리한) 단말로부터의 입력 처리의 흐름을 제어하기 위해서 사용할 수 있다 많은 명령을 갖추고 있습니다. 이러한 명령은, 입력의 재독 보고 포함이나 읽어 비해를 실시하기 (위해)때문에 쉘을 강제적으로 조작합니다. 이러한 실장을 위해서(때문에), 몇개의 명령에는 제한이 있습니다.

foreach, switch, while 문은, if 문의 if-then-else 형식과 같게, 다음에 가리키도록(듯이) 입력행의 단독의 단순 명령중에 주요한 키워드가 나타나는 것을 요구합니다.

쉘의 입력이 시크 가능하지 않은 경우는, 루프가 읽히면(자) 항상 입력을 버퍼 해, 이 내부 버퍼를 시크 하는 것으로 루프에 의한다 재독 보고 포함을 가능하게 합니다. (이것을 허가한 결과, 후방으로 향하는 goto 가 시크 가능하지 않은 입력에 대해서도 성공하게 됩니다. )

  식
편입 명령의 if, while, exit 는 공통된 문법을 가진 식을 사용합니다. 식에는, 다음의 3 개의 섹션 중(안)에서 설명된다 임의의 연산자를 포함할 수가 있습니다. @ 편입 명령 (그 쪽도 참조) 자체는, 문법을 단락지을테니 주의해 주세요.

  논리 연산자, 산술 연산자, 비교 연산자
이러한 연산자는 C 의 연산자와 같은 우선 순위가 되고 있습니다. 연산자에는, 다음의 것이 있습니다.

    || && | ^ & == ! = =~ ! ~ <= >=
    < > << >> + - * / % ! ~ ( )

여기에 올린 연산자는 우측의 것(정도)만큼 우선 순위가 높아지고 있습니다. 다만,`==' `! =' `=~' `! ~'의 4 개(살),`<=' `>=' `<' `>'의 4 개(살), `<<' `>>'의 2 개(살),`+' `-'의 2 개(살),`*' `/' `%'의 3 개(살)은 각각 동일한 그룹에 소속해 있어 같은 그룹에 소속해 있다 연산자의 우선 순위는 같은 레벨이 되고 있습니다. 연산자 `==' `! =' `=~' `! ~'는 인수를 캐릭터 라인으로서 비교합니다. 다른 연산자는 모두 수치로 비교합니다. 연산자 `=~' `! ~'는 `! =' `=='와 닮아 있습니다만, 좌측의 오퍼랜드에 매치 하는 그로브파탄 (파일명 치환를 참조) (을)를 우측으로 두는 것이 다릅니다. 필요한 것에 대해서만 패턴 매치를 실시하므로, 셸 스크립트중에 있어서의 switch 편입 명령의 사용의 필요를 줄입니다.

`0'로 시작되는 캐릭터 라인은 8 진수로 간주해집니다. 하늘의 캐릭터 라인이나 인수가 빠지고 있는 것은 `0'로 간주해집니다. 모든 식의 결과는 10 진수로 나타내지는 캐릭터 라인이 됩니다. 특히, 식의 원가요소가 동일한 단어중에 복수개 나타날 것은 없으면 말하는 것에 주의해 주세요. 예외로서 파서에 문법적으로 특별한 의미를 가지는 식의 원가요소 (`&' `|' `<' `>' `(' `)')가 이웃하러 오는 것은 상관하지 않습니다. 다만, 이것들은 공백에서 단락지어져야 합니다.

  명령 종료 스테이터스
식 중(안)에서 명령을 실행할 수가 있어 식을 안괄호 (`{}')로 둘러싸면(자) 종료 스테이터스가 돌려주어집니다. 안괄호는, 명령의 단어로부터 공백에서 단락짓는 것을 잊지 말아 주세요. 명령의 실행이 성공했을 경우는, 진 (예를 들어 `1')을 돌려줍니다. 명령이 0 의 스테이터스로 종료했을 경우, 또는 실행에 실패했을 경우는, 가짜 (예를 들어 `0')를 돌려줍니다. 좀 더 자세한 스테이터스의 정보가 필요한 경우는, 명령을 식의 외부에서 실행해, 셸 변수 status 를 조사해 주세요.

  파일 문의 연산자
이러한 연산자 중 몇인가는 파일과 관련하는 오브젝트에 대해 진/위의 판정을 실시합니다. 이것들은 -op file 의 형식입니다. op 는 다음 중 어떤 것이나 1 개입니다.

    r   독해 액세스
    w   기입 액세스
    x   실행 액세스
    X   패스중에 있는 실행 가능 파일이나 쉘 편입 명령. 예를 들어 `-X ls'와 `-X ls-F'는 일반적으로 진이며, `-X /bin/ls'는 그렇지 않다 (+)
    e   존재
    o   소유자
    z   사이즈 0
    s   사이즈가 0 이 아니다 (+)
    f   통상 파일
    d   디렉토리
    l   기호 연결 (+) *
    b   블록형 특수 파일 (+)
    c   캐릭터형 특수 파일 (+)
    p   이름 첨부 파이프 (fifo) (+) *
    S   소켓형 특수 파일 (+) *
    u   set-user-ID 비트가 세트 되고 있다 (+)
    g   set-group-ID 비트가 세트 되고 있다 (+)
    k   스티키빗트가 세트 되고 있다 (+)
    t   file (이것은 숫자가 아니면 안된다)는 단말 디바이스에 대해서 오픈하고 있다 파일 기술자이다 (+)
    R   migrate 되고 있는 (convex 시스템만 유효) (+)
    L   다중 연산자 중(안)에서 이 연산자의 뒤에 오는 연산자는, 기호 연결이 가리켜지고 있는 파일이 아니고, 기호 연결 그 자체에 적용된다 (+) *

file 는 명령와 전개된 파일명으로, 지정된 열매 유저에 대한 관계가 있는지 어떤지 테스트합니다. file 가 존재하고 있지 않는 경우, 혹은 액세스 할 수 없는 경우, `*'로 가리킨 연산자에 대해서는, 지정의 파일 타입이 현재의 시스템에 존재하고 있지 않으면 모든 문의는 가짜 (예를 들어 `0')를 돌려줍니다.

s true 이러한 연산자는, 간결하게 하기 위해서 연결할 수가 있습니다. `-xy file'는 `-x file && -y file'와 등가입니다. (+) 예를 들어 `-fx'는 통상의 실행 가능 파일에 대해서는 진 (`1'를 돌려준다)입니다만, 디렉토리에 대해서는 그렇지는 않습니다.

s L 는 다중 연산자 중(안)에서 사용할 수 있습니다. 이 연산자의 뒤에 오는 연산자는, 기호 연결이 가리켜지고 있는 파일이 아니고, 기호 연결 그 자체에 적용됩니다. 예를 들어 `-lLo'는 호출 유저가 소유하고 있는 링크에 대해서는 진입니다. Lr, Lw, Lx 는 링크에 대해서는 항상 진으로, 링크가 아닌 것에 대해서는 가짜입니다. L 는 다중 연산자 중(안)에서 마지막 연산자가 되었을 경우, 다른 의미를 가집니다. 이하를 참조해 주세요.

s file 에 건네주어야 할 연산자와 그렇지 않은 연산자 (예를 들어 X 와 t) (을)를 연결하는 것은 가능합니다만, 실용적이지 않고, 자주 실수의 바탕으로 됩니다. 특히, 파일이 아닌 연산자에 L 를 붙이면(자), 이상한 결과가 됩니다.

다른 연산자는 다른 정보, 즉 단순한 `0'나 `1'만 (이)가 아닌 정보를 돌려줍니다. (+) 이것들은 전에 나타낸 것과 같은 서식이 됩니다. op 는 다음 중 어떤 것이나 1 개입니다.

    A   신기원으로부터의 초수로 나타낸, 마지막에 파일에 액세스 한 시간
    A:  A 와 같아, 타임 스탬프의 서식. 예: `Fri May 14 16:36:10 1993'
    M   마지막에 파일을 변경한 시간
    M:  M 와 같아, 타임 스탬프의 서식
    C   마지막에 inode 를 변경한 시간
    C:  C 와 같아, 타임 스탬프의 서식
    D   디바이스 번호
    I   inode 번호
    F   device:inode 의 형식에서 나타냈다 복합 file 식별자
    L   기호 연결이 가리키고 있는 파일의 이름
    N   (하드) 링크의 수
    P   선두에 0 이 붙어 있지 않은 8 진수로 나타낸 퍼미션
    P:  P 와 같아, 선두에 0 이 붙는다
    Pmode
        `-P file & mode'와 등가. 예를 들어, `-P22 file'는 file 의 그룹과 다른 사람이 기입해 가능이면 `22'를, 그룹뿐이면 `20'를, 아무것도 없으면 `0'를 돌려준다.
    Pmode:
        Pmode: 와 같아, 선두에 0 이 붙는다
    U   수치로 나타낸 유저 ID
    U:  유저명, 유저명이 발견되지 않았던 경우는 수치로 나타낸 유저 ID
    G   수치로 나타낸 그룹 ID
    G:  그룹명, 그룹명이 발견되지 않았던 경우는 수치로 나타낸 그룹 ID
    Z   바이트수로 나타낸 사이즈

이러한 연산자중 1 개(살)만 다중 연산자안에 나타나는 것이 용서되고 있습니다만, 반드시 마지막에 붙일 필요가 있습니다. 다만, L 는 다중 연산자안의 최후와 그 이외의 개소에서는 다른 의미가 될테니 주의해 주세요. 왜냐하면,`0'는 이러한 연산자가 많게 취해 정당한 돌아가 값이기 때문에입니다. 이것들이 실패했을 경우,`0'를 돌려주지 않습니다. 대부분의 경우,`-1'를 돌려주어, F 는 `:'를 돌려줍니다.

이 쉘이 POSIX 를 정의해 컴파일 되고 있다 (셸 변수 version 를 참조) 경우, 파일 문의의 결과는, access(2) 시스템 콜의 결과에 근거한 것이 아니고, 파일의 허가 비트에 근거한 것이 됩니다. 예를 들어, 통상은 기입해 가능이지만 독해 전용으로 mount 된 파일 시스템상에 있다 파일을 -w 로 검사했을 경우, POSIX 쉘에서는 성공해, 비 POSIX 쉘에서는 실패하게 됩니다.

파일 문의 연산자는 filetest 편입 명령 (그 쪽도 참조) (이)라고 등가가 될 수 있습니다. (+)

  작업
쉘은 파이프라인의 각각에 대해작업를 1 개씩 관련짓습니다. 쉘은, 현재 실행중의 작업의 일람표를 보관 유지하고 있어, 이것은, jobs 명령에 의해 표시할 수가 있습니다. 작업에는 정수의 번호를 할당할 수 있습니다. 작업이 `&'를 이용해 비동기에게 기동되었을 경우, 쉘은 이하와 같은 출력을 실시합니다:

    [1] 1234

이것은, 비동기에게 기동한 작업이 작업 번호 1 이며, 프로세스 ID 가 1234 인 (톱 레벨의) 프로세스를 1 개(살) 가지고 있는 것을 나타냅니다.

만약, 어느 작업을 실행중에 다른 일을 하고 싶어졌을 경우, 중지 키 (통상 ^Z)(을)를 누르는 것으로 실행중의 작업에 STOP 시그널을 송신할 수가 있습니다. 통상, 쉘은 그 작업이 일시정지한 (Suspended) 일을 출력해, prompt를 표시합니다. 셸 변수의 listjobs 가 설정되어 있으면(자), 편입 명령의 jobs 와 같이 모든 작업이 리스트 됩니다. 만약 그것이 `long'와 설정되어 있으면(자) 리스트는 `jobs -l'와 같은 긴 형식이 됩니다. 여기서, 일시정지한 작업 상태를 조작할 수가 있습니다. 즉, bg 명령에 의해 정지한 프로세스를 ``백그라운드''로 주행시키거나 다른 명령을 실행하고 나서, 정지하고 있던 작업을 fg 명령에 의해 ``foreground''로 재실행시키는 것등을 할 수 있습니다. (편집 명령의 run-fg-editor 도 참조해 주세요. ) `^Z'는 즉석에서 효력을 발휘해, 세치기와 같게, 그때까지 기다리게 되고 있었다 출력과 아직 읽히지 않은 입력은 버려집니다. 편입 명령의 wait 는 모든 백그라운드의 작업이 종료할 때까지 쉘을 대기 상태에 시킵니다.

`^]'키는 지연 중지 시그널을 현재의 작업에 송신합니다. 이 경우는 프로그램이 read(2) 에 의해 읽어들이려고 한 시점에서 STOP 시그널이 송신됩니다. 이것은, 실행중의 작업에 대해서 몇개의 입력을 먼저 입력해 두어, 선행 입력을 다 읽은 시점에서 작업을 정지시키고 싶을 때에 편리합니다. csh(1)에서는 이 기능은 `^Y'키에 할당할 수 있고 있었습니다. tcsh 에서는 `^Y'는 편집 명령입니다. (+)

백그라운드에서 실행하고 있는 작업이 단말로부터의 입력을 시도했을 경우, 그 작업은 정지합니다. 통상, 백그라운드 작업이 단말에 출력하는 것은 가능합니다만, 이것은 명령 `stty tostop'에 의해 금지할 수가 있습니다. 만약 이 tty 옵션을 지정했다면, 백그라운드에서 실행하고 있는 작업은, 단말로부터 입력을 시도했을 때와 같이 단말에 출력을 시도했을 때에 정지합니다.

쉘로 작업을 참조하려면 몇개의 방법이 있습니다. 캐릭터 `%'는 작업명을 나타내는데 이용됩니다. 번호 1 의 작업을 참조하는 경우는 `%1'로 합니다. 단지 작업명을 입력했을 경우, 그 작업은 foreground에 이동됩니다. 즉 `%1'는 `fg %1'와 등가로, 작업 1 을 foreground로 이행합니다. (와)과 같이 `%1 &'는, 정확히 `bg %1'와 같이의 작업 1 을 백그라운드에서 재개시킵니다. 작업은 그 작업을 기동했을 때에 타입 된 캐릭터 라인의 선두 부분에 의해 참조할 수도 있습니다. 다만 이 선두 부분은 애매하지 않을 필요가 있습니다. 즉 `%ex'는, `ex'라고 하는 캐릭터 라인으로 시작되는 이름의 중지 된 작업이 1 개 밖에 없는 경우에 한정해, 중지 된 ex(1)의 작업을 재개합니다. 캐릭터 라인 string 를 포함한 작업이 1 개 밖에 없는 경우,`%? string'와 입력하는 것으로 그것을 지정할 수도 있습니다.

쉘은 현재의 작업과 직전의 작업을 기억하고 있습니다. 작업에 관계하는 출력으로,`+'기호가 부가되고 있는 것이 현재의 작업, `-'기호가 부가되고 있는 것이 직전의 작업입니다. `%+', `%'와 (역사기구의 문법과의 유사로부터) `%%'는 모두 현재의 작업,`%-'는 직전의 작업을 참조하기 위한 생략형입니다.

어떤 종류의 시스템에서는 작업 제어 기구를 이용하기 위해서 stty(1)의 옵션 `new'를 설정해 둘 필요가 있습니다. 작업 제어 기구는 `신형의'단말 드라이버의 실장 후에 구축되고 있기 때문으로, 신형의 단말 드라이버에 의해 작업을 정지시키기 위한 세치기 캐릭터를 키보드로부터 입력할 수 있게 되기 때문입니다. 신형의 단말 드라이버의 옵션 설정에 대해서는 stty(1)와 편입 명령의 setty 를 참조해 주세요.

  상태 통지
쉘은, 프로세스가 상태의 변화를 일으키자마자 그것을 검지합니다. 통상은 prompt가 표시되기 직전에게만, 어느 작업이 정지해 그 이상 처리가 진행되지 않게 된 것을 통지합니다. 이것은 유저의 일을 방해 하지 않게 하기 (위해)때문입니다. 그렇지만, 셸 변수 notify 를 설정하는 것으로써, 쉘에 백그라운드 작업 상태가 변화한 것을 즉시 통지시킬 수가 있습니다. 또, 쉘 명령 notify 에 의해, 특정의 작업 상태의 변화를 즉시 통지시키도록(듯이) 마크 할 수도 있습니다. 인수 없음의 notify 는 현재의 프로세스에 대해서 마크를 붙입니다. 백그라운드 작업의 개시 직후에 단지 `notify'와 치면(자) 그 작업을 마크 합니다.

정지한 작업이 존재하는 상태로 쉘을 종료하려고 하면(자) `You have stopped jobs. '라고 하는 경고를 받습니다. 이 때 jobs 명령에 의해 어느 작업이 정지중인지를 확인할 수가 있습니다. 경고를 받은 직후에 jobs 명령로 확인했을 경우라고 경고를 받은 직후에 재차 쉘을 종료 시키려고 했다 경우에는, 쉘은 2 번째의 경고를 실시하지 않고 정지중의 작업을 종료시키고 나서 쉘을 종료합니다.

  자동 이벤트, 정기 이벤트, 시각 지정 이벤트 (+)
쉘의 ``라이프 사이클''에 두어, 여러가지 시간에 자동적으로 명령의 실행과 다른 액션을 실시하는 다양한 방법이 준비되어 있습니다. 그것들을 여기에 요약해, 자세하게는 편입 명령, 특별한 셸 변수, 특별한 앨리어스(alias)의 적절한 장소에서 설명합니다.

편입 명령의 sched 는 커멘드를 이벤트의 예정표에 두어, 지정되었을 때 각에 쉘에 의해 실행되도록(듯이) 합니다.

특별한 앨리어스(alias)로서 beepcmd, cwdcmd, periodic, precmd, postcmd, jobcmd 가 있어, 각각 쉘이 벨을 울릴 때, 작업 디렉토리가 바뀔 때, tperiod 분 마다, 각 prompt의 전, 각 명령의 실행전, 각 명령의 실행 후, 작업의 기동시 또는 foreground 이행시에 실행시키고 싶은 명령을 설정할 수 있습니다.

셸 변수의 autologout 를 사용해, 지정한 만큼 수의 휴지 후에 로그아웃 또는 쉘을 잠그도록(듯이) 설정할 수 있습니다.

셸 변수의 mail 를 사용해, 정기적으로 새로운 메일을 체크하도록(듯이) 설정할 수 있습니다.

셸 변수의 printexitvalue 를 사용해, 0 이외의 스테이터스로 종료한 명령의 종료 스테이터스를 표시하도록(듯이) 지정할 수 있습니다.

셸 변수의 rmstar 를 사용해, `rm *'가 입력되었을 때에 유저에게 틀림없는지 어떤지 확인을 요구하도록(듯이) 지정할 수 있습니다.

셸 변수의 time 를 사용해, 지정한 초수보다 많이 CPU 시간을 사용한 프로세스의 종료후에 짜넣어 명령의 time 를 실행하도록(듯이) 설정할 수 있습니다.

셸 변수의 watch 와 who 를 사용해, 지정한 유저가 로그인 또는 로그아웃 했을 때에 리포트하도록(듯이) 설정할 수 있습니다. 또 짜넣어 명령의 log 로 언제라도 그러한 유저에게 붙은 리포트를 얻을 수 있습니다.

  고유 언어 시스템의 서포트 (+)
쉘은 8 비트 깨끗해서 (그처럼 컴파일 되고 있으면. 셸 변수의 version 를 참조), 그것을 필요로 하는 캐릭터 세트를 서포트합니다. NLS 서포트는 쉘이 시스템의 NLS 를 사용하도록(듯이) 컴파일 되고 있을까 제발에 따라서 다릅니다 (다시, version 를 참조). 어느 쪽의 경우에서도 7 비트 ASCII 가 디폴트의 캐릭터 분류 (예를 들어 그러한 캐릭터는 표시 가능)(이어)여, 그리고 순서 짓고입니다. 환경 변수의 LANG 또는 LC_CTYPE 를 변경하면(자), 이러한 점에 대해 변화의 유무가 체크됩니다.

시스템의 NLS 를 사용하는 경우에는, 캐릭터의 적절한 분류와 순서 짓고를 결정하기 위해서(때문에) setlocale(3) 함수가 불려 갑니다. 이 함수는 전형적으로는 환경 변수의 LANG 과 LC_CTYPE 를 조사합니다. 보다 상세한 것에 대하여는 시스템의 문서를 참조해 주세요. 시스템의 NLS 를 사용하지 않는 경우에는, 쉘은 ISO 8859-1 캐릭터 세트가 사용되고 있으면(자) 가정하는 것으로 시뮬레이트 합니다. 변수 LANG 과 LC_CTYPE 중 한쪽이 설정되어 있어도, 그러한 값을 무시합니다. 시뮬레이트 된 NLS 에서는 순서 지어에 영향을 주지 않습니다.

더해, 진짜와 시뮬레이트 된 NLS 의 양쪽 모두로, \200-\377 의 범위, 즉 M-char 로 바인드 떠날 수 있어 모든 표시 가능 캐릭터는, 자동적으로 self-insert-command 에 재바인드 됩니다. 대응하는 escape-char 에의 바인드는, 만약 있으면 그대로 남습니다. 이러한 캐릭터는 환경 변수의 NOREBIND 가 설정되어 있으면 재바인드 되지 않습니다. 이 기능은 시뮬레이트 된 NLS 나 모든 것이 ISO 8859-1 이라고 가정한 원시적인 진짜의 NLS 로 유효하겠지요. 그렇지 않으면, \240-\377 의 범위의 M-char 에의 바인드는 사실상 해제됩니다. 이 경우에서도, 물론 bindkey 로 명시적으로 관련하는 키에 재바인드 하는 일은 가능합니다.

미지의 캐릭터 (즉 표시 가능해도 제어 캐릭터도 아닌 것 같은 캐릭터)는 \nnn 와 같은 형식에서 표시됩니다. tty 가 8 비트 모드로 되어 있지 않다 경우는, ASCII 로 변환해 강조 표시 모드를 사용하는 것으로 다른 8 비트 캐릭터가 표시됩니다. 쉘은 tty 의 7/8 비트 모드를 변경할 것은 없고, 유저에 의한 7/8 비트 모드의 변경에 따릅니다. NLS 이용자 (또는 메타키를 이용하고 싶은 이용자)는, 예를 들어 ~/.login 파일로 적절히 stty(1) 명령을 호출하는 것으로, 명시적으로 tty 를 8 비트 모드로 설정할 필요가 있을지도 모릅니다.

  OS 고유 기능의 서포트 (+)
개개의 operating system로 제공되고 있는 기능을 서포트하기 위해서, 많은 새로운 편입 명령이 제공되고 있습니다. 모두 편입 명령섹션으로 상세하게 설명되고 있습니다.

TCF 를 서포트하는 시스템 (aix-ibm370, aix-ps2)에서는, getspath 와 setspath 로 시스템 실행 패스를 취득, 설정해, getxvers 와 setxvers 로 시험 바젼프리픽스를 취득, 설정해, migrate 로 프로세스를 사이트간에서 이동시킵니다. 편입 명령의 jobs 는 각 작업이 실행되고 있는 사이트를 표시합니다.

Domain/OS 에서는, inlib 로 공유 프로그램 라이브러리를 현환경에 추가해, rootnode 로 rootnode 를 변경해, ver 로 systype 를 변경합니다.

Mach 에서는, setpath 가 Mach 의 setpath(1)와 등가입니다.

Masscomp/RTU 와 Harris CX/UX 에서는, universe 로 universe 를 설정합니다.

Harris CX/UX 에서는, ucb 나 att 에 의해 지정한 universe 로 명령을 달리게 합니다.

Convex/OS 에서는, warp 로 universe 를 표시 또는 설정합니다.

환경 변수의 VENDOR, OSTYPE, MACHTYPE 는, 쉘이 자신이 실행되고 있다고 생각하고 있는 시스템의, 각각 벤더, operating system, 머신 타입 (마이크로 프로세서의 클래스 또는 머신의 모델)(을)를 표시합니다. 이것은 여러가지 타입의 머신간에 홈 디렉토리를 공유하는 경우에 특히 편리합니다. 이용자는 예를 들어 각자의 ~/.login 중에서

    set path = (~/bin. $MACHTYPE /usr/ucb /bin /usr/bin . )

(으)로 해, 각 머신용으로 컴파일 된 실행 형식을 적절한 디렉토리에 둘 수가 있습니다.

셸 변수의 version 는, 어느 옵션을 선택해 쉘이 컴파일 되었는지를 표시합니다.

편입의 newgrp, 셸 변수의 afsuser 와 echo_style, 그리고 시스템에 의존하는 쉘의 입력 파일 (파일를 참조)의 위치에도 주의해 주세요.

  시그널 처리
로그인 쉘은 ~/.logout 파일을 읽고 있는 동안은 세치기를 무시합니다. 쉘은 기동시에 -q 의 지정이 없으면 QUIT 시그널을 무시합니다. 로그인 쉘은 TERM 시그널을 포착합니다만, 비로그인 쉘는 TERM 시그널에의 거동을 부모로부터 계승합니다. 다른 시그널에 대해서는 부모로부터 쉘에 계승된 값을 가지고 있습니다.

셸 스크립트에서는, 쉘의 INT 와 TERM 시그널의 취급을 onintr 로 제어할 수 있습니다. 그리고 HUP 의 취급을 hup 와 nohup 로 제어할 수 있습니다.

쉘은 HUP 로 종료합니다 (셸 변수의 logout 도 참조). 디폴트에서는, 쉘의 아이들도 그렇게 합니다만, 쉘은 종료시에 HUP 를 아이들에게 보내지 않습니다. hup 는 쉘이 종료시에 아이에게 HUP 를 보내도록(듯이) 해, nohup 는 아이가 HUP 를 무시하도록(듯이) 설정합니다.

  단말 관리 (+)
쉘은 3 개가 다른 단말 (``tty'') 모드의 설정을 사용합니다. 그것들은 편집시에 사용하는 `edit', 캐릭터 리터럴을 쿼트 하는 경우에 사용하는 `quote', 명령 실행시에 사용하는 `execute'입니다. 쉘은 각 모드로 몇개의 설정을 일정에 유지하므로, tty 를 혼란 상태로 해 종료하는 명령이 쉘에 간섭할 것은 없습니다. 쉘은 tty 의 스피드와 패딩의 변경에도 대응합니다. 일정으로 유지되는 tty 모드의 리스트는 편입의 setty 로 취득, 설정할 수 있습니다. 에디터는 CBREAK 모드 (또는 동등의 모드)를 사용합니다만, 선행 입력된 캐릭터는 언제라도 받아들일 수 있습니다.

echotc, settc, telltc 명령을 사용해, 명령행으로부터 단말의 케이파비리티를 조작, 디버그 할 수가 있습니다.

SIGWINCH 나 SIGWINDOW 를 서포트하는 시스템에서는, 쉘은 윈도우의 리사이즈에 자동적으로 적응해, 환경 변수의 LINES 와 COLUMNS 가 설정되어 있으면 값을 보정합니다. 환경 변수의 TERMCAP 가 li# 와 co# 의 필드를 포함하고 있으면(자), 쉘은 새로운 윈도우 사이즈를 반영하도록(듯이) 그것들을 보정합니다.

참조
이 메뉴얼의 이하의 섹션에서는 사용 가능한 모든 편입 명령, 특별한 앨리어스(alias), 특별한 셸 변수에 대해 설명합니다.

  편입 명령

%job
    편입 명령 fg 와 동의입니다.

%job &
    편입 명령 bg 와 동의입니다.

:   아무것도 하지 않습니다. 항상 성공합니다.

@
@ name = expr
@ name[index] = expr
@ name++|--
@ name[index]++|--
    최초의 형식은, 모든 셸 변수의 값을 표시합니다.

    2 번째의 서식은, name 에 값 expr 를 설정합니다. 3 번째의 서식은, 값 expr 를 name 의 index 번째의 요소에 정의합니다. name 와 그 index 번째의 요소의 양쪽 모두가 이미 존재하고 있지 않으면 되지 않습니다.

    expr 는 C 와 같게,`*', `+'와 같은 연산자를 포함하는 일이 있습니다. 만약 expr 가 `<', `>', `&', `'를 포함한다면, 적어도 expr 의 그 부분은 `()'의 안에 쓰여질 필요가 있습니다. expr 의 서식은, 이하의 Expressions 로 설명되는 것이란 일절 관계가 없는 것에 주의해 주세요.

    4 번째 , 5 번째의 서식은 name 또는 그 index 번째의 요소를 인크리먼트(increment) (`++') 또는 감소 (`--') 합니다.

    `@'와 name 의 사이의 공백은 필수입니다. name 와 `='의 사이, 또 `='와 expr 의 사이의 공백은 옵션입니다. expr 의 요소는 공백에 의해 단락지어지지 않으면 안됩니다.

alias [name [wordlist]]
    인수가 없으면, 모든 앨리어스(alias)를 표시합니다. name 를 주면(자), 그 앨리어스(alias)의 내용을 표시합니다. name 와 wordlist 를 주면(자), wordlist 를 name 의 앨리어스(alias)로서 정의합니다. wordlist 는, 앨리어스(alias) 되는 명령와 파일명입니다. name 는 `alias'또는 `unalias'에서 만나 되지 않습니다. 편입 명령 unalias 에 대해서도 참조해 주세요.

alloc
    동적으로 취득하고 있는 메모리 중 사용량과 빈 용량을 표시합니다. 어떠한 인수를 주면(자) 블록 사이즈마다의 사용중 / 빈블록의 수를 표시합니다. 이 명령의 출력은 시스템에 의해 크게 다릅니다. VAX 이외의 시스템에서는, 다른 메모리 메니지먼트를 실시하고 있을지도 모르다 (으)로부터입니다.

bg [%job ...]
    지정한 작업 (인수가 없으면 현재의 작업)을 백그라운드에 이동합니다. 만약 그것들이 정지하고 있으면 재개됩니다. job 는 이하의 Jobs 로 설명하도록(듯이) 번호, 캐릭터 라인,`', `%', `+', `-'로 구성됩니다.

bindkey [-l|-d|-e|-v|-u] (+)
bindkey [-a] [-b] [-k] [-r] [--] key (+)
bindkey [-a] [-b] [-k] [-c|-s]
    [--] key command (+) 옵션 없이는, 제 1 의 형식에서는 바인드 떠날 수 있어 모든 키와 편집 명령을 표시해, 제 2 의 형식에서는 key 에 바인드 되고 있다 편집 명령을 표시해, 제 3 의 형식에서는 편집 명령 command 를 key 에 바인드 합니다. 옵션은 이하의 것을 포함합니다.

    -l  모든 편집 명령의 일람과 각각의 간단한 해설을 표시합니다.
    -d  디폴트의 에디터의 표준 키 바인드를 모든 키에 적용합니다.
    -e  GNU Emacs 를 닮은 키 바인드를 모든 키에 적용합니다.
    -v  표준의 vi(1)를 닮은 키 바인드를 모든 키에 적용합니다.
    -a  대체 키 MAP를 표시 또는 그 키 바인드를 변경합니다. 대체 키 MAP는 vi 명령 모드의 것입니다.
    -b  key 를 다음과 같이 해석합니다. ^character (예를 들어 `^A'), C-character (예를 들어 `C-A') (와)과 같은 것은 컨트롤 캐릭터, M-character (예를 들어 `M-A')와 같은 것은 메타캐라크타, F-string (예를 들어 `F-string')와 같은 것은 function key, X-character (예를 들어 `X-A')와 같은 물건은 확장 프리픽스키입니다.
    -k  key 는 커서 키의 이름, `down', `up', `left', `right'의 어느쪽이든으로서 해석됩니다.
    -r  key 의 바인드를 해제합니다. `bindkey -r'는 key 를 self-insert-command 에 바인드 한다 의에서는 없고, 그 키의 바인드를 완전하게 해제해 버리는 것에 주의해 주세요.
    -c  command 는 편집 명령이 아니고, 편입 커멘드인가 외부 명령의 이름으로서 해석됩니다.
    -s  command 는 통상의 캐릭터 라인으로서 해석되어 key 가 타입 되었다 때에 단말로부터 입력된 것처럼 다루어집니다. command 로 바인드 된 키 자체도 다시 해석을 해 10 레벨까지 반복해 해석을 합니다.
    --  옵션 처리의 중단을 실시합니다. 따라서, 다음의 단어가 '-'로 시작되어 있었다고 해도, key 로서 해석됩니다.
    -u  (또는 어떠한 무효인 옵션)
        사용법을 표시합니다.

    key 는 1 캐릭터여도, 캐릭터 라인이어도 상관하지 않습니다. 만약 명령이 캐릭터 라인에 바인드 되고 있다면, 캐릭터 라인의 최초의 캐릭터는 sequence-lead-in 에 바인드 되어 캐릭터 라인 전체가 명령에 바인드 됩니다.

    key 에 포함되는 컨트롤 캐릭터는 컨트롤 캐릭터 그 자체 (통상 `^V'에 바인드 되고 있는 에디터의 quoted-insert 명령로 입력할 수 있는 것)에서 만나도, `^A'와 같은 caret-캐릭터 형식이어도 상관하지 않습니다. 삭제 캐릭터는 `^? ' (caret-물음표)와 같이 나타냅니다. key 와 command 는 아래에 나타내는, backslash로 시작된다 escape sequence를 포함할 수가 있습니다 (System V 의 echo(1)로 이용되는 형식입니다).

        \a  벨
        \b  백 스페이스
        \e  이스케이프
        \f  개페이지 (form feed)
        \n  개행
        \r  왕복대 리턴
        \t  수평 탭
        \v  수직 탭
        \nnn
            8 진수 nnn 로 나타내지는 ASCII 캐릭터

    `\'는 후에 계속되는 캐릭터에 특별한 의미가 있으면 그것을 무효로 합니다. 특히 `\'나 `^'의 경우입니다.

break
    실행을 제일 가까운 foreach 또는 while 와 end 의 조의, end 의 나중에 재개합니다. 현재의 행의 나머지의 명령은 실행됩니다. 따라서, 복수의 레벨의 브레이크는, 1 행에 그것들을 늘어놓는 것으로 가능하게 됩니다.

breaksw
    switch 로부터의 브레이크로, endsw 의 나중에 실행이 개시됩니다.

builtins (+)
    모든 편입 명령의 이름을 표시합니다.

bye (+)
    편입 명령 logout 의 별명입니다. 이것을 사용할 수 있도록(듯이) 컴파일 되고 있는 경우에게만 유효합니다. 셸 변수 version 를 참조해 주세요.

case label:
    아래에서 설명하는 switch 문으로 이용되는 label입니다.

cd [-p] [-l] [-n|-v] [name]
    만약 디렉토리명 name 가 주어지면, 쉘의 작업 디렉토리를 name 로 변경합니다. 주어지지 않으면 home 로 변경합니다. 만약 name 가 `-'이면, 하나전의 작업 디렉토리로서 해석됩니다 (Other substitutions 를 참조). name 가 현재의 디렉토리의 서브 디렉토리가 아니고, `/', `. /' , `../'의 어느쪽이든으로 시작되는 것도 아닌 경우, 변수 cdpath 의 요소가 하나 하나 체크되어 서브 디렉토리 name 가 찾아집니다. 마지막으로, 그 모두가 실패했을 경우에 name 가 `/'에서는 글자 만치를 가지는 셸 변수로 있으면, 그 변수가 가리키는 디렉토리가 찾아집니다.

    -p 를 붙이면(자), dirs 와 같이 최종적인 디렉토리 스택의 내용을 표시합니다. cd 의 -l, -n, -v 플래그는 dirs 의 그것과 같은 의미를 가져, -p 의 동작을 포함하고 있습니다 (+).

    셸 변수 implicitcd 에 대해서도 참조해 주세요.

chdir
    편입 명령 cd 의 별명입니다.

complete [command
    [word/pattern/list[:select]/[[suffix] /] ...]] (+) 인수 없음의 경우는, 모든 보완의 후보를 표시합니다. command 를 붙이면(자), command 의 보완 후보를 표시합니다. command 와 word 등을 붙이면(자), 보완을 정의합니다.

    command 는 명령의 풀네임에서도, 어떠한 패턴에서도 상관하지 않습니다 (파일명 치환를 참조). 보완 후보가 하나가 아닌 것을 나타내기 위해서(때문에),`-'로 시작할 수가 있습니다.

    word 는 현재의 말의 보완에 어느 단어가 관계하는지를 지정한다 물건으로, 이하 중 어떤 것이나 1 개입니다.

        c   현재의 말의 보완. pattern 는, 명령행상의 현재의 말에 매치 하는 패턴으로 없으면 안됩니다. pattern 는 현재의 말의 보완이 완료하면(자) 무시됩니다.
        C   c 를 닮아 있습니다만, 현재의 말의 보완 후에 pattern 를 포함합니다.
        n   다음의 말의 보완. pattern 는 명령행상의 하나전의 말에 매치 한다 패턴이 아니면 안됩니다.
        N   n 를 닮아 있습니다만, 현재의 말의 둘전의 말에 매치 하는 패턴이 아니면 안됩니다.
        p   위치에 의존한 보완. pattern 는 수치의 범위를 지정하는 것이어, 셸 변수의 인덱스와 같은 문법이 이용됩니다. 현재의 말을 포함하는 것이 아니면 안됩니다.

    list 는 이하의 리스트중에서 가능한 보완의 리스트를 나타냅니다.

        a   앨리어스(alias)
        b   바인딩 (편집 명령)
        c   명령 (편입 커멘드도 외부 커멘드도 포함합니다)
        C   지정된 패스로는 글자 만외부 명령
        d   디렉토리
        D   지정된 패스로는 글자 만디렉토리
        e   환경 변수
        f   파일명
        F   지정된 패스로는 글자 만파일명
        g   그룹명
        j   작업
        l   제한치
        n   아무것도 보완하지 않습니다
        s   셸 변수
        S   시그널
        t   프레인 (``텍스트'') 파일
        T   프레인 (``텍스트'') 파일로, 지정된 패스로는 글자 만의
        v   모든 변수
        u   유저명
        x   n 를 닮아 있습니다만, list-choices 가 사용되고 있을 때에는 select 를 표시합니다.
        X   보완
        $var
            변수 var 에 격납되고 있는 말
        (...)
            리스트중의 말
        `...`
            명령의 출력에 포함되는 말

    select 는 glob 패턴입니다 (생략 가능). 이것을 지정하면(자), list 에 있는 단어 중 select 에 매치 하는 것만이 대상이 되어, 셸 변수 fignore 는 무시됩니다. 마지막 3 개의 보완 형식에는 select 패턴을 줄 수 없습니다. 또 x 는 list-choices 편집 명령이 이용되었을 때에는 select 를 설명 메세지로서 취급합니다.

    suffix 는 단일의 캐릭터로, 보완이 성공하면(자) 그 후에 추가됩니다. 하늘의 경우는 아무것도 추가되지 않습니다. 생략 되면(자) (이 경우 4 번째의 딜리미터도 생략 할 수 있습니다) 디렉토리에는 slash 캐릭터가, 그 외의 캐릭터에는 스페이스 캐릭터가 추가됩니다.

    그럼 몇개인가예를 나타냅니다. 명령에 따라서는, 디렉토리만을 인수로서 취하는 것이 있습니다. (그러한 명령에 대해서) 통상 파일을 보완하는 것은, 빗나간 화살입니다.

        > complete cd 'p/1/d/'

    `cd'에 계속되는 최초의 단어만 (`p/1')을 디렉토리에서 보완합니다. 명령 보완을 좁히기 위해서(때문에) p-형식의 보완을 이용할 수도 있습니다. `cd'에 계속되는 최초의 단어만 (`p/1')을 디렉토리에서 보완합니다.

        > co[^D]
        complete compress
        > complete -co* 'p/0/(compress)/'
        > co[^D]
        > compress

    이것은 `co'로 시작된다 (즉 `co*'에 매치 한다) 명령 (위치 0 에 있는 단어 `p/0')를 보완해, `compress' (리스트에 있는 유일한 단어)를 준 것입니다. 선두에 있는 `-'는, 이 보완이 명령을 확정할 수 없는 경우에게만 이용되는 것을 의미합니다.

        > complete find 'n/-user/u/'

    이것은 n-형식의 보완의 예입니다. `find'의 다음에, 한편 `-user'의 직후에 있는 단어를, 유저의 리스트로 보완합니다.

        > complete cc 'c/-I/d/'

    c-형식의 보완의 예입니다. `cc'의 후에 있어, 한편 `-I'에서는 글자 만단어를 디렉토리에서 보완합니다. 여기에서는 소문자의 c 를 이용하고 있으므로, `-I'는 디렉토리의 일부라고는 보이지 않습니다.

    명령에 응해, 편리한 list 도 다릅니다.

        > complete alias 'p/1/a/'
        > complete man 'p/*/c/'
        > complete set 'p/1/s/'
        > complete true 'p/1/x:Truth has no options. /'

    이것들에서는, `alias'에 계속되는 단어를 앨리어스(alias)로, `man'에 계속되는 단어를 명령로, `set'에 계속되는 단어를 셸 변수로 옮겨놓고 있습니다. `true'는 옵션을 취하지 않기 때문에, 보완이 시도되었을 때에 아무것도 실시하지 않고, 보완 리스트의 선택 화면에는 `Truth has no options. '를 표시한다 x 를 지정해 있습니다.

    man 의 예나, 이하에 나타내는 몇개의 예에서는, `p/*'대신에 `c/*'나 `n/*'를 이용할 수도 있습니다.

    단어의 보완을 변수로 실시할 수도 있습니다. 이러한 변수는 보완 시에 평가됩니다.

        > complete ftp 'p/1/$hostnames/'
        > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu)
        > ftp [^D]
        rtfm.mit.edu tesla.ee.cornell.edu
        > ftp [^C]
        > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net)
        > ftp [^D]
        rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net

    또 보완 시에 명령을 실행해, 거기로부터 보완을 실시할 수도 있습니다.

        > complete kill 'p/*/`ps | awk \{print\ \$1`/'
        > kill -9 [^D]
        23113 23377 23380 23406 23429 23529 23530 PID

    complete 명령 자신은, 그 인수를 쿼트 하지 않습니다. 따라서 `{print $1}'에 있는 괄호, 스페이스,`$'는 명시적으로 쿼트 하지 않으면 안됩니다.

    1 개의 명령에 복수의 보완을 지정할 수도 있습니다.

        > complete dbx 'p/2/(core)/' 'p/*/c/'

    이것은 `dbx'의 제 2 인수를 `core'라고 하는 단어로 보완해, 다른 모든 인수를 명령로 보완합니다. 위치 지정 타입의 보완은, 순서대로 보완보다 전으로 지정하는 것에 주의해 주세요. 보완은 왼쪽에서 오른쪽으로 평가되므로, (항상 매치 한다) 순서대로 보완이 먼저 지정되어 있으면(자), 위치 지정 보완은 결코 행해지지 않게 되어 버립니다. 이것은 보완 정의 시에 잘 하는 미스이므로 주의해 주세요.

    select 패턴은, 명령이 특정의 형식을 가진 파일만을 인수에 있는 것 같은 경우에 편리합니다. 이하에 예를 나타냅니다.

        > complete cc 'p/*/f:*. [cao]/'

    이것은 `cc'의 인수를,`. c', `. a', `. o'로 끝나는 파일만으로부터 보완합니다. 이하의파일명 치환로 말하는 것 같은 방식으로 그로브파탄의 부정을 지정하면, select 로 특정의 파일을 배제할 수도 있습니다.

        > complete rm 'p/*/f:^*. {c, h, cc, C, tex, 1, man, l, y}/'

    이것은 소중한 원시 코드를 `rm'의 보완에 나타나지 않게 합니다. 물론 이 배제된 이름을 손뼉으로 치거나 complete-word-raw 나 list-choices-raw 등의 편집 명령을 이용해 보완의 구조를 변경할 수도 있습니다 (각각 해당의 부분을 참조).

    `C', `D', `F', `T' 각 리스트는, 각각 `c', `d', `f', `t'와 닮아 있습니다만, select 의 인수의 해석의 방법이 달라, 보완 대상의 파일을 전치패스명이 특정의 것에 한정합니다. 예를 들어, 메일 프로그램 Elm 는 `='를 유저의 메일 딕셔너리의 생략명으로서 이용합니다. 이 경우 `elm -f ='를 `elm -f ~/Mail/'인것 같이 보완하려면

        > complete elm c@=@F:$HOME/Mail/@

    (으)로 해야 합니다. 여기에서는 `/'대신에 `@'를 이용해 select 인수를 보기 쉽게 하고 있습니다. 또 홈 디렉토리의 치환은 단어의 선두에서만 동작하므로, `~'대신에 `$HOME'를 이용하고 있습니다.

    suffix 는 표준에서는 준비되어 있지 않은 사픽스 (스페이스나 디렉토리에 대한 `/'이외) (을)를 단어 보완용으로 추가하기 위해서 이용합니다.

        > complete finger 'c/*@/$hostnames/' 'p/1/u/@'

    이것은 `finger'의 인수를, 우선 유저의 리스트로부터 보완해, 거기에 `@'를 추가해, 한층 더 `@'의 후를 변수 `hostnames'의 리스트로부터 보완합니다. 여기에서도 보완 지정의 순서에 주의해 주세요.

    마지막으로, 시사가 풍부하는 복잡한 예를 나타냅시다.

        > complete find \
        'n/-name/f/' 'n/-newer/f/' 'n/-{, n}cpio/f/' \
        'n/-exec/c/' 'n/-ok/c/' 'n/-user/u/' \
        'n/-group/g/' 'n/-fstype/(nfs 4.2)/' \
        'n/-type/(b c d f l p s)/' \
        'c/-/(name newer cpio ncpio exec ok user \
        group fstype type atime ctime depth inum \
        ls mtime nogroup nouser perm print prune \
        size xdev)/' \
        'p/*/d/'

    이것은 `-name', `-newer', `-cpio', `ncpio'에 계속되는 단어를 파일로 보완해 (마지막 양자에게 매치 하는 패턴에 주의), `-exec', `-ok'에 계속되는 단어를 명령로 보완해, `user'의 후를 유저명으로, `group'의 후를 그룹명으로 보완해, `-fstype'와 `-type'의 후를 각각 준 리스트의 멤버로 보완합니다. 또 find 에게 주는 스윗치들도 준 리스트로부터 보완해 (c-형태의 보완을 이용하고 있는 것에 주의), 그 이외의 것 모든 것을 디렉토리에서 보완합니다. .

    보완 지정은, 대상이 되는 단어가 치르다 치환 (`~'에서는 글자 만)이나 변수 (`$'에서는 글자 만)의 경우는 무시되는 것에 유의해 주세요. complete 는 실험적인 기능이며, 문법은 이 쉘의 장래의 버젼에서는 변경될지도 모릅니다. 편입 명령 uncomplete 의 설명도 봐 주세요.

continue
    무엇보다 가까운 while 또는 foreach 루프의 실행을 계속합니다. 현재의 행에 있는 나머지의 명령은 실행됩니다.

default:
    switch 문의 디폴트의 경우의 label입니다. 이것은 모든 case label의 뒤에 두어야 합니다.

dirs [-l] [-n|-v]
dirs -S|-L [filename] (+)
dirs -c (+)
    최초의 형식은 디렉토리 스택을 표시합니다. 스택 위가 왼쪽으로 와, 스택 선두의 디렉토리는 현재의 디렉토리가 됩니다. -l 를 지정하면(자), 출력의 `~'나 `~name'는, home 나, 유저 name 의 홈 디렉토리의 패스명에 명시적으로 전개됩니다. (+) -n 를 지정하면(자), 엔트리는 스크린의 종단에 이르기 전에 자리수 꺾어 됩니다. (+) -v 를 지정하면(자), 각 엔트리가 1 행에 1 개씩 표시되어 스택 내부에서의 위치가 엔트리의 전에 표시됩니다. (+) -n 나 -v 가 하나 이상 지정되면(자) -v 가 우선됩니다.

    -S 를 지정한 2 번째의 형식에서는, 디렉토리 스택을 cd 와 pushd 로부터 되는 명령열로서 filename 에 보존합니다. -L 를 지정하면(자), 이 쉘은 filename 를 source 합니다. 이 파일은, 이전에 -S 옵션이나 savedirs 기구로 보존된 디렉토리 스택입니다. 어느 경우에서도, filename 가 주어지지 않으면 dirsfile 를 이용합니다. dirsfile 도 지정되어 있지 않으면 ~/.cshdirs 를 이용합니다.

    로그인 쉘은 `dirs -L'와 같은 일을 기동시에 가고 있어 또 savedirs 가 설정되어 있으면 종료전에 `dirs -S'와 같은 일을 실시합니다. 통상 ~/.tcshrc 만이 ~/.cshdirs 의 전에 source 되므로, dirsfile 는 ~/.login 는 아니고 ~/.tcshrc 로 설정해야 합니다.

    마지막 형식은 디렉토리 스택을 클리어 합니다.

echo [-n] word ...
    각 word 를 스페이스에서 단락지어, 개행으로 종단 시켜 쉘의 표준 출력에 써냅니다. 셸 변수 echo_style 를 지정하면(자), BSD 나 System V 의 echo 의 플래그나 escape sequence를 에뮤레이트 하는 것 (하지 않는다) 같게 할 수 있습니다. 자세한 것은 echo(1)를 봐 주세요.

echotc [-sv] arg ... (+)
    arg 로 주어진 단말의 기능 (termcap(5)를 참조) (을)를 실행합니다. 예를 들어 `echotc home'는 커서를 홈 포지션으로 이동해, `echotc cm 3 10'는 커서를 3 열 10 행으로 이동해, `echotc ts 0; echo "This is a test. "; echotc fs'는 "This is a test. " (을)를 스테이터스행에 표시합니다.

    arg 가 `baud', `cols', `lines', `meta', `tabs'의 언젠가에서 만났을 경우는, 그 기능의 값을 표시합니다 ("yes" 또는 "no" 는, 단말이 그 기능을 가지고 있을까 않은가를 나타냅니다). 늦은 단말로 셸 스크립트의 출력을 보다 과묵하게 하거나 명령의 출력을 스크린의 행수에 제한하거나 하는 것 같은 경우에는, 이하의 명령을 사용하면 좋을 것입니다.

        > set history=`echotc lines`
        > @ history--

    termcap 캐릭터 라인은 와일드 카드를 포함할 수가 있습니다만, 이것은 올바르고 echo 되지 않습니다. 셸 변수에 단말 기능 캐릭터 라인을 설정할 경우에는, 이하의 예의 같게 더블 쿼트를 이용해 주세요. 이 예에서는 일자를 스테이터스행에 표시하고 있습니다.

        > set tosl="`echotc ts 0`"
        > set frsl="`echotc fs`"
        > echo -n "$tosl";date; echo -n "$frsl"

    -s 를 지정하면(자), 존재하지 않는 기능을 지정했을 때, 에러를 일으키지 않고 공문자열을 돌려줍니다. -v 를 지정한다고 메세지가 장황하게 됩니다.

else
end
endif
endsw
    이하의 foreach, if, switch, while 문의 설명을 봐 주세요.

eval arg ...
    인수를 쉘에의 입력으로서 취급해, 나머지의 명령을 현재의 쉘의 문맥으로 실행합니다. 이것은 통상, 명령 치환이나 변수 치환의 결과로서 생성된 커멘드열을 실행하는 경우에 이용됩니다. 이것은 그러한 치환에 앞서 문법 해석을 해 버리기 (위해)때문입니다. eval 의 이용예는 tset(1)를 봐 주세요.

exec command
    지정한 명령을 현재의 쉘 대신에 실행합니다.

exit [expr]
    지정한 expr (식로 해설한 식)의 값으로 (expr 가 지정되어 있지 않으면 status 변수의 값으로) 쉘을 종료합니다.

fg [%job ...]
    지정한 작업 (혹은 인수가 없으면 현재의 작업) (을)를 foreground로 이동합니다. 정지상태태에 있는 것은 재개합니다. job 에는작업로 해설되고 있도록(듯이), 수치, 캐릭터 라인,`', `%', `+', `-'의 어떤 것인지를 지정할 수 있습니다. run-fg-editor 편집 명령도 봐 주세요.

filetest -op file ... (+)
    (파일 문의 연산자로 해설되고 있다) 파일 문의 연산자 op 를 각 file 에 적용해, 결과를 스페이스 단락의 리스트로 돌려줍니다.

foreach name (wordlist)
...
end wordlist 의 멤버를 name 에 차례차례에 대입해, 이것과 대응하는 end 에 끼워진 범위의 명령 순차 순서를 실행합니다. (foreach 와 end 는 1 행에 단독으로 나타나지 않으면 안됩니다. ) 편입 명령 continue 를 이용하면(자) 루프를 도중에 계속할 수가 있어 편입 명령 break 를 이용하면(자) 루프를 도중에 종료시킬 수가 있습니다. 이 명령이 단말로부터 읽히면(자), 한 번 루프를 `foreach? 'prompt (혹은 prompt2) 그리고 읽어들여, 전체를 다 읽고 나서 루프의 각 문을 실행합니다. 단말로부터의 입력시에 루프의 도중에 타입 미스를 했을 경우는 수정할 수 있습니다.

getspath (+)
    시스템의 실행 패스를 표시합니다. (TCF 마셔)

getxvers (+)
    실험적 버젼의 프레픽스를 표시합니다. (TCF 마셔)

glob wordlist
    echo 와 닮아 있습니다만,`\'에서의 이스케이프를 인식하지 않고, 또 출력에서의 단어 단락을 눌 캐릭터로 합니다. 단어 리스트를 파일명에 전개하기 위해서 프로그램으로부터 쉘을 이용하고 싶은 것 같은 경우에 편리합니다.

goto word
    word 는 파일명과 `label'형식의 캐릭터 라인을 출력하는 명령 치환입니다. 쉘은 입력을 가능한 한 거슬러 올라가, `label:'형식의 행 (공백이나 탭이 전치 되고 있어도 좋다)을 검색해, 그 행의 다음으로부터 실행을 계속합니다.

hashstat
    내부의 해시 테이블이, 지금까지의 명령 탐색에 어느 정도 효율적이었는지 (그리고 exec 류를 사용하지 않고 끝났는지)(을)를 나타내는 통계행을 표시합니다. path 의 각 성분 가운데, 해쉬 함수가 히트의 가능성이 있다고 한 것이나, `/'로 시작되지 않는 것에 대해서 exec 가 시도됩니다.

    vfork(2)가 없는 머신에서는, 단지 해시 물통의 사이즈를 표시합니다.

history [-hTr] [n]
history -S|-L|-M [filename] (+)
history -c (+)
    최초의 형식은 이벤트 리스트의 히스토리를 표시합니다. n 를 주면(자), 새로운 (분)편 최대 n 개의 이벤트를 표시 또는 보존합니다. -h 를 지정하면(자), 줄머리의 숫자 빼고 리스트를 표시합니다. -T 를 지정하면(자), 타임 스탬프도 코멘트의 모습으로 표시됩니다. (이것을 이용하면(자), `history -L'나 `source -h'에서의 로드에 적절한 파일을 작성할 수 있습니다. ) -r 를 지정하면(자), 표시의 차례가 디폴트의 낡은 순서는 아니고 새로운 순서가 됩니다.

    2 번째의 형식에서 -S 를 지정하면(자), 히스토리 리스트를 filename 에 보존합니다. 셸 변수 savehist 의 최초의 단어가 수치로 설정되어 있으면(자), 최대로 그 수치까지의 행수가 보존됩니다. savehist 의 2 번째의 단어가 `merge'였던 경우에는, 히스토리 리스트가 현존의 히스토리 파일에 merge 되어 타임 스탬프순서에 정렬 됩니다 (디폴트에서는 현존의 파일을 옮겨놓습니다). (+) merge는 X Window System 와 같이, 복수의 쉘을 동시에 이용하는 것 같은 경우전용의 것입니다. 현재는, 쉘이 예의범절 좋게 차례차례에 종료하는 것 같은 경우가 아니면 merge는 성공하지 않습니다.

    -L 를 지정하면(자), 쉘은 filename 를 히스토리 리스트에 추가합니다. filename 는 이전에 -S 옵션이나 savehist 기구로 보존된 히스토리 리스트 파일입니다. -M 는 -L 와 닮아 있습니다만, filename 의 내용은 히스토리 리스트에 merge 되어 타임 스탬프의 순서에 정렬 됩니다. 어느 경우에서도, filename 가 주어지지 않으면 histfile 를 이용해 histfile 도 설정되어 있지 않으면 ~/.history 를 이용합니다. `history -L'는 거의 `source -h'와 같습니다만, 전자에서는 파일명을 생략 할 수 있습니다.

    로그인 쉘은 `history -L'와 같은 일을 기동시에 가고 있어 또 savehist 가 설정되어 있으면 종료전에 `history -S'와 같은 일을 실시합니다. 통상 ~/.tcshrc 만이 ~/.history 의 전에 source 되므로, histfile 는 ~/.login 는 아니고 ~/.tcshrc 로 설정해야 합니다.

    histlit 가 설정되어 있으면(자), 최초의 형식과 2 번째의 형식은 히스토리 리스트를 문자 그대로의 (전개되지 않는다) 모습으로 표시, 보존합니다.

    마지막 형식은 히스토리 리스트를 클리어 합니다.

hup [command] (+)
    command 를 지정하면(자), hangup 시그널이 보내졌을 때에 종료하도록(듯이) 해 command 를 실행해, 쉘이 종료할 경우에 그 명령에 hangup 시그널을 보내도록(듯이) 합니다. 명령에 따라서는 hangup 에 대한 각각 독자적인 반응을 설정하는 일이 있어, 이것은 hup 보다 우선될지도 모릅니다. 인수를 설정하지 않으면 (셸 스크립트 내부만으로 용서됩니다), 그 쉘은 나머지의 스크립트의 도중에 hangup 시그널을 받으면(자) 종료하게 됩니다. 시그널 처리와 짜넣어 명령 nohup 의 부분도 봐 주세요.

if (expr) command
    expr (식로 해설한 식)의 평가 결과가 진이라면, command 가 실행됩니다. command 에 대한 변수 치환은, 실행에 앞서 if 명령의 나머지의 부분과 동시에 행해집니다. command 는 단순한 명령이 아니면 안되어, 앨리어스(alias), 파이프라인, (괄호로 괄 / 라고 없다) 명령 리스트는 지정할 수 없습니다. 다만 인수는 지정할 수 있습니다. expr 가 가짜로, command 가실행되지 않는경우에서도 입출력 리디렉션은 행해져 버립니다. 이것은 버그입니다.

if (expr) then
...
else if (expr2) then
...
else
...
endif
    지정한 expr 가 진정한 경우, 최초의 else 까지의 명령군이 실행됩니다. expr 가 가짜로 expr2 가 진정한 경우는, 2 번째의 else 까지의 명령군이 실행됩니다. 이하 같습니다. else-if 의 페어는 몇 개에서도 지정할 수 있습니다만, endif 는 하나 밖에 필요 없습니다. 또 else 부는 생략 가능합니다. (else 와 endif 의 각 단어는 입력행의 선두 밖에 둘 수 없습니다. if 는 입력행의 선두에 단독으로 두는지, else 의 뒤에 둘까 하지 않으면 안됩니다. )

inlib shared-library ... (+)
    각 shared-library 를 현재의 환경에 추가합니다. 공유 프로그램 라이브러리를 삭제하는 방법은 없습니다. (Domain/OS 마셔)

jobs [-l]
    액티브한 작업을 리스트 합니다. -l 를 지정하면(자), 통상의 정보에 가세해 프로세스 ID 도 리스트 합니다. TCF 시스템에서는, 각 작업이 실행되고 있는 사이트도 표시합니다.

kill [-s signal] %job|pid ...
kill -l
    1 번째 또는 2 번째의 형식은 signal 를 (굳이 지정되지 않으면 TERM (terminate) 시그널을) 지정한 작업이나 프로세스에 보냅니다. job 에는작업로 해설되고 있도록(듯이), 수치, 캐릭터 라인,`', `%', `+', `-'의 어떤 것인지를 지정할 수 있습니다. 시그널은 수치 또는 이름 (/usr/include/signal.h 에 있는 것으로부터 전의 `SIG'를 없앤 것)의 어느쪽이든으로 줍니다. 디폴트의 job 는 없습니다. 단지 `kill'라고 해도, 현재의 작업에는 시그널을 보내지 않습니다. TERM (terminate) 또는 HUP (hangup) 시그널을 보냈을 경우는, 그 작업이나 프로세스에는 CONT (continue) 시그널도 송신됩니다. 3 번째의 형식은 시그널의 이름을 리스트 합니다.

limit [-h] [resource [maximum-use]]
    현재의 프로세스와 현재의 프로세스가 생성하는 프로세스가 소비하는 자원이, 지정한 resource 에 대해서 프로세스 하나에 대해 maximum-use 를 넘지 않게 합니다. maximum-use 를 지정하지 않으면 current limit 가 표시됩니다. resource 를 지정하지 않으면 모든 제한치를 표시합니다. -h 플래그를 지정하면(자), current limit 대신에 hard limit 를 이용합니다. hard limit 는 current limit 의 한도를 줍니다. hard limit 는 수퍼 유저 밖에 늘릴 수가 없습니다만, current limit 는 일반 유저도 가능한 범위내에서 증감할 수 있습니다.

    현재 제어할 수 있는 자원 (OS 가 서포트하고 있는 경우)은 다음과 같습니다:

    cputime
        프로세스 하나에 대해 이용할 수 있는 cpu 초

    filesize
        작성할 수 있는 단일 파일의 최대 사이즈

    datasize
        프로그램 텍스트의 종단을 넘어 sbrk(2)로 늘릴 수 있다 데이터 area+스택 area의 최대 사이즈

    stacksize
        자동적으로 확장되는 스택 area의 최대 사이즈

    coredumpsize
        생성되는 코어덤프의 최대 사이즈

    memoryuse
        프로세스 하나에 한번에 할당할 수 있는 물리 메모리의 최대 사이즈

    descriptors or openfiles
        이 프로세스가 열리는 최대 파일수

    concurrency
        이 프로세스의 최대 thread수

    memorylocked
        프로세스가 mlock(2)를 사용해 락 가능한 메모리의 최대 사이즈

    maxproc
        이 유저 ID 가 동시에 사용 가능한 최대 프로세스수

    sbsize
        이 유저가 사용 가능한 최대 소켓 버퍼 사이즈

    maximum-use 는 부동 소수점치 또는 정수치에, 단위를 붙여 지정합니다. cputime 이외의 제한치는, `k'또는 `kilobytes' (1024 바이트)를 디폴트의 단위로 하고 있습니다. 단위로서 `m'또는 `megabytes'를 이용할 수도 있습니다. cputime 의 디폴트의 단위는 `seconds'입니다. 분을 나타내는 `m', 시간을 나타내는 `h', 분 + 초를 나타낸다 `mm:ss'의 형식등을 이용할 수도 있습니다.

    resource 도 단위도, 외와 구별이 되는 범위에서 후반부를 생략 가능합니다.

log (+)
    셸 변수 watch 를 표시해, 거기에 리스트업 되고 있다 유저가 로그인하고 있으면 로그인했을 때 각에 관련되지 않고 보고합니다. watchlog 에 대해서도 참조해 주세요.

login
    로그인 쉘을 종료해, /bin/login (역주: FreeBSD 에서는 /usr/bin/login 입니다)의 인스턴스로 옮겨놓습니다. 이것은 로그 오프 한다 방법의 하나이며, sh(1)와의 호환성을 유지하는 의미도 있습니다.

logout
    로그인 쉘을 종료합니다. ignoreeof 가 세트 되고 있는 경우에 특별히 도움이 되겠지요.

ls-F [-switch ...] [file ...] (+)
    `ls -F'와 같이 파일의 리스트를 표시합니다만, 쭉 고속으로. 각종의 특별한 파일 형식은 특수 캐릭터를 이용해 이하와 같이 나타납니다.

    /   디렉토리
    *   실행 가능
    #   블록 타입 디바이스
    %   캐릭터형 디바이스
    |   이름 첨부 파이프 (이름 첨부 파이프가 있는 시스템에서만)
    =   소켓 (소켓이 있는 시스템에서만)
    @   기호 연결 (기호 연결이 있는 시스템에서만)
    +   은폐 디렉토리 (AIX 마셔) 또는 문맥 의존 (HP/UX 마셔)
    :   네트워크 특수형 (HP/UX 마셔)

    셸 변수 listlinks 가 세트 되고 있는 경우는, 기호 연결에 관해서보다 자세하게 표시됩니다 (물론, 기호 연결을 가지는 시스템으로 뿐입니다).

    @   디렉토리가 아닌 것에의 기호 연결
    >   디렉토리에의 기호 연결
    &   어디에의 링크도 아닌 기호 연결

    listlinks 는 기호 연결이 지시하는 파일이 존재하는 파티션의 mount를 일으키기 (위해)때문에, ls-F 를 늦게 해 버립니다.

    만약 셸 변수 listfrags 가 `x', `a', `A'의 어느 쪽인가에 세트 되고 있는지, 그러한 편성 (예를 들어 `xA')에 세트 되고 있는 경우는, 이것이 `ls -xF'나 `ls -Fa', 혹은 조합해 `ls -FxA'와 같이 ls-F 의 플래그로서 사용됩니다. `ls -C'가 디폴트가 아닌 머신에서는 listflags 가 `x'를 포함한 경우에는 ls -xF'와 같이, 그렇지 않으면 ls -F 는 `ls -CF'와 같이 행동합니다. ls -F 는, 어떠한 스윗치가 주어졌을 경우에는 ls(1) 에 인수를 건네주므로, `alias ls ls-F'는 통상, 올바르게 동작합니다.

    편입의 ls-F 는 파일 타입이나 확장자(extension)에 의해 파일명을 분류 할 수가 있습니다. 셸 변수 color tcsh 와 환경 변수 LS_COLORS 를 참조해 주세요.

migrate [-site] pid|%jobid ... (+)
migrate -site (+)
    최초의 형식에서는 지정한 프로세스 또는 작업을, 지정한 장소 혹은 시스템 패스에 의해 결정되는 디폴트의 장소로 이동합니다. 2 번째의 형식은 `migrate -site $$'와 같은 의미를 가집니다. 이것은 현재의 프로세스를 지정한 장소로 이동합니다. 쉘은 그 tty 를 잃지 않게 되어 있으므로, 쉘 자신을 이동하는 것은 예기치 않은 동작의 원인이 됩니다. (TCF 마셔)

newgrp [-] group (+)
    `exec newgrp'와 같은 의미를 가집니다. newgrp(1)를 참조해 주세요. 쉘이 이것을 사용할 수가 있도록(듯이) 컴파일 되고 있는 경우에 마셔 사용 가능합니다. 셸 변수 version 를 참조해 주세요.

nice [+number] [command]
    쉘의 스케줄링 우선도를 number 로 설정하는지, number 가 지정되어 있지 않은 경우는 4 로 설정합니다. command (을)를 붙이면(자), 명령 command 를 적절한 우선도로 실행합니다. number 가 큰 만큼, 그 프로세스가 획득한다 CPU 시간은 짧아집니다. 슈퍼 유저는 `nice -number ...'와 하는 것으로써 부의 값을 설정할 수가 있습니다. 명령은 항상 서브 쉘로부터 실행되어 명령에는 단순한 if 문의 경우와 같은 제한이 부과됩니다.

nohup [command]
    command 를 붙이면(자), 명령 command 를 행업 시그널을 무시해 실행하도록(듯이) 합니다. 이러한 명령이 nohup 를 오버라이드(override) 해 행업 시그널에 대해서 자기 자신으로 응답하도록(듯이) 하는 것이 있는 것에 주의해 주세요. 인수가 없는 경우 (셸 스크립트중에서 마셔 용서됩니다), 스크립트의 그 이후의 부분에서 쉘은 행업 시그널을 무시하게 됩니다. 시그널 처리와 짜넣어 명령 hup 에 대해서도 참조해 주세요.

notify [%job ...]
    유저에게 비동기적으로 지정한 작업 (%job 가 생략 되었을 경우는 경향 작업) 상태에 어떠한 변화가 있었을 경우에 비동기적으로, 통지하도록(듯이) 합니다. 이 경우는 통상과 달리, 다음의 prompt가 출력될 때까지 기다리지 않습니다. job 는 Jobs 에 기술되고 있도록(듯이) 번호, 캐릭터 라인,`', `%', `+', `-'의 어떤 것에서도 용서됩니다. 셸 변수 notify 도 참조해 주세요.

onintr [-|label]
    세치기시의 쉘의 동작을 제어합니다. 인수가 없으면, 쉘의 디폴트의 세치기시의 동작으로 설정됩니다. 이 경우는, 셸 스크립트는 세치기로 중단되어 명령 실행시는 커멘드의 실행을 중단해 커멘드 입력 기다리러 돌아옵니다. `-'가 지정되었을 경우는 모든 세치기가 무시됩니다. label 를 지정하면(자), 세치기가 발생하거나 child process가 세치기로 중단하거나 했을 경우에 `goto label'를 실행합니다.

    onintr 는, 시스템의 스타트 업 파일 (FILES 를 참조)(으)로 세치기가 금지되고 있는 경우에는 무시됩니다.

popd [-p] [-l] [-n|-v] [+n]
    인수가 없으면, 디렉토리 스택으로부터 하나치를 꺼내, 거기로 이동합니다. `+n'와 같이 수치를 주면(자), 디렉토리 스택의 n'번째의 엔트리를 파기합니다.

    또, 모든 형식의 popd 는 dirs 와 같이 디렉토리 스택의 마지막 엔트리를 표시합니다. 셸 변수 pushdsilent 는 이것을 억제해, -p 플래그에 의해 pushdsilent 의 동작을 오버라이드(override) 할 수가 있습니다. -l, -n, -v 플래그는 popd 에서도, dirs (와)과 같은 의미를 가집니다.

printenv [name] (+)
    모든 환경 변수의 이름과 값을 표시하는지, name 를 주었을 경우에는 환경 변수 name 의 값을 표시합니다.

pushd [-p] [-l] [-n|-v] [name|+n]
    인수가 없으면, 디렉토리 스택의 맨 위에 있는 두 엔트리를 바꿔 넣습니다. 만약 pushdtohome 가 세트 되고 있으면, 인수 없음의 pushd 는 cd 와 같이 `pushd ~' (을)를 실시합니다. (+) name 를 붙이면(자), 현재의 작업 디렉토리를 디렉토리 스택에 쌓아 name 로 이동합니다. 만약 name 가 `-'이면, 하나전의 작업 디렉토리로서 해석됩니다 (파일명 치환를 참조). (+) dunique 가 세트 되고 있으면, pushd 는, 스택에 name 를 쌓기 전에 모든 그것과 같은 것을 가리키는 엔트리를 스택으로부터 제거합니다. (+) `+n'로서 번호를 매기면(자), 디렉토리 스택의 n 번째의 엔트리가 탑에 오도록(듯이) 스택을 회전합니다. dextract 가 세트 되고 있는 경우, `pushd +n'를 실시하면 n 번째의 디렉토리가 전개되어, 스택의 탑에 이동됩니다. (+)

    또, 모든 형식의 pushd 는 dirs 와 같이 디렉토리 스택의 최종적인 내용을 표시합니다. 셸 변수 pushdsilent 를 세트 하는 것으로 이것을 그만둘 수가 있어 또 한층 더 이것은 -p 플래그에 의해 오버라이드(override) 하는 것이 가능합니다. pushd 에 대한 -l, -n, -v 플래그의 의미는 dirs 의 것과 같습니다. (+)

rehash
    path 변수가 가리키는 디렉토리의 내용을 보관 유지한다 내부 해시 테이블을 재구성합니다. 이것은 로그인하고 있는 동안에 새로운 명령이 path 의 가리키는 디렉토리에 추가되었을 경우에 필요합니다. 이것은 당신이 자신의 개인적인 디렉토리에 명령을 추가했을 경우인가, 시스템 관리 책임자가 시스템 디렉토리의 내용을 변경했다 경우에게만 행해져야 합니다. 이 명령은 또, 치르다 기호를 이용한 홈 디렉토리 기술의 캐쉬도 플래시 합니다.

repeat count command
    지정된 명령 command 를 count 회 반복 실행합니다. command 로 지정하는 것은 일행 if 문으로 지정하는 command 와 같은 제한을 받습니다. 입출력 리디렉션은 count 가 0 이어도, 반드시 1회만 처리됩니다.

rootnode //nodename (+)
    루트 노드를 //nodename 로 변경합니다. 결과적으로 `/'는 `//nodename'로서 해석됩니다. (Domain/OS 마셔)

sched (+)
sched [+]hh:mm command (+)
sched -n (+)
    최초의 형식은, 예정되어 있는 이벤트의 리스트를 표시합니다. 셸 변수 sched 는 예정되어 있는 이벤트의 리스트를 표시하는 형식을 설정하기 위해서 세트 됩니다. 3 번째의 형식은 command 를 예정되어 있는 이벤트의 리스트에 추가합니다. 예를 들어,

        > sched 11:00 echo It\'s eleven o\'clock.

    (은)는, 오전 11 시에 `It's eleven o'clock. '를 표시시킵니다. 시간은 12 시간제의 AM/PM 를 지정하는 서식에서도 상관하지 않습니다.

        > sched 5pm set prompt='[%h] It\'s after 5; go home: >'

    또, 현재 시각부터의 상대적인 시간이라도 상관하지 않습니다.

        > sched +2:15 /usr/lib/uucp/uucico -r1 -sother

    상대적인 지정에서는 AM/PM 를 사용해야 하는 것이 아닙니다. 3 번째의 서식에서는 n 차례의 이벤트를 리스트로부터 삭제합니다.

        > sched
             1 Wed Apr 4 15:42 /usr/lib/uucp/uucico -r1 -sother
             2 Wed Apr 4 17:00 set prompt=[%h] It's after 5; go home: >
        > sched -2
        > sched
             1 Wed Apr 4 15:42 /usr/lib/uucp/uucico -r1 -sother

    예정 이벤트의 리스트에 있는 명령은, 커멘드가 리스트에 넣을 수 있고 나서 최초의 prompt가 나온 후에 실행됩니다. 실행의 정확한 시간을 지나 버리는 것은 있습니다만, 다음의 prompt에서는 늦은 명령이 실행됩니다. 쉘이 유저의 명령 입력을 기다리고 있는 동안에 실행 예정 시간이 왔다 명령은 즉시 실행됩니다. 그러나, 이미 실행되고 있는 커멘드의 실행에 끼어들 수 없고, 예정되어 있던 명령의 실행에 대해서도 같습니다.

    이 구조는 몇개의 Unix 시스템에 실장되고 있는 at(1)에 닮습니다만 같지는 않습니다. 지정했을 때 각대로에 명령을 실행할 수 없는 것이 있는 것은 매우 큰 단점입니다. 그러나 이 구조의 장점은, sched 는 쉘로부터 직접 실행할 수 있어 셸 변수나 그 외의 자원에의 액세스가 할 수 있다고 하는 것입니다. 이것은 시각에 의해 유저의 작업 환경을 변화시키는 것을 가능하게 합니다.

set
set name ...
set name=word ...
set [-r] [-f|-l] name=(wordlist) ... (+)
set name[index]=word ...
set -r (+)
set -r name ... (+)
set -r name=word ... (+)
    1 번째의 형식에서는 모든 셸 변수의 값을 표시합니다. 복수의 단어로부터 되는 값을 가지는 변수는 괄호로 둘러싸인 값의 리스트로서 표시합니다. 2 번째의 형식에서는 name 에 공문자열을 세트 합니다. 3 번째의 형식에서는 name 에 단일의 단어 word 를 세트 합니다. 4 번째의 형식에서는 name 에 wordlist 로 가리킨 단어의 리스트를 세트 합니다. 모든 경우에 대해 명령 치환이나 파일명 치환이 값에 대해서 행해집니다. -r 가 지정되었을 경우에는, 값은 읽어내 전용으로 세트 됩니다. -f 또는 -l 가 지정되었을 경우에는, 단어 리스트 중(안)에서의 차례를 유지하면서 중복 한 단어가 제거됩니다. -f 는 최초로 나온 것을 리스트에 남겨, -l 는 마지막에 나온 것을 리스트에 남깁니다. 5 번째의 서식에서는 변수 name 의 index 번째의 요소에 word 를 세트 합니다. 이 경우 이 요소는 이미 존재하고 있지 않으면 안됩니다. 6 번째의 서식은 읽어내 전용에 세트 되고 있는 셸 변수의 이름의 일람을 표시합니다. 7 번째의 서식은 name 를, 값의 유무에 관련되지 않고 독해 전용에 세트 합니다. 8 번째의 서식은 3 번째의 서식과 같습니다만, 동시에 name 를 독해 전용에 세트 합니다.

    복수의 변수를 세트 하거나 독해 전용에 세트 하기 위해서 하나의 set 명령에의 인수를 반복할 수가 있습니다. 그러나, 변수에의 대입 처리를 개시하기 전에 변수 전개 처리가 한 번에 행해지는 것에 주의해 주세요. 또,`='는 name 와 word의 양쪽 모두와 접하고 있는지, 공백에서 단락지어지고 있을까의 어느 쪽인지여, 다른 한쪽만과 접해선 안 되는 것에 주의해 주세요. 편입 명령 unset 에 대해서도 참조해 주세요.

setenv [name [value]]
    인수가 없으면, 모든 환경 변수의 이름과 값을 표시합니다. name 가 주어졌을 경우는, 환경 변수 name 의 값을 value 에 세트 하는지, value 가 없으면 공문자열에 세트 합니다.

setpath path (+)
    setpath(1)와 같습니다. (Mach 마셔)

setspath LOCAL|site|cpu ... (+)
    시스템 실행 패스를 설정합니다. (TCF 마셔)

settc cap value (+)
    쉘에 단말 케이파비리티 cap (termcap(5)로 정의된 것)는 값 value 를 가지는 것을 가르칩니다. 타당성의 체크는 행해지지 않습니다. Concept 단말의 유저는, 제일 오른쪽의 자리수로 적절한 반환을 실시하기 위해서(때문에) `settc xn no'를 실시할 필요가 있을지도 모릅니다.

setty [-d|-q|-x] [-a] [[+|-]mode] (+)
    쉘이 변경해서는 안 되는 tty 모드 (단말 관리를 참조)(을)를 제어합니다. -d, -q, -x 는 setty 에, 각각 `edit', `quote', `execute'때의 tty 모드를 세트 합니다. -d, -q, -x 가 지정되지 않는 경우, `execute'가 사용됩니다.

    다른 인수가 없으면, setty 는 온 (`+mode') 또는 오프 (`-mode')에 고정되고 있는 모드를 일람표 가리킵니다. 사용 가능한 모드는 시스템 마다 다르기 (위해)때문에, 표시도 다릅니다. -a 를 붙이면(자), 고정되고 있는지 어떤지에 관계없이 모든 tty 모드를 일람표 가리킵니다. +mode, -mode, mode 는, 각각 모드 mode 를 온에 고정, 오프에 고정, 비고정으로 합니다. 예를 들어, `setty +echok echoe'는 `echok'를 온에 고정해, 쉘이 명령을 실행할 때에 `echoe'모드를 온으로 하거나 오프로 하거나 할 수 있도록(듯이) 합니다.

setxvers [string] (+)
    string 에 시험적인 바젼프리픽스를 세트 해, string 가 생략 되었을 경우에는 그것을 삭제합니다. (TCF 마셔)

shift [variable]
    인수가 없으면, argv[1] 을 파기해 멤버를 왼쪽으로 늦춥니다. argv 가 세트되어 있지 않기도 하고, 값이 1 개도 없었던 경우에는 에러가 됩니다. 변수명 variable 를 지정하면(자), 변수 variable 에 대해서 같은 동작을 실시합니다.

source [-h] name [args ...]
    name 로부터 명령을 읽어내 실행합니다. 명령은 역사 리스트에는 남겨지지 않습니다. 만약 인수 args 가 주어지면 그것은 argv 에 넣을 수 있습니다. (+) source 명령은 상자로 할 수가 있습니다. 만약 상자의 레벨이 너무나 깊어너무 깊어 지면(자), 쉘은 파일 기술자의 부족을 일으키겠지요. source 에서의 에러는 모든 상자가 되어 있는 source 의 실행을 정지합니다. -h 를 붙이면(자), 명령을 실행하는 대신에 `history -L'의 같게 역사 리스트에 입력됩니다.

stop %job|pid ...
    지정한 백그라운드에서 실행되고 있는 작업 또는 프로세스를 정지합니다. job 는 번호인가, 캐릭터 라인인가, 혹은작업에 나타나고 있는 `', `%', `+', `-'의 어느쪽이든을 지정합니다. 디폴트의 job 는 존재하지 않기 때문에, 다만 `stop'를 실행하는 것 만으로는 경향 작업을 정지하는 것에는 되지 않습니다.

suspend
    ^Z 로 보내지는 것 같은 stop 시그널이 보내졌는지와 같이, 그 자리에서 쉘을 정지시킵니다. 이것은 많은 경우 su(1)로 기동한 쉘을 정지하는데 이용됩니다.

switch (string)
case str1:
    ...
    breaksw
...
default:
    ...
    breaksw
endsw
    지정된 캐릭터 라인 string 에 대해서, 각 case label를 연속적으로 매치 시킵니다. string 에는 거기에 앞서 명령 치환과 파일명 치환을 합니다. case label에는 변수 치환을 해 파일뼹타캐라크타의 `*', `? ', `[...]'를 이용할 수가 있습니다. `default'label가 나오기까지 어느 case label라고도 매치 하지 않았던 경우, default label의 나중에 실행이 개시됩니다. 각 case label와 default label는 행이 최초로 없으면 안됩니다. breaksw 명령은 실행을 중단해 endsw 의 나중에 재개시킵니다. breaksw 를 사용하지 않는 경우는 C 언어와 같게 case label나 default label를 통과해 실행이 계속됩니다. 만약 매치 하는 label도 default label도 존재하지 않는 경우는, 실행은 endsw 의 나중에 재개됩니다.

telltc (+)
    단말 케이파비리티의 모든 값을 일람표 가리킵니다 (termcap(5)를 참조).

time [command]
    명령 command (앨리어스(alias)나 파이프라인, 커멘드 리스트나 괄호로 묶은 명령 리스트가 아닌 단순한 것이 아니면 안됩니다) (을)를 실행해, 변수 time 의 항으로 설명하는 형식에서, 실행 소용 시간에 관한 요약을 표시합니다. 필요하면, 명령 종료시에 시간을 표시하기 위한 추가의 쉘이 생성됩니다. command 를 지정하지 않았던 경우는, 현재의 쉘과 그 child process가 사용한 시간에 관한 요약이 표시됩니다.

umask [value]
    8 진수로 지정된 파일 작성 마스크를 value 로 설정합니다. 일반적인 마스크의 값으로서는, 그룹에 모든 권한을 줘 그 외에는 독해와 실행만을 허가하는 002 나, 그룹과 그 외에 독해와 실행을 허가하는 022 가 있습니다. value 를 생략 하면(자), 현재의 파일 작성 마스크를 표시합니다.

unalias pattern
    패턴 pattern 에 매치 하는 모든 앨리어스(alias)를 삭제합니다. 따라서 `unalias *'로 하는 것으로 모든 앨리어스(alias)를 삭제할 수 있습니다. unalias 하는 것이 없었던 경우도 에러로는 되지 않습니다.

uncomplete pattern (+)
    패턴 pattern 에 매치 하는 모든 보완 대상을 삭제합니다. 따라서 `uncomplete *'로 하는 것으로 모든 보완 대상을 삭제합니다. uncomplete 하는 것이 없었던 경우도 에러로는 되지 않습니다.

unhash
    실행 프로그램의 검색을 고속화하는 내부 해시 테이블의 사용을 금지합니다.

universe universe (+)
    universe 를 universe 로 설정합니다. (Masscomp/RTU 마셔)

unlimit [-h] [resource]
    리소스 resource 의 제한을 해제합니다. resource 이 지정되지 않는 경우는, 모든 리소스에 관한 제한이 해제됩니다. -h 가 지정되면(자), 대응하는 하드 제한이 해제됩니다. 이것은 슈퍼 유저만이 실시할 수가 있습니다.

unset pattern
    패턴 pattern 에 매치 하는 모든 변수를, 독해 전용의 경우도 포함해 삭제합니다. 따라서 `unset *'로 하는 것에 의해 독해 전용의 것도 포함해 모든 변수가 삭제됩니다만, 이것은 좋은 일이 아닙니다. unset 하는 것이 없었던 경우도 에러로는 되지 않습니다.

unsetenv pattern
    패턴 pattern 에 매치 하는 모든 환경 변수를 삭제합니다. 따라서 `unsetenv *'로 하는 것에 의해 모든 환경 변수를 삭제할 수가 있습니다만, 이것은 좋은 일이 아닙니다. unsetenv 하는 환경 변수가 없었던 경우도 에러로는 되지 않습니다.

ver [systype [command]] (+)
    인수가 주어지지 않았던 경우는 SYSTYPE 를 표시합니다. systype 를 지정했을 경우는, SYSTYPE 를 systype 로 설정합니다. systype 와 명령 command 를 지정했을 경우는, systype 로 command 를 실행합니다. systype 는 `bsd4. 3'인가 `sys5. 3'의 머지않아인가입니다. (Domain/OS 마셔)

wait
    모든 백그라운드 작업의 종료를 기다립니다. 대화적으로 쉘이 실행되고 있는 경우, 세치기에 의해 wait 를 정지하는 것이 할 수 있습니다. 이 때 쉘은 아직 종료하고 있지 않는 모든 작업의 이름과 그 번호를 표시합니다.

warp universe (+)
    universe 를 universe 로 설정합니다. (Convex/OS 마셔)

watchlog (+)
    편입 명령 log 의 별명입니다 (그 쪽도 참조). 컴파일시에 사용할 수 있도록(듯이) 설정되어 있는 경우에게만 사용 가능합니다. 셸 변수 version 를 참조해 주세요.

where command (+)
    명령 command 에 대해, 앨리어스(alias)나 짜넣어 커멘드, path 에 있는 실행 가능 파일을 포함해 쉘이 알고 있다 모든 실체를 일람표 가리킵니다.

which command (+)
    명령 command 가, path 의 검색등의 처리의 나중에, 실제로 실행되는 명령을 표시합니다. 편입의 것은 which(1)와 거의 같습니다만, tcsh 의 앨리어스(alias)나 짜넣어 명령 붙어도 올바르게 보고해, 또 10 에서 100 배 고속으로. 편집 명령 which-command 에 대해서도 참조해 주세요.

while (expr)
...
end 지정된 식 expr (식로 진술되고 있는 식)의 평가 결과가 0 (이)가 아닌 한, while 와 거기에 대응하는 end 의 사이의 명령 (을)를 반복 실행합니다. while 와 end 는 그 행에 단독으로 쓰여지지 않으면 안됩니다. break 와 continue 는, 루프를 도중에 중단하거나 재개한다 경우에 사용합니다. 입력이 단말의 경우는, foreach 의 경우와 같이, 루프의 내용을 대충 입력할 때까지 유저에게 prompt가 출력됩니다.

  특별한 앨리어스(alias) (+)
이러한 앨리어스(alias)는, 설정되어 있는 경우 각각 지시받았을 때 각에 자동적으로 실행됩니다. 이러한 앨리어스(alias)는, 초기 상태에서는 모두 미정도리입니다.

beepcmd
    쉘이 단말 벨을 울리고 싶을 때에 실행됩니다.

cwdcmd
    작업 디렉토리가 변경될 때마다 실행됩니다. 예를 들어, 유저가 X Window System 상에서 작업하고 있어, xterm(1) 및 twm(1)와 같이, 타이틀 바를 서포트하고 있다 리페아렌트윈드우마네이쟈를 사용하고 있어,

        > alias cwdcmd 'echo -n "^[]2;${HOST}:$cwd ^G"'

    (을)를 실행하면(자), 쉘은, 동작중의 xterm(1)의 타이틀을 호스트명, 코론, 그리고 경향 작업 디렉토리의 풀 패스에 변경합니다. 이것을 좀 더 재미있게 실행하려면 , 다음과 같이 합니다.

        > alias cwdcmd 'echo -n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"'

    이렇게 하면(자), 호스트명 및 작업 디렉토리는 타이틀 바에 변경됩니다만, 아이콘 매니저의 메뉴에는 호스트명 밖에 표시되지 않게 됩니다.

    cwdcmd 중에 cd, pushd 혹은 popd 를 두면(자), 엔들레스 루프를 일으킬 가능성이 있는 것에 주의해 주세요. 그런 것을 하는 사람은, 그렇게 해서 끝낸 대상은 받는 것이라고 하는 것이 저자의 견해입니다.

jobcmd
    각 명령이 실행되기 전 또는 커멘드가 상태를 바꾸기 전에 실행합니다. postcmd 와 닮아 있습니다만, 편입 명령에서는 표시하지 않습니다.

        > alias jobcmd 'echo -n "^[]2\;\! #^G"'

    (으)로서 vi foo.c 를 실행하면(자), 명령 캐릭터 라인이 xterm 타이틀 바에 표시됩니다.

helpcommand
    run-help 편집 명령이 실행합니다. 헬프가 찾는 커멘드명은, 단일의 인수로서 건네받습니다. 예를 들어,

        > alias helpcommand '\! :1 --help'

    (으)로 하면(자), GNU 의 헬프 호출 방법을 사용한, 명령 그 자체의 헬프 표시가 실행됩니다. 현재로서는, 많은 명령을 쓴 테이블을 사용하는 것 외에는, 여러가지 호출해 방법 (예를 들어, Unix 의 `-h'옵션)을 구분하여 사용하는 간단한 방법은 없습니다.

periodic
    tperiod 분 간격으로 실행됩니다. 이 앨리어스(alias)는, 예를 들어 새로운 메일이 도착했다고 하는 것 같은, 일상적이어도 그만큼 빈번하게는 일어나지 않는 변경점을 체크하는데 편리한 수단을 제공합니다. 예를 들어,

        > set tperiod = 30
        > alias periodic checknews

    (으)로 하면(자), 30 분 간격으로 checknews(1) 프로그램이 기동합니다. periodic 가 설정되어 있지만, tperiod 가 설정되어 있지 않은가 혹은 0 으로 설정되어 있는 경우, periodic 는 precmd (와)과 같이 행동합니다.

precmd
    prompt가 표시되기 직전에 실행됩니다. 예를 들어,

        > alias precmd date

    (으)로 하면(자), 각 명령용으로 쉘 prompt가 표시되기 직전에 date(1)가 기동합니다. precmd 에 무엇을 설정할 수 있으려면 제한은 없습니다만, 신중하게 선택해 주세요.

postcmd
    각 명령이 실행되기 전에 실행됩니다.

        > alias postcmd 'echo -n "^[]2\;\! #^G"'

    (으)로 하면(자), vi foo.c 를 실행하면(자) xterm 의 타이틀 바에 이 명령 캐릭터 라인이 쓰여집니다.

shell
    스크립트중에서 인터프리터를 지정하고 있지 않는 실행 가능 스크립트용의 인터프리터를 지정합니다. 최초의 단어는, 사용하고 싶은 인터프리터에의 풀 패스가 아니면 안됩니다 (예를 들어, `/bin/csh'나 `/usr/local/bin/tcsh').

  특별한 셸 변수
이 섹션으로 말하는 변수는, 쉘에 있어서는 특별한 의미가 있는 것입니다.

쉘은, 기동시에 다음의 변수를 설정합니다. addsuffix, argv, autologout, command, echo_style, edit, gid, group, home, loginsh, oid, path, prompt, prompt2, prompt3, shell, shlvl, tcsh, term, tty, uid, user 그리고 version 입니다. 이러한 변수는, 기동 후는 유저가 변경하지 않는 한 변경되지 않습니다. 쉘은, 필요가 있으면, cwd, dirstack, owd 및 status 를 갱신해, 로그아웃시에 logout 를 설정합니다.

쉘은, 셸 변수 afsuser, group, home, path, shlvl, term 및 user 와 동명의 환경 변수와의 동기를 취합니다. 즉, 환경 변수가 변경되면(자), 쉘은 대응하는 셸 변수를 합치하도록(듯이) 변경합니다 (셸 변수가 읽어들여 전용이 아닌 경우입니다). 또, 그 역도 실시합니다. 여기서, cwd 와 PWD 는 같은 의미를 가집니다만, 이 방법에서는 동기는 행해지지 않는다고 하는 것에 주의해 주세요. 또, 쉘은, 자동적으로 path 와 PATH 가 다른 형식을 상호 변환한다고 하게도 주의해 주세요.

addsuffix (+)
    이것이 설정되어 있는 경우, 파일명이 보완 시에 완전하게 일치할 경우에, 일치한 것이 디렉토리의 경우에는 말미에 `/'를 덧붙여 통상의 파일의 경우에는 말미에 스페이스를 가세합니다. 디폴트로 설정되어 있습니다.

afsuser (+)
    이것이 설정되어 있는 경우, autologout 의 autolock 기능은, 로컬의 유저명 대신에 이 값을 kerberos 인증용으로 사용합니다.

ampm (+)
    이것이 설정되어 있는 경우, 시각이 12 시간 단위의 AM/PM 포맷으로 모두 표시됩니다.

argv
    쉘에의 인수입니다. 위치 파라미터는 argv 로부터 놓칩니다. 즉,`$1'는 `$argv[1]'로 옮겨진다고 하는 상태입니다. 디폴트로 설정되어 있습니다만, 통상 대화형 쉘에서는 하늘입니다.

autocorrect (+)
    이것이 설정되어 있는 경우는, 보완을 시도하기 전에 자동적으로 spell-word 편집 명령이 실행됩니다.

autoexpand (+)
    이것이 설정되어 있는 경우는, 보완을 시도하기 전에 자동적으로 expand-history 편집 명령이 실행됩니다.

autolist (+)
    이것이 설정되어 있는 경우는, 애매한 보완을 실시한 후, 가능성이 있는 것을 리스트 합니다. `ambiguous'가 설정되어 있는 경우, 가능성이 있는 것을 리스트 하는 것은, 보완에 의해 어떤 캐릭터도 추가되지 않았던 경우에 한정됩니다.

autologout (+)
    1 번째의 단어는, 시간을 분 단위로 나타내고 있어 이 시간 이상의 사이, 어떤 처리도 하고 있지 않으면 자동적으로 로그아웃 됩니다. 2 번째의 단어는 옵션이며, 여기서 지정된 시간 이상의 사이, 어떤 처리도 하고 있지 않으면 자동 락이 걸립니다. 쉘이 자동적으로 로그아웃 하려면 , 쉘은 `auto-logout'와 출력해, logout 변수를 `automatic'에 설정해, 그리고 종료합니다. 쉘이 자동적으로 락 된 유저는, 작업을 계속하고 싶으면 자신의 패스워드를 입력하는 것이 필요하게 됩니다. 5 회 입력에 실패하면(자), 자동적으로 로그아웃 합니다. 로그인 쉘 및 슈퍼 유저의 쉘에서는, 디폴트로 `60'(60 분후 자동적으로 로그아웃 해, 락은 걸치지 않는다)에 설정되어 있습니다. 그러나, 쉘이 윈도우 시스템의 아래에서 움직이고 있다고 인식했을 경우 (즉, DISPLAY 환경 변수가 설정되어 있다)(이)나, tty 가 유사 tty(pty)인 경우, 혹은, 쉘이 그처럼은 컴파일되어 있지 않은 경우 (version 셸 변수를 참조) 에는 설정되지 않습니다. afsuser 및 logout 셸 변수도 참조해 주세요.

backslash_quote (+)
    이것이 설정되어 있는 경우, backslash (`\')는 항상 `\', `'', 및 `"'로 쿼트 됩니다. 이것에 의해, 복잡한 쿼트를 하는 수고가 완화됩니다만, csh(1) 스크립트중에서 문법 에러를 일으킨다 가능성이 나옵니다.

catalog
    메세지 카탈로그의 파일명입니다. 이것이 설정되어 있는 경우, 디폴트의 `tcsh'대신에 `tcsh. ${catalog}'를, 메세지 카탈로그로서 tcsh 는 사용합니다.

cdpath
    커런트 디렉토리중에 서브 디렉토리가 발견되지 않았던 경우에, cd 가 탐색해야 할 디렉토리의 리스트입니다.

color
    이것이 설정되어 있는 경우, 편입 명령 ls-F 용의 칼라 표시를 유효하게 해, --color=auto 를 ls 에 건네줍니다. 혹은, 다만 1 개의 명령에 대해 칼라 표시를 유효하게 하기 위한(해), ls-F 또는 ls 에만 설정할 수가 있습니다. 무엇에 대해서도 설정하지 않는 경우는, (ls-F ls) 에 대해서 설정한 것과 등가입니다.

colorcat
    이것이 설정되어 있는 경우는, NLS 메세지 파일에 대해서 칼라용 escape sequence를 유효하게 합니다. 이것에 의해, 색이 붙은 NLS 메세지가 표시됩니다.

command (+)
    이것이 설정되어 있는 경우, 쉘에게 건네진 명령은, -c 플래그 (그 쪽도 참조)를 붙인 것에 됩니다.

complete (+)
    이것이 `enhance'로 설정되어 있는 경우, 보완은, 1) 대문자 소문자를 무시해, 2) 피리어드, 하이픈, 및 언더스코어 (`. ', `-', `_')를 단어의 단락 캐릭터와 간주, 하이픈과 언더스코어를 등가인 물건으로 간주합니다.

continue (+)
    명령 리스트에 대해서 이것이 설정되어 있는 경우, 쉘은 리스트 되고 있는 명령을 계속 실행해, 새롭게 커멘드를 개시하지 않습니다.

continue_args (+)
    continue 와 같습니다만, 쉘은 다음의 명령을 실행합니다:

        echo `pwd` $argv > ~/. <cmd>_pause; %<cmd>

correct (+)
    `cmd'로 설정되어 있는 경우, 명령은 자동적으로 스펠 정정됩니다. `complete'로 설정되어 있는 경우, 명령은 자동적으로 보완됩니다. `all'로 설정되어 있는 경우, 명령행 전체가 정정됩니다.

cwd 커런트 디렉토리의 풀 패스명입니다. 셸 변수 dirstack 및 owd 도 참조해 주세요.

dextract (+)
    이것이 설정되어 있는 경우, `pushd +n'는 디렉토리를 선두에 가지고 가는 것이 아니라, 디렉토리 스택으로부터 n 번째의 디렉토리를 꺼냅니다.

dirsfile (+)
    `dirs -S' 및 `dirs -L'가 역사 파일을 찾는 디폴트의 장소입니다. 설정하고 있지 않는 경우는, ~/.cshdirs 가 사용됩니다. 통상, ~/.tcshrc 가 ~/.cshdirs 보다 먼저 소스로서 사용되기 (위해)때문에, dirsfile 는, ~/.login 는 아니고 ~/.tcshrc 중에서 설정해야 합니다.

dirstack (+)
    디렉토리 스택상의 전디렉토리의 배열입니다. `$dirstack[1]'는 커런트 디렉토리이며, `$dirstack[2]'는 스택상의 최초의 디렉토리라고 하는 상태입니다. 커런트 디렉토리는 `$dirstack[1]'입니다만, 디렉토리 스택의 치환에서는 `=0'인 등이라고 하는 것에 주의해 주세요. dirstack 를 설정하는 것으로 스택을 임의로 변경할 수가 있습니다만, 최초의 요소 (경향 디렉토리)는 항상 올바른 것이 됩니다. 셸 변수 cwd 및 owd 도 참조해 주세요.

dspmbyte (+)
    `euc'로 설정되어 있는 경우, EUC-kanji(Japanese) 코드로 표시 및 편집을 할 수 있게 됩니다. `sjis'로 설정되어 있는 경우, Shift-JIS(Japanese) 코드로 표시 및 편집을 할 수 있게 됩니다. `big5'로 설정되어 있는 경우, Big5(Chinese) 코드로 표시 및 편집을 할 수 있게 됩니다. `utf8'로 설정되어 있는 경우, Utf8(Unicode) 코드로 표시 및 편집을 할 수 있게 됩니다. 다음과 같은 포맷으로 설정되어 있는 경우, 독자적인 멀티 바이트 코드 포맷으로 표시 및 편집을 할 수 있게 됩니다:

        > set dspmbyte = 0000....(256 bytes)....0000

    테이블에는 정확히 256 바이트 필요합니다. 256 캐릭터 각각은, ASCII 코드 0x00, 0x01, ... 0xff 에 (왼쪽에서 오른쪽을 향해) 대응하고 있습니다. 각 캐릭터는, 수치 0, 1, 2, 3 으로 설정됩니다. 각 숫자에는 다음과 같은 의미가 있습니다:
      0 ... 멀티 바이트 캐릭터에 대해서는 사용되지 않습니다.
      1 ... 멀티 바이트 캐릭터의 최초의 1 바이트에 대해서 사용됩니다.
      2 ... 멀티 바이트 캐릭터의 2 바이트째에 대해서 사용됩니다.
      3 ... 멀티 바이트 캐릭터의 1, 2 바이트 양쪽 모두에 대해서 사용됩니다.

      사용예:
    `001322'로 설정했을 경우, 최초의 캐릭터 (즉, ASCII 코드로 0x00) (와)과 2 번째의 캐릭터 (즉, ASCII 코드로 0x01)는 `0'로 설정됩니다. 즉, 멀티 바이트 캐릭터에 대해서는 이러한 캐릭터는 사용하지 않습니다. 3 번째의 캐릭터 (0x02)는 `2'로 설정됩니다. 이것은, 멀티 바이트 캐릭터의 최초의 1 바이트에 이 캐릭터가 사용되는 것을 나타내고 있습니다. 4 번째의 캐릭터 (0x03)는 `3'로 설정됩니다. 이 캐릭터는, 멀티 바이트 캐릭터의 1 바이트째에도 2 바이트째에도 사용됩니다. 5 번째 및 6 번째의 캐릭터 (0x04, 0x05)는 `2'로 설정됩니다. 이것은, 이러한 캐릭터가 멀티 바이트 캐릭터의 2 바이트째에 사용되는 것을 나타내고 있습니다.

    GNU fileutils 버젼의 ls 에서는, -N ( --literal ) 옵션이 붙어 있지 않으면 멀티 바이트 캐릭터의 파일명을 표시할 수 없습니다. 만약, fileutils 버젼을 사용하고 있는 경우는, dspmbyte 의 2 번째의 캐릭터를 "ls" 로 설정해 주세요. 그렇게 하지 않으면 예를 들어 "ls-F -l" 로 멀티 바이트 캐릭터의 파일명을 표시할 수 없습니다.

      주:
    이 변수가 사용 가능해요는, KANJI 와 DSPMBYTE 가 컴파일시에 정의되었을 경우만입니다.

dunique (+)
    이것이 설정되어 있는 경우, pushd 는, 디렉토리명을 스택에 두기 전에 name 인 임의의 요소를 스택으로부터 삭제합니다.

echo
    이것이 설정되어 있는 경우, 각 명령은, 실행되기 직전에 인수와 함께 에코 됩니다. 편입 명령 이외의 커멘드에 대해서는, 전개가 모두 행해진 후에 에코 됩니다. 편입 명령에 대해서는, 명령 및 파일명의 치환을 하는 것보다도 전에 에코 됩니다. 이것은, 치환이 유저의 선택에 의해 행해지는 것이기 때문입니다. 이 셸 변수는, 명령행 옵션 -x 로 설정됩니다.

echo_style (+)
    echo 편입 명령의 스타일입니다. 다음과 같이 설정할 수 있습니다.

    bsd 제 1 인수가 `-n'인 경우, 개행을 에코 하지 않습니다.
    sysv
        echo 중의 캐릭터 라인의 backslash로 시작되는 escape sequence를 인식합니다.
    both
        `-n'플래그와 backslash로 시작되는 escape sequence의 양쪽 모두를 인식합니다. 이것이 디폴트입니다.
    none
        어느쪽이나 인식하지 않습니다.

    디폴트에서는, 로컬 시스템의 디폴트로 설정됩니다. BSD 및 System V 옵션은, 적당한 시스템의 echo(1) 메뉴얼 페이지에 해설이 있습니다.

edit (+)
    이것이 설정되어 있는 경우, 명령행 에디터가 사용됩니다. 대화형 쉘에서는 디폴트로 설정되어 있습니다.

ellipsis (+)
    이것이 설정되어 있는 경우, `%c'/`%. ' 및 `%C'prompt 순차 순서 (prompt 셸 변수를 참조)(은)는,`/<skipped>'대신에 생략 기호 (`...') 인화성의 스킵 디렉토리를 나타내게 됩니다.

fignore (+)
    보완할 때에 무시되는 파일명의 사픽스리스트입니다.

filec
    디폴트에서는 tcsh 에서는 보완은 항상 행해지기 때문에, 이 변수는 무시됩니다. edit 하지만 미설정인 경우, 전통적인 csh 의 보완이 사용됩니다. csh 로 설정되어 있는 경우는, 파일명의 보완이 사용된다 같게 됩니다.

gid (+)
    유저 열매 그룹 ID 입니다.

group (+)
    유저의 그룹명입니다.

histchars
    역사 치환 (그 쪽도 참조)로 사용되는 캐릭터를 결정하는 캐릭터 라인입니다. 이 값의 최초의 캐릭터는, 디폴트의 `! '의 대신에 역사 치환 캐릭터로서 사용됩니다. 2 번째의 캐릭터는, 퀵 치환때의 캐릭터 `^'의 대신을 합니다.

histdup (+)
    역사 리스트중의 중복 엔트리의 취급을 제어합니다. 이 값이 `all'로 설정되어 있는 경우, 단일의 역사 이벤트가 역사 리스트에 입력됩니다. `prev'로 설정되어 있는 경우, 마지막 역사 이벤트는 현재의 명령와 같게되어, 그 때문에, 현재의 명령은 역사에는 입력되지 않습니다. `erase'로 설정되어 있는 경우, 역사 리스트중에 같은 이벤트가 발견되었을 때에는, 낡은 (분)편의 이벤트는 소거되어 현재의 것이 삽입됩니다. `prev' 및 `all'옵션은 역사 이벤트의 번호 짓고를 다시 하기 때문에, 빈틈은 붉은 있고 것이라고 하는 것에 주의해 주세요.

histfile (+)
    `history -S' 및 `history -L'가 찾는 역사 파일의 디폴트의 장소입니다. 이것이 설정되어 있지 않은 경우, ~/.history 가 사용됩니다. 다른 머신간에 같은 홈 디렉토리를 공유하고 있거나 단말 마다 역사를 나누어 보존하고 있거나 하는 경우, histfile 는 편리한 것입니다. 통상, ~/.history 파일보다 전에 읽힌다 의는 ~/.tcshrc 만일 수 있는이므로, histfile 는 ~/.login (이)가 아니고, ~/.tcshrc 로 설정해 주세요.

histlit (+)
    이것이 설정되어 있는 경우, 편입 명령, 편집 커멘드 및 savehist 기구는 역사 리스트중의 명령행을 문자 그대로의 (전개하지 않는다) 형식에서 사용합니다. toggle-literal-history 편집 명령도 참조해 주세요.

history
    최초의 단어는, 기록해 두어야 할 역사 이벤트수를 나타냅니다. 옵션인 2 번째의 단어 (+)는, 역사가 어떤 형식에서 표시되는지를 나타내고 있습니다. 이것이 주어지지 않으면, `%h\t%T\t%R\n'가 사용됩니다. 포맷 순차 순서는, prompt 하에 기술되고 있어 그곳에서는, `%R'의 의미가 바뀌는 것의 주의가 되고 있습니다. 디폴트에서는 `100'입니다.

home
    기동한 유저의 홈 디렉토리에 초기화됩니다. 파일명에서의 `~ 의 전개에는, 이 변수가 참조되고 있습니다.

ignoreeof
    이것이 공문자열 혹은 `0'로 설정되어 있어 입력 디바이스가 단말인 경우에는, end-of-file 명령 (통상은, 유저가 공행에 `~D'를 치는 것으로 생성됩니다)를 입력하면(자), 쉘은 종료해 버리는 대신에 `Use "exit" to leave tcsh. '라고 표시합니다. 이것에 의해, 쉘이 무심코 kill 되어 버리는 것을 막을 수가 있습니다. 번호 n 를 설정해 있는 경우에는, 쉘은 n - 1 회 연속한 end-of-file 를 무시해, n 번째의 end-of-file 가 있으면 그 때에 종료합니다. (+) 이것이 설정되어 있지 않은 경우에는,`1'가 사용됩니다. 즉, 쉘은 `^D' 1 회에 종료합니다.

implicitcd (+)
    이것이 설정되어 있는 경우, 쉘은, 명령로서 입력되었다 디렉토리명을, 마치 그 디렉토리에 이동하는 요구인 것과 해석합니다. verbose 로 설정되어 있는 경우, 디렉토리의 이동이 행해지는 것이 표준 출력에 에코 되게 됩니다. 이 행동은, 비대화적인 셸 스크립트, 혹은 2 어 이상 있는 명령행에서는 금지되고 있습니다. 디렉토리를 이동하는 것은, 디렉토리명과 같은 이름을 가진 명령을 실행하는 것보다도 우선됩니다만, 앨리어스(alias)의 치환보다는 나중이 됩니다. 치르다 및 변수의 전개도 동작합니다.

inputmode (+)
    `insert'혹은 `overwrite'로 설정되어 있는 경우, 각 행의 선두에서 에디터가 입력 모드에 들어가게 됩니다.

killdup (+)
    키르링중의 중복 엔트리의 취급을 제어합니다. `all'에 세트 하면(자), 일의인 엔트리만이 키르링에 등록됩니다. `prev'에 세트 하면(자), 마지막에 킬 된 캐릭터 라인이 현재의 킬 캐릭터 라인에 매치 하는 경우, 현재의 캐릭터 라인은 링에 등록되지 않습니다. `erase'에 세트 하면(자), 같은 캐릭터 라인이 키르링중에 발견되었을 경우, 낡은 캐릭터 라인이 삭제되어 현재의 캐릭터 라인이 삽입됩니다.

killring (+)
    몇개의 킬 된 자렬을 메모리중 으로 유지하는지를 나타냅니다. 디폴트로 `30'에 세트 됩니다. 세트 하지 않는지,`2'보다 작은 값을 설정하면(자), 최근 킬 한 캐릭터 라인만을 쉘은 보관 유지합니다.

listflags (+)
    `x', `a', `A'혹은 이러한 편성 (예를 들어, `xA')으로 설정되어 있는 경우, 이러한 값은, ls-F 에의 플래그로서 사용되어 `ls -xF', `ls -Fa', `ls -FA'혹은 이러한 편성 (예를 들어, `ls -FxA') (와)과 같이 행동하게 됩니다. `a'는 모든 파일을 표시합니다 (비록,`. '로 시작되는 파일로 있어도). `A'는 `. ' 및 `..'이외의 파일 모든 것을 표시해, `x'는 위에서 아래로 향해가 아니고, 왼쪽에서 오른쪽을 향해 정렬 합니다. listflags 에 2 번째의 단어가 설정되어 있으면, 그것은 `ls(1)'에의 패스로 해서 사용됩니다.

listjobs (+)
    이것이 설정되어 있으면, 작업이 일시정지했을 때에 모든 작업이 리스트 됩니다. `long'로 설정되어 있으면, 리스트는 긴 형식의 것이 됩니다.

listlinks (+)
    이것이 설정되어 있으면, 편입 명령 ls-F 는 각 기호 연결이 가리키고 있는 파일의 종류를 표시합니다.

listmax (+)
    list-choices 편집 명령이 유저에게 최초로 물어 오지 않고 리스트 하는 최대 요소수입니다.

listmaxrows (+)
    list-choices 편집 명령이 유저에게 최초로 물어 오지 않고 리스트 하는 요소의 최대행수입니다.

loginsh (+)
    쉘이 로그인 쉘인 경우로 설정됩니다. 쉘중에서 이 변수를 설정하거나 설정을 해제하거나 해도 아무 효력도 없습니다. shlvl 도 참조해 주세요.

logout (+)
    통상의 로그아웃의 전에는, 쉘에 의해 `normal'가, 자동 로그아웃의 전에는 `automatic'가, 그리고, 쉘이 행업 시그널에 의해 종료 당했을 경우 (시그널의 취급를 참조)에는 `hangup'가 설정됩니다. autologout 셸 변수도 참조해 주세요.

mail
    도착되는 메일을 체크하기 위한 파일 혹은 디렉토리명입니다. 이것은, 스페이스에서 단락지어져 옵션으로 숫자를 앞에 두고 붙입니다. prompt를 내기 전에, 마지막에 메일 체크를 하고 나서 10 분 지나 있었을 경우, 쉘은 각 파일을 체크해, 만약 파일 사이즈가 0 보다 큰지, 혹은 액세스 시각보다 변경 시각이 컸던 경우에는 `You have new mail. ' (혹은, mail 에 복수의 파일이 포함되어 있었을 경우, `You have new mail in name. ')라고 표시합니다.

    로그인 쉘에 있는 경우에는, 쉘의 기동 시각 후에 파일이 변경되지 않는 이상 어느 메일 파일도 보고되지 않습니다. 이것은, 불필요하게 통지하지 않게 하기 (위해)때문입니다. 대부분의 login 프로그램에서는, 로그인시에 메일이 도착해 있는지 어떤지를 가르쳐 주는 것입니다.

    mail 로 지정된 파일이 디렉토리인 경우, 쉘은, 디렉토리안의 각 파일을 다른 메세지로서 계산해, `You have n mails. '라든지 `You have n mails in name. ' (이)라든지와 적절히 보고합니다. 이 기능은, 주로 Andrew Mail System 와 같이, 메일을 이 방식에서 보존하는 시스템용으로 제공된 것입니다.

    mail 의 최초의 단어가 수치인 경우, 그것은 메일 체크의 간격을 바꾸는 것으로서 수취됩니다. 초단위입니다.

    매우 드문 상황하입니다만, 쉘이 `You have new mail. '는 아니고 `You have mail. '라고 보고하는 일이 있습니다.

matchbeep (+)
    이것이 `never'로 설정되어 있는 경우, 보완을 해도 beep음은 울지 않습니다. `nomatch'로 설정되어 있는 경우, 매치 하는 것이 없을 때에 마셔 beep음이 웁니다. `ambiguous'로 설정되어 있는 경우, 매치 하는 것이 다수 있을 때 beep음이 웁니다. `notunique'로 설정되어 있는 경우, 완전하게 매치 하는 것이 1 개 있어, 또, 그것과는 별도로 좀 더 길게 매치 하는 것이 있었을 때에 beep음이 웁니다. 이것이 설정되어 있지 않은 경우, `ambiguous'가 사용됩니다.

nobeep (+)
    이것이 설정되어 있는 경우, beep음은 완전하게 무효가 됩니다. visiblebell 도 참조해 주세요.

noclobber
    이것이 설정되어 있는 경우, 출력 리디렉션에 제한이 두어지게 되어, 입출력섹션으로 말하고 있도록(듯이), 파일을 무심코 부수지 않게, 또,`>>'리디렉션이 존재한다 파일을 가리키도록(듯이) 프로텍션할 수 있습니다.

noding
    prompt 의 시각 지정자에 있어, 시간의 변환기에 `DING! '와 표시하는 것을 무효로 합니다.

noglob
    이것이 설정되어 있는 경우, 파일명 치환 및, 디렉토리 스택 치환 (그 쪽도 참조)가 금지됩니다. 이 기능은, 파일명을 취급하지 않는 셸 스크립트나, 파일명의 리스트를 취득한 후, 한층 더 전개를 하시고 싶지 않다 스크립트에는 가장 유효한 것입니다.

nokanji (+)
    이것이 설정되어 있어 쉘이 한자를 서포트하고 있는 경우 (셸 변수 version 를 참조), 한자의 서포트를 무효로 해, 메타키를 사용할 수 있도록(듯이) 합니다.

nonomatch
    이것이 설정되어 있는 경우, 파일명 치환 및 디렉토리 스택 치환 (그 쪽도 참조) 시에, 존재하는 파일에 매치 하지 않았을 때에, 에러를 내지 않고 그대로 방치하게 됩니다. 치환이 기능하지 않을 때에는 변함 없이 에러가 됩니다. 예를 들어, `echo ['는 변함 없이 에러가 됩니다.

nostat (+)
    보완 처리를 하고 있는 동안에 stat(2)를 걸어서는 안된다 디렉토리의 리스트 (혹은, 디렉토리에 매치 한다 그로브파탄입니다. 파일명 치환를 참조)입니다. 이 기능은, stat(2)를 실행하면(자) 터무니없는 시간이 걸려 버리는 것 같은 디렉토리, 예를 들어 /afs 등을 제외하는데 통상 사용됩니다.

notify
    이것이 설정되어 있는 경우, 쉘은 작업이 완료한 것을 비동기에게 통지합니다. 디폴트는, prompt가 표시되기 직전에 작업의 완료를 제시합니다.

oid (+)
    유저 열매 조직 ID 입니다 (Domain/OS 뿐입니다).

owd (+)
    전의 작업 디렉토리에서, cd 가 사용하는 `-' 및 pushd 와 등가입니다. cwd 및 dirstack 셸 변수도 참조해 주세요.

path
    실행 가능한 명령을 찾는 디렉토리의 리스트입니다. null 캐릭터는 커런트 디렉토리를 나타냅니다. path 변수가 없는 경우, 풀 패스명에서의 지정만 실행됩니다. path 는, 기동시에 쉘이 환경 변수 PATH 로부터 설정하는지, 혹은 PATH 가 존재하지 않았던 경우에는, 시스템 의존의 디폴트, 예를 들어 `(/usr/local/bin /usr/bsd /bin /usr/bin . )'와 같은 것에 설정합니다. 쉘은,`. '를 path 의 선두 혹은 말미에 둘 수가 있어 또, 컴파일의 방법에 의존합니다만, `. '를 완전하게 생략해 버리는 일도 할 수 있습니다. -c, -t 옵션의 어느쪽이나 주어지지 않았다 쉘은, ~/.tcshrc 를 읽어들인 후 및 path 가 리셋트 될 때마다 디렉토리의 내용을 해시에 격납합니다. 쉘이 액티브한 사이에, 유저가 path 중의 디렉토리에 새로운 명령을 추가했을 경우, 쉘이 그 명령을 찾아낼 수 있도록(듯이) rehash 를 실행할 필요가 있을지도 모릅니다.

printexitvalue (+)
    이것이 설정되어 있어 대화형의 프로그램이 0 이외의 스테이터스로 종료했을 경우, 쉘은 `Exit status'라고 표시합니다.

prompt
    단말로부터 명령을 읽어들이기 전에 표시되는 캐릭터 라인입니다. prompt 에는, 다음의 포맷열 (+)의 어떤 것을 포함해도 상관하지 않습니다. 이 포맷열은, 주어진 정보로 고쳐 쓸 수 있습니다.

    %/  경향 작업 디렉토리입니다.
    %~  경향 작업 디렉토리입니다만,`~'로 표현된다 유저의 홈 디렉토리 및 `~user'로 표현된다 다른 유저의 홈 디렉토리를 파일명 치환 합니다. `~user'의 치환은, 현재의 세션에 대해, 쉘이 패스명에 `~user'를 사용하고 있는 경우에게만 일어납니다.
    %c[[0]n], %. [[0]n]
        현재의 작업 디렉토리의, 말미의 요소입니다. 숫자 n 가 지정되어 있는 경우, 말미의 n 개의 요소입니다. n 가 `0'로 개시하는 경우, 스킵 된 요소수가 말미 요소의 전을 뒤따라, 다음의 서식이 됩니다 `/<스킵 된 수>말미 요소'. 셸 변수 ellipsis 가 설정되어 있는 경우, 스킵 된 요소는 생략 기호로 치환되기 때문에, 전체적으로는 `...말미 요소'됩니다. `~'치환은, 전술의 `%~'와 같게 행해집니다만, `~'요소는, 말미 요소수를 세는 대상으로부터는 제외됩니다.
    %C  %c 를 닮아 있습니다만,`~'의 치환을 실시하지 않습니다.
    %h, %!, !
        현재의 역사 이벤트 번호입니다.
    %M  완전한 호스트명입니다.
    %m  최초의 `. '까지의 호스트명입니다.
    %S (%s)
        강조 표시 모드를 개시 (종료)합니다.
    %B (%b)
        볼드 체표시모드를 개시 (종료)합니다.
    %U (%u)
        안 다라 인 모드를 개시 (종료)합니다.
    %t, %@
        AM/PM 의 12 시간표기에서의 시각입니다.
    %T  `%t'를 닮아 있습니다만, 이쪽은 24 시간표기입니다 (다만, 셸 변수 ampm 도 참조).
    %p  초까지 포함한, AM/PM 의 12 시간표기에서의 `정확한'시각입니다.
    %P  `%p'를 닮아 있습니다만, 이쪽은 24 시간표기입니다 (다만, 셸 변수 ampm 도 참조).
    \c  c 는 bindkey 중에 있는 것으로서 퍼스 됩니다.
    ^c  c 는 bindkey 중에 있는 것으로서 퍼스 됩니다.
    %%  `%' 1 개(살)입니다.
    %n  유저명입니다.
    %j  작업수입니다.
    %d  `Day'형식의 요일.
    %D  `dd'형식의 날.
    %w  `Mon'형식의 달.
    %W  `mm'형식의 달.
    %y  `yy'형식의 해.
    %Y  `yyyy'형식의 해.
    %l  쉘의 tty.
    %L  prompt의 마지막으로부터, 디스플레이의 끝나 또는 줄 끝까지 클리어 합니다.
    %$  `$'의 직후의 셸 변수 또는 환경 변수를 전개합니다.
    %#  보통 유저는 `>' (또는 promptchars 셸 변수의 최초의 캐릭터), 슈퍼 유저는 `#' (또는 promptchars 의 2 번째의 캐릭터).
    %{string%}
        string 를 문자 그대로의 escape sequence로서 수중에 넣습니다. 이것은 단말 속성을 변경하기 위해서 마셔 사용해야 하는 것으로, 커서 위치의 이동을 이것으로 가서는 안됩니다. 이것은 prompt 의 마지막 순차 순서여서는 안됩니다.
    %?  prompt의 직전에 실행된 명령의 반환값.
    %R  prompt2 중(안)에서는 파서 상태. prompt3 중(안)에서는 수정된 캐릭터 라인. history 중(안)에서는 히스토리 캐릭터 라인.

    `%B', `%S', `%U', `%{string%}'는, 8bit 깨끗한 쉘에서만 이용할 수 있습니다. version 셸 변수를 참조해 주세요.

    볼드, 스탠드 아웃, 밑줄이라고 하는 순차 순서는, 슈퍼 유저의 쉘을 구별하기 위해서 사용되는 것이 많습니다. 예를 들어,

        > set prompt = "%m [%h] %B[%@]%b [%/] you rang? "
        tut [37] [2:54pm] [/usr/accts/sys] you rang? _

    `%t', `%@', `%T', `%p', `%P'의 어떤 것인가가 사용되고 있어, 한편 noding 가 설정되어 있지 않으면, 매정시 (`:00'분 )에는 실제의 시각 대신에 `DING! '를 표시합니다.

    대화적 쉘에서의 디폴트는 `%# '입니다.

prompt2 (+)
    while 루프나 foreach 루프 중(안)에서, 또 `\'로 끝난 행의 다음의 행으로, prompt로서 이용되는 캐릭터 라인. prompt (그 쪽도 참조)와 같다 포맷 순차 순서를 사용할 수 있습니다. `%R'의 의미가 바뀌는 것에 주의해 주세요. 대화적 쉘에서의 디폴트는 `%R? '입니다.

prompt3 (+)
    자동 스펠 정정의 확정시의 prompt 캐릭터 라인. prompt (그 쪽도 참조)와 같다 포맷 순차 순서를 사용할 수 있습니다. `%R'의 의미가 바뀌는 것에 주의해 주세요. 대화적 쉘에서의 디폴트는 `CORRECT>%R (y|n|e|a)? '입니다.

promptchars (+)
    (2 캐릭터의 캐릭터 라인에) 설정하면(자), prompt 셸 변수중의 `%#'포맷 순차 순서가, 보통 유저에서는 최초의 캐릭터로, 슈퍼 유저에서는 2 번째의 캐릭터로 옮겨놓을 수 있습니다.

pushdtohome (+)
    설정하면(자), 인수를 취하지 않는 pushd 는, cd 와 같이 `pushd ~'를 실행합니다.

pushdsilent (+)
    설정하면(자), pushd 와 popd 시에 디렉토리 스택이 표시되지 않게 됩니다.

recexact (+)
    설정하면(자), 보완 시에 정확한 매치이 있으면, 보다 긴 매치이 가능한 경우에서도, 정확한 편에 보완합니다.

recognize_only_executables (+)
    설정하면(자), 명령 리스트는 패스중에 있는 실행 가능한 파일만을 표시합니다. 늦습니다.

rmstar (+)
    설정하면(자), 유저는 `rm *'를 실행하기 전에 확인을 받습니다.

rprompt (+)
    (명령 입력 후) prompt 가 왼쪽으로 표시될 때에, 스크린의 우측 (명령 입력의 뒤측)으로 표시되는 캐릭터 라인. prompt 와 같은 포맷 캐릭터 라인을 사용할 수 있습니다. 이 캐릭터 라인은, 명령 입력을 방해 하지 않게 자동적으로 숨겨, 또 재차 나타나거나 합니다. (좌측의) prompt, 명령 입력, 이 캐릭터 라인이 최초의 1 행에 들어가는 경우에 한정해, 이 캐릭터 라인은 표시됩니다. edit 가 설정되어 있지 않으면, rprompt 는 prompt의 뒤, 명령 입력 전에 표시됩니다.

savedirs (+)
    설정하면(자), 쉘은 종료하기 전에 `dirs -S'를 실시합니다. 최초의 단어를 숫자로 설정하면(자), 그 개수까지 디렉토리 스택의 엔트리를 보존합니다.

savehist
    설정하면(자), 쉘은 종료하기 전에 `history -S'를 실시합니다. 최초의 단어를 숫자로 설정하면(자), 그 개수까지의 행이 보존됩니다. (개수는 history 이하가 아니면 안됩니다. ) 2 번째의 단어를 `merge'로 하면(자), 히스토리 파일이 존재하는 경우에, 치환은 아니고 추가를 실시합니다. 그리고 타임 스탬프에 의해 정렬를 실시해, 최근의 이벤트를 남깁니다. (+)

sched (+)
    sched 편입 명령이 스케줄 이벤트를 표시하는 서식. 특히 지정하지 않으면 `%h\t%T\t%R\n'가 사용됩니다. 포맷 순차 순서는 상기의 prompt 이하에 써 있습니다. `%R'의 의미가 바뀌는 것에 주의해 주세요.

shell
    쉘의 파일. 이것은 쉘을 포크 해, 실행 비트가 설정되어 있지만 시스템에 의한 실행이 불가능한 파일을 실행하기 위해서 이용됩니다 (편입 명령, 비편입 커멘드의 실행를 참조). 초기치는, (시스템 의존의) 쉘의 두는 곳소입니다.

shlvl (+)
    상자가 된 쉘의 수. 로그인 쉘에서는 1 에 리셋트 됩니다. loginsh 도 참조해 주세요.

status
    마지막 명령에 의해 돌려주어진 상태. 명령이 이상종료(ABEND) 했을 경우에는 0200 이 더해집니다. 편입 명령은, 실패하면(자) 종료 상태 `1'를 돌려줍니다. 그 외의 경우는, 모든 편입 명령은 상태 `0'를 돌려줍니다.

symlinks (+)
    몇개인가 다른 값으로 설정할 수 있어 기호 연결 (`symlink')의 해결을 제어할 수 있습니다.

    `chase'로 설정하면(자), 커런트 디렉토리가 기호 연결을 포함한 디렉토리가 되면, 링크를 그것이 가리키고 있는 디렉토리의 실명에 전개합니다. 이 기능은 유저의 홈 디렉토리에서는 일하지 않습니다. 이것은 버그입니다.

    `ignore'로 하면(자), 이 쉘은 링크를 다녀 커런트 디렉토리를 이동하는 경우, 이동처의 디렉토리를 현재의 디렉토리에 대한다 상대 위치로서 구축하려고 합니다. 이것은 즉, 기호 연결을 통해 cd 를 실시해, 계속되어 `cd ..'를 실시하면, 원래의 디렉토리로 돌아온다, 라고 하는 것을 의미합니다. 이것은 짜넣어 명령와 파일명 보완에게만 영향을 줍니다.

    `expand'로 설정하면(자), 쉘은 패스명과 같이 보이는 당겨 수를 실제로 전개해, 기호 연결을 바탕으로 되돌리려고 합니다. 이것은 짜넣어 명령 뿐만 아니라, 모든 커멘드에 영향을 줍니다. 유감스럽지만, 이것은 인식하기 어려운 파일명 (예를 들어 명령 옵션에 파묻힌 것 등)에는 동작하지 않습니다. 쿼트 하면 전개는 행해지지 않습니다. 대부분의 경우는 이 설정이 편리합니다만, 전개해야 할 당겨 수를 인식할 수 없으면 오해나 혼란의 바탕으로 될지도 모릅니다. 타협안으로서 `ignore'로 해 두어, 필요한 경우에는 편집 명령 normalize-path (디폴트에서는 ^X-n 에 바인드 되고 있습니다) (을)를 사용하는 것이 좋을지도 모릅니다.

    순서에 몇개인가예를 나타냅니다. 우선은 놀이터가 되는 디렉토리를 준비합시다.

        > cd /tmp
        > mkdir from from/src to
        > ln -s from/src to/dst

    symlinks 가 설정되어 있지 않은 경우의 동작:

        > cd /tmp/to/dst; echo $cwd
        /tmp/to/dst
        > cd ..; echo $cwd
        /tmp/from

    symlinks 가 `chase'로 설정되어 있는 경우의 동작:

        > cd /tmp/to/dst; echo $cwd
        /tmp/from/src
        > cd ..; echo $cwd
        /tmp/from

    symlinks 가 `ignore'로 설정되어 있는 경우의 동작:

        > cd /tmp/to/dst; echo $cwd
        /tmp/to/dst
        > cd ..; echo $cwd
        /tmp/to

    symlinks 가 `expand'로 설정되어 있는 경우의 동작:

        > cd /tmp/to/dst; echo $cwd
        /tmp/to/dst
        > cd ..; echo $cwd
        /tmp/to
        > cd /tmp/to/dst; echo $cwd
        /tmp/to/dst
        > cd ".."; echo $cwd
        /tmp/from
        > /bin/echo ..
        /tmp/to
        > /bin/echo ".."
        ..

    몇개인가 주의하면, `expand'에 의한 전개는, 1) cd 와 같이 짜넣어 명령에 대해서는 `ignore'와 같이 일합니다. 2) 쿼트 스치고 바행 깨지지 않습니다. 3) 비편입 명령의 경우는, 파일명을 건네주기 전에 행해집니다.

tcsh (+)
    `R.VV.PP'형식의 쉘의 버젼 번호입니다. `R'는 메이저 릴리스 번호, `VV'는 경향 버젼, `PP'는 패치 레벨입니다.

term
    단말의 종류. 스타트 업과 셧다운 그리고 말하고 있도록(듯이), 통상은 ~/.login 로 설정됩니다.

time
    수치를 설정하면(자), 그 이상의 CPU 시간 (초) (을)를 소비한 명령의 실행 후에, 자동적으로 짜넣어 명령 time (그 쪽도 참조) (을)를 실행합니다. 2 번째의 단어가 있으면, time 편입 명령의 출력 포맷 캐릭터 라인으로서 사용됩니다. (u) 이하의 순차 순서가 포맷 캐릭터 라인으로 사용할 수 있습니다.

    %U  프로세스가 유저 모드로 소비한 CPU 시간 (초).
    %S  프로세스가 커널 모드로 소비한 CPU 시간 (초).
    %E  (벽시계에서의) 경과시간 (초).
    %P  (%U + %S) / %E 로서 계산되는 CPU 사용율.
    %W  프로세스가 스왑 된 회수.
    %X  (공유) 텍스트 공간의 평균 사용량. Kbyte 단위.
    %D  (비공유) 데이터/스택 공간의 평균 사용량. Kbyte 단위.
    %K  (%X + %D)의 총사용량. Kbyte 단위.
    %M  프로세스가 사용한 메모리의 순간 최대치. Kbyte 단위.
    %F  메이저 페이지 폴트의 회수 (디스크로부터 취해 올 필요가 있던 페이지수).
    %R  마이너 페이지 폴트의 회수.
    %I  입력 조작의 회수.
    %O  출력 조작의 회수.
    %r  소켓 메세지를 받아들인 회수.
    %s  소켓 메세지를 보낸 회수.
    %k  시그널을 받은 회수.
    %w  자발적인 콘텍스트 스위칭의 회수 (wait 의 회수).
    %c  비자발적인 콘텍스트 스위칭의 회수.

    BSD 자원 제한 기능이 없는 시스템에서는, 최초의 4 개의 순차 순서만이 서포트되고 있습니다. 디폴트의 시간 포맷은, 자원 사용 보고를 서포트하고 있는 시스템에서는 `%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww'로, 그렇지 않은 시스템에서는 `%Uu %Ss %E %P'입니다.

    Sequent 의 DYNIX/ptx 에서는, %X, %D, %K, %r, %s 를 사용할 수 없습니다만, 이하의 추가 순차 순서를 이용할 수 있습니다.

    %Y  시스템 콜이 실행된 회수.
    %Z  요구에 응해 제로로 묻을 수 있었던 페이지수.
    %i  프로세스의 상주 사이즈가 커널에 의해 증가 당한 회수.
    %d  프로세스의 상주 사이즈가 커널에 의해 감소 당한 회수.
    %l  read 시스템 콜이 실행된 회수.
    %m  write 시스템 콜이 실행된 회수.
    %p  raw 디스크 장치로부터 읽어들인 회수.
    %q  raw 디스크 장치에 기입한 회수.

    디폴트의 시간 포맷은 `%Uu %Ss $E %P %I+%Oio %Fpf+%Ww'입니다. 멀티 프로세서에서는 CPU 사용율이 100% 보다 높아지는 일이 있습니다.

tperiod (+)
    특별한 앨리어스(alias) periodic 의 실행되는 주기 (분 단위).

tty (+)
    tty 의 이름. 단말에 아탓치되어 있지 않은 경우는 하늘.

uid (+)
    유저 열매 유저 ID.

user
    유저의 로그인명.

verbose
    설정하면(자), 역사 치환 후에, 각 명령의 단어를 (있으면) 표시합니다. 명령행 옵션 -v 에 의해 설정됩니다.

version (+)
    버젼 ID 스탬프. 쉘의 버젼 번호 (tcsh 를 참조), 배포원, 릴리스일, 벤더, operating system, 머신 (VENDOR, OSTYPE, MACHTYPE 를 참조), 컴파일시로 설정된 옵션을 칸마로 단락지은 리스트로부터 됩니다. 디스트리뷰션의 디폴트로서 세트 된 옵션이 기록되고 있습니다.

    8b  쉘은 8bit 크린. 디폴트.
    7b  쉘은 8bit 깨끗하지 않다.
    nls 시스템의 NLS 를 사용한다. NLS 가 있는 시스템에서는 디폴트.
    lf  로그인 쉘은 /etc/csh.cshrc 의 다음에는 없고 먼저 /etc/csh.login 를 실행해, ~/.tcshrc 와 ~/.history 의 다음에는 없고 먼저 ~/.login 를 실행한다.
    dl  보안상의 이유로부터 `. '를 path 의 마지막에 둔다. 디폴트.
    nd  보안상의 이유로부터 `. '를 path 에 포함하지 않는다.
    vi  emacs-형식은 아니고 vi-형식의 편집을 디폴트로 한다.
    dtr 로그인 쉘은 종료시에 DTR 를 떨어뜨린다.
    bye bye 를 logout 의 동의어로 해, log 를 watchlog 의 별명으로서 취급한다.
    al  autologout 를 유효하게 한다. 디폴트.
    kan nokanji 셸 변수가 설정되지 않는 이상 로케일 설정이 적절하면, 한자를 사용한다.
    sm  시스템의 malloc(3)를 사용한다.
    hb  셸 스크립트의 실행시에 `#! <program> <args>'방식을 에뮤레이트 한다.
    ng  newgrp 편입 명령이 이용 가능.
    rh  쉘은 REMOTEHOST 환경 변수를 설정하려고 한다.
    afs 쉘은 만약 로컬인 인증이 실패하면(자), kerberos 서버에 패스워드를 확인한다. afsuser 셸 변수나 AFSUSER 환경 변수가 설정되어 있으면(자), 그 내용으로 로컬 유저명을 덧쓰기한다.

    시스템 관리 책임자는, 캐릭터 라인을 추가해 로컬 버젼에서의 차이를 나타내도록 할 수 있습니다.

visiblebell (+)
    설정하면(자), 음성 벨 대신에 화면을 플래시 합니다. nobeep 도 참조해 주세요.

watch (+)
    로그인 / 로그아웃의 감시 대상으로 하는, 「유저 / 단말」페어의 리스트. 유저에 대한 단말이 `any'라면, 지정한 유저를 모든 단말로 감시합니다. 반대로 유저가 `any'라면, 지정한 단말로 모든 유저를 감시합니다. watch 를 `(any any)'로 설정하면(자), 모든 유저와 단말을 감시합니다. 예를 들어,

        set watch = (george ttyd1 any console $user any)

    (은)는, 유저 `george'의 ttyd1 에서의 행동을, 그리고 모든 유저의 콘솔에서의 행동을, 그리고 자기 자신 (또는 불법 침입자)의 모든 단말에서의 행동을 보고합니다.

    디폴트에서는, 로그인과 로그아웃은 10 분 마다 조사할 수 있습니다만, watch 의 최초의 단어에, 조사하는 간격을 분 단위로 쓸 수도 있습니다. 예를 들어,

        set watch = (1 any any)

    (은)는 1 분 간격으로 모든 로그인 / 로그아웃을 보고합니다. 인내의 효과가 없는 사람은, log 편입 명령을 이용하면, 언제라도 watch 의 리포트를 볼 수가 있습니다. watch 가 최초로 설정되었을 때에는, 현재 로그인하고 있는 유저 리스트가 (log 편입 명령에 의해) 보고됩니다.

    watch 의 보고 형식은 who 셸 변수로 제어합니다.

who (+)
    watch 메세지의 포맷 캐릭터 라인. 이하의 순차 순서를 얻을 수 있던 정보로 치환됩니다.

    %n  로그인 / 로그아웃 한 유저의 이름.
    %a  관찰된 행동: `logged on', `logged off', `replaced olduser on'의 언젠가.
    %l  유저가 로그인 / 로그아웃 한 단말 (tty).
    %M  리모트 호스트의 완전한 호스트명. 로컬 호스트에서의 로그인 / 로그아웃의 경우는 `local'.
    %m  리모트 호스트의, 최초의 `. '까지의 호스트명. IP 주소나 X Window System 디스플레이의 경우는 이름 전체.

    %M 과 %m 는 /etc/utmp 에 리모트 호스트명을 격납하는 시스템에서만 이용할 수 있습니다. 설정하지 않으면 `%n has %a %l from %m. '가 이용됩니다. 다만 리모트 호스트명을 격납하지 않는 시스템에서는 `%n has %a %l. '가 이용됩니다.

wordchars (+)
    forward-word, backward-word 등의 편집 명령로, 단어의 일부로 간주해지는 비영수캐릭터의 리스트. 설정되지 않으면 `*? _-. []~='가 사용됩니다.

환경 변수

AFSUSER (+)
    afsuser 셸 변수와 같습니다.

COLUMNS
    단말의 자리수입니다 (단말 관리 를 참조).

DISPLAY
    X Window System 에 의해 사용됩니다 (X(1)를 참조). 설정되면(자), 이 쉘은 autologout (그 쪽도 참조) (을)를 설정하지 않습니다.

EDITOR
    디폴트의 에디터의 패스명입니다. VISUAL 환경 변수와 run-fg-editor 편집 명령도 참조해 주세요.

GROUP (+)
    group 셸 변수와 같습니다.

HOME
    home 셸 변수와 같습니다.

HOST (+)
    쉘이 실행되고 있는 머신의 이름으로 초기화됩니다. 이것은 gethostname(2) 시스템 콜로 결정됩니다.

HOSTTYPE (+)
    쉘이 실행되고 있는 머신의 타입으로 초기화됩니다. 이것은 컴파일시로 결정됩니다. 이 변수는 폐지될 예정이며, 장래의 버젼으로 삭제되겠지요.

HPATH (+)
    run-help 편집 명령이 커멘드의 해설 문서를 찾는다 디렉토리의 리스트입니다. 단락 캐릭터는 코론입니다.

LANG
    우선적으로 사용되는 캐릭터 환경을 줍니다. 고유 언어 시스템의 서포트를 참조해 주세요.

LC_CTYPE
    설정되어 있으면(자), ctype 캐릭터의 취급만이 변경됩니다. 고유 언어 시스템의 서포트를 참조해 주세요.

LINES
    단말의 행수입니다. 단말 관리를 참조해 주세요.

LS_COLORS
    이 변수의 포맷은 termcap(5) 파일의 포맷과 닮았습니다. "xx=string" 의 형태를 한 식을 코론으로 단락지어 늘어놓았다 리스트입니다. "xx" 는 2 캐릭터의 변수명입니다. 변수와 그러한 기본값은 이하와 같습니다.

        no      0
            Normal (non-filename) text: 파일명을 제외한 통상의 텍스트
        fi      0
            Regular file: 통상의 파일
        di      01;34
            Directory: 디렉토리
        ln      01;36
            Symbolic link: 기호 연결
        pi      33
            Named pipe (FIFO): 이름 첨부 파이프
        so      01;35
            Socket: 소켓
        do	01;35
            Door: 문
        bd      01;33
            Block device: 블록 타입 디바이스
        cd      01;32
            Character device: 캐릭터형 디바이스
        ex      01;32
            Executable file: 실행 가능 파일
        mi      (none)
            Missing file (defaults to fi): 행방불명의 파일
        or      (none)
            Orphaned symbolic link (defaults to ln): 링크처가 없는 기호 연결
        lc      ^[[
            Left code: 색지정 순차 순서 개시 코드
        rc      m
            Right code: 색지정 순차 순서 종료 코드
        ec      (none)
            End code (replaces lc+no+rc): 시키데력을 끝내는 순차 순서

    디폴트로부터 변경하고 싶은 변수만을 지정하면 OK 입니다.

    파일의 이름을, 파일명의 확장자(extension)를 기초로 채색할 수도 있습니다. 이것의 지정은, LS_COLORS 변수에 "*ext=string" 의 문장구조법을 이용해 실시합니다. 예를 들어, ISO 6429 의 코드를 사용해 모든 C 언어의 원시 파일을 블루에 채색하려면 "*. c=34" 와 지정하면 좋을 것입니다. 이것은 .c 로 끝나는 모든 파일을 블루 (34)에 채색합니다.

    컨트롤 캐릭터는 C 스타일의 이스케이프 표기나 stty 와 같은 ^- 표기의 어느 쪽인지로 쓸 수가 있습니다. C 스타일의 표기에서는 이스케이프 코드의 기술에 ^[, 스페이스 코드의 기술에 _, 데리트코드의 기술에 ? 를 추가합니다. 게다가 ^[ escape character를 이용하면(자), ^[, ^, :, = 의 디폴트의 해석을 변경할 수가 있습니다.

    각각의 파일은 <lc> <color-code> <rc> <filename> <ec> 와 같이 쓰여집니다. <ec> 가 미정도리라면, <lc> <no> <rc> 의 순차 순서가 대신에 사용됩니다. 이쪽이 통상 편리하게 사용할 수 있습니다만, 별로 일반적이지는 않습니다. left, right, end 의 코드를 준비한 이유는, 같은 순차 순서를 반복해 입력하지 않아도 좋은 것 같게, 또, 이상한 단말에 대응할 수 있도록(듯이) 하기 (위해)때문입니다. 통상은, ISO 6429 칼라 순차 순서와 다른 시스템을 사용하지 않았다 한정해, 이것들을 변경할 필요는 거의 없습니다.

    단말이 ISO 6429 color 코드를 사용하고 있으면, (lc, rc, ec 코드를 전혀 사용하지 않고 ) 세미콜론으로 단락지어진 숫자의 명령로 타입 코드를 구성할 수가 있습니다. 잘 이용되는 명령은 이하와 같습니다.

        0   디폴트의 색에 되돌립니다.
        1   고휘도색
        4   안 다라 인 첨부 텍스트
        5   점멸 텍스트
        30  전경색흑
        31  전경색 빨강
        32  전경색그린
        33  전경색 노랑 (브라운)
        34  전경색블루
        35  전경색 보라색
        36  전경색시안(cyan)
        37  전경 살갗이 흼 (회색)
        40  배경색흑
        41  배경색 빨강
        42  배경색그린
        43  배경색 노랑 (브라운)
        44  배경색블루
        45  배경색 보라색
        46  배경색시안(cyan)
        47  배경 살갗이 흼 (회색)

    모든 명령이 모든 시스템이나 표시장치로 동작하는 것은 아닙니다.

    적지않은 단말 프로그램에서는 디폴트의 종료 코드를 올바르고 인식하지 않습니다. 디렉토리의 리스트를 한 다음에 모든 텍스트에 첨가하기 위해서(때문에)는, no 코드와 fi 코드를, 각각 0 으로부터 전경색, 배경색의 수치 코드에 변경해 보세요.

MACHTYPE (+)
    컴파일시로 결정된 머신 타입 (마이크로 프로세서 또는, 머신 모델)입니다.

NOREBIND (+)
    설정되어 있으면(자), 인쇄 가능 캐릭터는 self-insert-command 를 반복 실행되지 않습니다. 고유 언어 시스템의 서포트를 참조해 주세요.

OSTYPE (+)
    컴파일시로 결정된 오퍼레이션 시스템입니다.

PATH
    실행 가능 파일을 찾는 디렉토리의, 코론 단락 형식의 리스트. 셸 변수 path 에 잘 닮습니다만 포맷에 차이가 있습니다.

PWD (+)
    셸 변수 cwd 를 닮아 있습니다만, 셸 변수와는 동기 하고 있지 않습니다. 실제의 디렉토리 변경을 한 후에만 업데이트 됩니다.

REMOTEHOST (+)
    유저가 어느 호스트로부터 로그인하고 있는지를 나타냅니다 (리모트로부터의 로그인으로, 한편 이 쉘이 이러한 정보를 결정할 수 있는 경우). 쉘이 그처럼 컴파일 되고 있는 경우인 만큼 설정됩니다. version 셸 변수를 참조해 주세요.

SHLVL (+)
    shlvl 와 같습니다.

SYSTYPE (+)
    현재의 시스템 타입입니다. (Domain/OS 마셔)

TERM
    term 셸 변수와 같습니다.

TERMCAP
    단말의 케이파비리티 캐릭터 라인입니다. 단말 관리를 참조해 주세요.

USER
    user 셸 변수와 같습니다.

VENDOR (+)
    컴파일시로 결정된 vender명입니다.

VISUAL
    디폴트의 풀 스크린 에디터에의 패스명입니다. EDITOR 환경 변수와 run-fg-editor 편집 명령도 참조해 주세요.

관련 파일
/etc/csh.cshrc
    모든 쉘로 최초로 읽힙니다. ConvexOS, Stellix, Intel 에서는 /etc/cshrc 를 사용합니다. NeXTs 에서는 /etc/cshrc.std 를 사용합니다. A/UX, AMIX, Cray, IRIX 의 csh(1)는 이 파일을 읽지 않습니다만, 어쨌든 tcsh 에서는 이 파일이 읽힙니다. Solaris 2. x 도 이 파일을 가지지 않습니다만, tcsh 는 /etc/.cshrc 를 읽어들입니다. (+)
/etc/csh.login
    /etc/csh.cshrc 의 뒤에 로그인 쉘에 의해 읽힙니다. ConvexOS, Stellix, Intel 에서는 /etc/login 를 사용합니다. NeXTs 에서는 /etc/login.std 를 사용합니다. Solaris 2. x 에서는 /etc/.login 를 사용합니다. A/UX, AMIX, Cray, IRIX 에서는 /etc/cshrc 를 사용합니다.
~/.tcshrc (+)
    /etc/csh.cshrc 인가 거기에 상당하는 파일의 뒤에, 모든 쉘로 읽힙니다.
~/.cshrc
    ~/.tcshrc 가 존재하지 않으면, /etc/csh.cshrc 인가 거기에 상당하는 파일의 뒤에, 모든 쉘로 읽힙니다. 이 메뉴얼에서는 `~/.tcshrc'를 「`~/.tcshrc'인가 `~/.tcshrc'가 발견되지 않았던 경우의 ~/.cshrc'」 의 의미로 사용합니다.
~/.history
    savehist 가 설정되어 있는 경우는 ~/.tcshrc 의 뒤에 로그인 쉘에 의해 읽힙니다. 다만 histfile 의 부분도 참조해 주세요.
~/.login
    ~/.tcshrc 또는 ~/.history 의 뒤에 로그인 쉘에 의해 읽힙니다. 쉘은 ~/.login 를 ~/.tcshrc 와 ~/.history 의 뒤에가 아니고, 전에 읽어들이도록(듯이) 컴파일 되고 있을지도 모릅니다. version 셸 변수를 참조해 주세요.
~/.cshdirs (+)
    savedirs 가 설정되어 있는 경우에는, ~/.login 의 뒤에 로그인 쉘에 의해 읽힙니다. 다만 dirsfile 도 참조해 주세요.
/etc/csh.logout
    로그아웃시에 로그인 쉘에 의해 읽힙니다. ConvexOS, Stellix, Intel 에서는, /etc/logout 를 사용합니다. A/UX, AMIX, Cray, IRIX 에서는, csh(1)는 이것에 대응하는 파일을 가지지 않습니다만, 어쨌든 tcsh 는 이 파일을 읽습니다. Solaris 2. x 도 /etc/logout 를 가지고 있지 않습니다만, tcsh 는 /etc/.logout 를 읽어들입니다. (+)
~/.logout
    /etc/csh.logout 또는 그 상당 파일이 실행된 후에, 로그인 쉘에 의해 읽힙니다.
/bin/sh
    `#'로 시작되지 않는 셸 스크립트를 해석 실행하기 위해서 사용됩니다.
/tmp/sh*
    `<<'용무의 일시파일입니다.
/etc/passwd
    홈 디렉토리 `~name'를 대입하기 위한 정보원입니다.

스타트 업 파일의 읽을 차례는, 쉘의 컴파일시로 변경되고 있을지도 모릅니다. 스타트 업과 셧다운와 version 를 참조해 주세요.

신규 기능 (+)
이 메뉴얼에서는, tcsh 를 하나의 대상으로 해 기술해 왔습니다. 그러나 csh(1)의 경험자는, tcsh 의 새로운 기능에 특히 흥미가 있겠지요.

명령행 편집: GNU Emacs 스타일이나 vi(1)-스타일의 키 바인딩을 서포트하고 있습니다. 명령행 에디터와편집 커멘드를 참조해 주세요.

프로그래머블로 대화적인 단어 보완과 일람표시. 보완과 일람와 짜넣어 명령 complete, uncomplete 의 기술을 봐 주세요.

파일명, 명령, 변수명의스펠 정정 (그 쪽도 참조).

에디터 편집 명령 (그 쪽도 참조)로, 명령의 타입중에 다른 편리한 기능을 실행할 수 있습니다. 헬프 파일의 참조해 주세요 (run-help), 간편하게 에디터의 재기동 (run-fg-editor), 명령 해결 (which-command)등을 할 수 있습니다.

고성능화 된 역사 기능. 역사 리스트의 이벤트에 타임 스탬프를 붙여집니다. history 명령 및 거기에 관련하는 셸 변수, 역사 치환에 기술되고 있는, 이전에는 문서화되어 있지 않았다 `#'이벤트 기술자와 새로운 수정자, *-history, history-search-*, i-search-*, vi-search-*, toggle-literal-history 각 편집명령, 셸 변수 histlit 등도 참조해 주세요.

고성능화 된 디렉토리 해석 (parsing)과 디렉토리 스택 조작. cd, pushd, popd and dirs 명령와 그것들에 관련하는 셸 변수, 디렉토리 스택 치환에서의 설명, dirstack, owd, symlinks 셸 변수, normalize-command, normalize-path 편집 명령등을 참조해 주세요.

그로브파탄의 부정. 파일명 치환를 봐 주세요.

새로운 파일 문의 연산자 (그 쪽도 참조) (와)과 그것들을 이용하는 편입 명령 filetest.

스케이쥬링 된 이벤트, 특별한 앨리어스(alias), 자동 로그아웃, 단말의 락, 명령 기다려, 로그인과 로그아웃의 감시등 등을 포함한, 각종의자동 이벤트, 정기 이벤트, 시각 지정 이벤트 (각각의 항목을 참조).

고유 언어 시스템의 서포트 (고유 언어 시스템의 서포트를 봐 주세요), OS 고유의 각종 기능의 서포트 (OS 고유 기능의 서포트와 echo_style 셸 변수를 참조), 시스템 의존의 파일 배치 (관련 파일를 참조)

확장된 단말 관리 능력 (단말 관리를 참조).

builtins, hup, ls-F, newgrp, printenv, which, where 등이 새롭다 편입 명령 (각각의 항목을 참조).

새로운 변수. 쉘로부터 편리한 정보를 간단하게 입수할 수 있습니다. gid, loginsh, oid, shlvl, tcsh, tty, uid, version 셸 변수와 HOST, REMOTEHOST, VENDOR, OSTYPE, MACHTYPE 환경 변수. 각각의 설명을 봐 주세요.

유용한 정보를 prompt 캐릭터 라인에 묻고 넣기 위한 새로운 문장구조법 (prompt 를 참조). 루프와 스펠 정정용의 특별한 prompt (prompt2 와 prompt3 를 참조).

독해 전용의 변수 (변수 치환를 참조).

버그
중지 된 명령이 재개되었을 때에, 커런트 디렉토리가 기동되었을 때와 다른 경우에는, 기동시의 디렉토리를 표시합니다. 작업이 내부에서 디렉토리를 변경하는 일도 있으므로, 이것은 잘못한 정보를 주어 버릴지도 모릅니다.

쉘의 편입 기능은 정지, 재개할 수 없습니다. `a ; b ; c'와 같은 형태의 명령열을 정지시킬 때의 처리도 너무 품위있는 것이 아닙니다. `b'명령을 중지 시키면(자), 쉘은 즉석에서 `c'명령을 실행해 버립니다. alias 에서의 전개 결과를 실행하고 있을 때는, 특히 이 점에 주의가 필요합니다. 명령열을 ()의 안에 넣어, 서브 쉘에 집어넣어 버리는 것이 좋을 것입니다. 즉 `( a ; b ; c )'와 같이 합니다.

프로세스 개시 후의 단말 출력의 제어가 원시적입니다. 누군가가 가상 단말이 좋은 인터페이스를 만들어 주면 좋습니다만. 가상 단말 인터페이스의 분야에서는, 출력 제어에 관해서 재미있는 일을 많이 실시할 수 있을 것입니다.

앨리어스(alias) 치환이 쉘 수속의 시뮬레이트에 큰 일 좋게 이용됩니다만, 이것은 그다지 기분이 (들)물은 것이 아닙니다. 앨리어스(alias)보다 쉘 수속을 제공해야 합니다.

루프안의 명령은, 역사 리스트에 추가되지 않습니다. 제어 구조는, 편입 명령로서는 인식되지 않고, 단지 해석됩니다. 따라서 제어 명령은 어디에라도 둘 수가 있어 파이프 `|'와 함께도, `&'와 `;'와 같은 메타신탁스와 함께도 사용할 수 있습니다.

foreach 는 end 를 찾고 있을 때 히아드큐먼트를 무시하지 않습니다.

`:'수식자는, 명령 치환의 출력에 사용할 수 있어야 합니다.

dumb terminal와 같이, 단말이 커서를 위로 이동할 수 없는 경우에는, 스크린폭보다 긴 행의 갱신이 몹시 빈약합니다.

HPATH 와 NOREBIND 는 환경 변수일 필요는 없습니다.

`? '나 `*'나 `[]'를 사용하지 않는 그로브파탄이나, `{}'나 `~'를 사용하는 그로브파탄은, 부정이 올바르게 다루어지지 않습니다.

if 의 단일 명령 형식에서는, 비록 식이 가짜로, 명령이 실행되지 않았다고 해도, 리디렉트 출력을 해 버립니다.

ls-F 는 파일명을 정렬 할 때, 파일 식별 캐릭터를 계산에 넣어 버립니다. 또 파일명안의 제어 캐릭터를 올바르게 취급할 수가 없습니다. 중단시킬 수도 있습니다.

버그 리포트는 tcsh-bugs@mx.gw.com 까지 보내 주세요. 수정도 함께 배웅해 주실 수 있으면(자) 고맙겠습니다. 만약 tcsh 의 메인트넌스와 테스트를 도와 주시는 경우에는, 본문에 "subscribe tcsh <your name>" 와 일행 쓴 메일을 listserv@mx.gw.com 에 보내 주세요. "subscribe tcsh-bugs <your name>" 를 강독하면 모든 버그 리포트를 취득할 수 있습니다. "subscribe tcsh-diffs <your name>" 를 강독하면 개발 ML 에 참가할 수 있어 각 패치 레벨에서의 diff 를 입수할 수 있습니다.

tcsh 의 T 의 유래
1964 년 DEC 는 PDP-6 를 개발했습니다. 후에 PDP-10 가 재실장되었습니다. 1970 년 전후에 DEC 가 그 세컨드 모델 KI10 를 발표했을 때, 이것에는 DECsystem-10 라고 하는 새로운 이름이 붙여졌습니다.

TENEX 는 1972 년에 Bolt, Beranek & Newman (Massachusetts 주 Cambridge 의 씽크탱크)에 두어, 실험적인 디맨드 페이지형 가상기억 OS 로서 만들어졌습니다. 그들은 DEC PDP-10 용의 새로운 페이쟈를 구축해, 그것을 사용한 OS 를 만들었습니다. 이것은 학술 분야에서 매우 큰 성공을 거두었습니다.

1975 년 DEC 는 PDP-10 의 새로운 모델 KL10 를 발표했습니다. DEC 는 BBN 로부터 TENEX 의 라이센스를 받아 KL10 는 TENEX 판에만 할 생각이었습니다. DEC 는 그러한 버젼을 TOPS-20 라고 부르고 있었습니다 (대문자화는 상표입니다). 많은 TOPS-10 ("The OPerating System for PDP-10" 의 머리 글자입니다) 유저가 이것에 반대했습니다. 이렇게 해 DEC 는 같은 하드웨어에 두 호환성이 없는 시스템을 서포트해야 하게 되었습니다. --그렇지만 그 때 PDP-11 에는 6 개의 OS 가 있었습니다만!

TENEX 의 TOPS-20 는 버젼 3 까지, ULTCMD 로 불리는 유저 코드 레벨의 명령 보완 기능 써브루틴을 갖추고 있었습니다. 버젼 3 으로 DEC 는, 이러한 기능 모두와 한층 더 그 이상을 모니터 (Unix 로 말하는 곳(중)의 커널)에 추가해, COMND& JSYS (`Jump to SYStem'인스트럭션; 슈퍼바이저를 호출하는 기능 [내가 IBM 오름도 들켜 버렸다? ]) 그리고 액세스 할 수 있도록(듯이) 했습니다

tcsh 의 저자들은 TENEX 와 TOPS-20 에 있어서의 이러한 기능에 영향을 받아 이것을 모방한 판의 csh 를 작성했습니다.

제한
단어는 1024 캐릭터보다 길게 할 수 없습니다.

시스템은 인수 줄을 10240 캐릭터까지 제한하고 있습니다.

명령에게 주는 당겨 수의 수 (파일명 전개를 포함한다)는, 당겨 수리스트에 용서된 캐릭터수의 것 1/6 까지 제한되고 있습니다.

명령 치환에서는, 인수 리스트에 용서된 캐릭터수보다 많은 캐릭터수에 치환할 수 없습니다.

쉘은 루프를 검출하기 위해서, alias 치환의 회수를 1 행 당 20 에 제한하고 있습니다.

관련 항목
csh(1), emacs(1), ls(1), newgrp(1), sh(1), setpath(1), stty(1), su(1), tset(1), vi(1), x(1), access(2), execve(2), fork(2), killpg(2), pipe(2), setrlimit(2), sigvec(2), stat(2), umask(2), vfork(2), wait(2), malloc(3), setlocale(3), tty(4), a.out(5), termcap(5), environ(7), termio(7), Introduction to the C Shell

버젼
이 메뉴얼은 tcsh 6.11. 00 (Astron) 2001-09-02 에 관한 문서입니다.

저자
William Joy
    csh(1)의 오리지날 저자
J.E.  Kulp, IIASA, Laxenburg, Austria
    작업 컨트롤과 디렉토리 스택 기능
Ken Greer, HP Labs, 1981
    파일명 보완
Mike Ellis, Fairchild, 1983
    명령명 인식 / 보완
Paul Placeway, Ohio State CIS Dept., 1983-1993
    명령행 에디터, prompt routine, 새로운 그로브의 문법, 많은 수정과 스피드업
Karl Kleinpaste, CCI 1983-4
    특별한 앨리어스(alias), 디렉토리 스택의 꺼내기 기능, 로그인 / 로그아웃 감시, 스케줄 이벤트, 새로운 prompt 서식의 아이디어
Rayan Zachariassen, University of Toronto, 1984
    ls-F 와 which 의 짜넣어, 많은 바크 픽스, 수정과 스피드업
Chris Kingsley, Caltech
    고속 스토리지 allocater routine
Chris Grevstad, TRW, 1987
    4.3BSD csh 의 tcsh 에의 merge
Christos S.  Zoulas, Cornell U.  EE Dept., 1987-94
    HPUX, SVR2, SVR3 에 이식, SysV 판 getwd.c, SHORT_STRINGS 를 서포트, sh.glob.c 의 신버젼
James J Dempsey, BBN, and Paul Placeway, OSU, 1988
    A/UX 에 이식
Daniel Long, NNSC, 1988
    wordchars
Patrick Wolfe, Kuck and Associates, Inc., 1988
    vi 모드의 클린 업
David C Lawrence, Rensselaer Polytechnic Institute, 1989
    autolist 와 애매 보완의 일람
Alec Wolman, DEC, 1989
    prompt중의 개행
Matt Landau, BBN, 1989
    파일 ~/.tcshrc
Ray Moody, Purdue Physics, 1989
    스페이스 바의 마법에 따르는 역사 전개
Mordechai ????, Intel, 1989
    printprompt()의 수정과 추가
Kazuhiro Honda, Dept.  of Computer Science, Keio University, 1989
    자동 스펠 정정과 prompt3
Per Hedeland, Ellemtel, Sweden, 1990-
    다양한 버그 수정, 개량과 메뉴얼의 업데이트
Hans J.  Albertsson (Sun Sweden)
    ampm, settc, telltc
Michael Bloom
    세치기 핸들링의 수정
Michael Fine, Digital Equipment Corp
    확장 키의 서포트
Eric Schnoebelen, Convex, 1990
    Convex 서포트, csh 의 다수의 버그 수정, 디렉토리 스택의 보존과 복귀
Ron Flax, Apple, 1990
    A/UX 2.0 에의 (재) 이식
Dan Oscarsson, LTH Sweden, 1990
    NLS 서포트와 비 NLS 사이트용의 NLS 시뮬레이트 기능, 수정
Johan Widen, SICS Sweden, 1990
    shlvl, Mach 서포트, correct-line, 8 비트 표시
Matt Day, Sanyo Icon, 1990
    POSIX termio 서포트, SysV limit 수정
Jaap Vermeulen, Sequent, 1990-91
    vi 모드 수정, expand-line, 윈도우 변경의 수정, Symmetry 이식
Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991
    autolist beeping 옵션, 행의 선두로부터 커서까지의 모든 것을 대상으로 하는 역사 검색의 수정
Scott Krotz, Motorola, 1991
    Minix 에 이식
David Dawes, Sydney U.  Australia, Physics Dept., 1991
    SVR4 작업 컨트롤의 수정
Jose Sousa, Interactive Systems Corp., 1991
    확장 vi 의 수정, vi 데리트코만드
Marc Horowitz, MIT, 1991
    ANSIfication 의 수정, 새로운 exec 해시 코드, imake 의 수정, where
Bruce Sterling Woodcock, sterling@netcom.com, 1991-1995
    ETA 와 Pyramid 에의 이식, Makefile 와 lint 의 수정, ignoreeof=n 추가, 그 외의 다양한 이식성 향상을 위한 변경, 및 버그 수정
Jeff Fink, 1992
    complete-word-fwd 와 complete-word-back
Harry C.  Pulley, 1992
    Coherent 에 이식
Andy Phillips, Mullard Space Science Lab U.K., 1992
    VMS-POSIX 에 이식
Beto Appleton, IBM Corp., 1992
    이동 프로세스 그룹의 수정, csh 버그 수정, POSIX file tests, POSIX SIGHUP
Scott Bolte, Cray Computer Corp., 1992
    CSOS 에 이식
Kaveh R.  Ghazi, Rutgers University, 1992
    Tek, m88k, Titan 와 Masscomp 에의 이식과 수정, autoconf 서포트의 추가
Mark Linderman, Cornell University, 1992
    OS/2 에 이식
Mika Liljeberg, liljeber@kruuna.Helsinki.FI, 1992
    Linux 에 이식
Tim P.  Starrin, NASA Langley Research Center Operations, 1993
    독해 전용 변수
Dave Schweisguth, Yale University, 1993-4
    새로운 메뉴얼 페이지와 tcsh.man2html
Larry Schwimmer, Stanford University, 1993
    AFS 와 HESIOD 패치
Luke Mewburn, RMIT University, 1994-6
    prompt 중(안)에서의 디렉토리 표시의 확장, ellipsis 와 rprompt
Edward Hutchins, Silicon Graphics Inc., 1996
    암묵적인 cd 의 추가.
Martin Kraemer, 1997
    Siemens Nixdorf EBCDIC machine 에 이식
Amol Deshpande, Microsoft, 1997
    WIN32 (Windows/95 and Windows/NT)에 이식, 부족한 프로그램 라이브러리 모두와 메세지 카탈로그 코드의 모든 것을 작성해, Windows 와 통신할 수 있도록(듯이) 했다
Taga Nayuta, 1998
    색붙어 있는 ls 의 추가

사례
이하의 여러분에 감사합니다.
Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig, Diana Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky 그리고 제안과 응원을 해 준 오하이오주의 모든 여러분.

모든 버젼에 참아 버그 리포트를 보내 줘 제안과 신규 추가를 해 준 넷상의 모든 여러분.

"tcsh 의 T 의 유래" 의 장을 집필해 준 Richard M. Alderson III.

번역
t_ogawa <BYH06106@nifty.ne.jp>
누르는거야 <yasu@via2000.net>
~와 <yuko@veltec.co.jp>
모리 코지 <mori@tri.asanuma.co.jp>
NOKUBI Hirotaka <nokubi@ff.iij4u.or.jp>
나카노 타케오 <nakano@apm.seikei.ac.jp> (JM 프로젝트)
가게야마 <yt-kage@cb3.so-net.ne.jp>
나카무라화지＠코베 <kaz@kobe1995.net>
오오사와천민＠기후 <ohsawa@catv1.ccn-net.ne.jp>
쿠마가이전대 <kumagai@home.com>
(무순서)

번역에 해당해, JM 프로젝트의 분들의 협력을 받았습니다.