bash와 zsh에서 `> foo.txt`와 `< foo.txt`를 단독으로 사용하는 일반적인 규칙은 무엇입니까?

bash와 zsh에서 `> foo.txt`와 `< foo.txt`를 단독으로 사용하는 일반적인 규칙은 무엇입니까?

에서는 유효하지 않습니다 csh. bash및 에서 이들을 사용하는 일반적인 규칙은 무엇입니까 zsh?

답변1

Bash를 사용하면 명령 없는 리디렉션은 리디렉션을 수행한 다음 닫습니다.

  • < foo.txt그 자체로 명령줄을 사용하면 foo.txt읽기 위해 파일을 연 다음 닫습니다.
  • > foo.txt쓰기 위해 파일을 열고 foo.txt, 필요한 경우 생성하고, 자른 다음 닫습니다. 파일을 비우는 빠른 방법.

zsh를 사용하면 명령이 실행되지 않는 리디렉션 NULLCMD또는 READNULLCMD.

  • READNULLCMD(또는 NULLCMD`READNULLCMD가 설정되지 않은 경우) stdin 리디렉션의 경우:

    % echo foo > foo.txt
    % READNULLCMD=nl
    % < foo.txt
         1  foo
    
  • NULLCMDstdout 리디렉션의 경우:

    % NULLCMD='ls'
    % > foo.txt   # runs $NULLCMD
    % < foo.txt   # runs $READNULLCMD, showing the output of `NULLCMD` run previously
         1  Applications
         2  Desktop
         3  Documents
         4  Downloads
    

보다Zsh 7.3, 명령이 없는 리디렉션자세한 내용은 다음을 참조하세요.

간단한 명령이 하나 이상의 리디렉션 연산자와 0개 이상의 매개변수 할당으로 구성되지만 명령 이름은 없는 경우 zsh는 여러 방식으로 작동할 수 있습니다.

매개변수가 NULLCMD설정되지 않거나 옵션이 CSH_NULLCMD설정되면 오류가 발생합니다. 이것이csh동작이며 CSH_NULLCMD 에뮬레이트할 때 기본적으로 설정됩니다.csh.

옵션이 SH_NULLCMD설정되면 내장 기능이 :지정된 리디렉션과 함께 명령으로 삽입됩니다. 에뮬레이트할 때 기본값입니다.또는크쉬.

그렇지 않고 매개변수가 NULLCMD설정된 경우 해당 값은 지정된 리디렉션과 함께 명령으로 사용됩니다. NULLCMD및 가 모두 설정된 경우 READNULLCMD리디렉션이 입력일 때 전자 값 대신 후자의 값이 사용됩니다. 기본값은 NULLCMD' cat'이고 for READNULLCMD는 ' more'입니다. 따라서

< file

터미널인 경우 페이징을 사용하여 표준 출력에 파일 내용을 표시합니다. 쉘 기능을 참조할 수도 있습니다 NULLCMD.READNULLCMD

관련 정보