Stupid Short: Bash의 |, >, >>, <, 2>>, 2> 연산자

이것은 > , 1> , >> , 1>> , < , 2>> , 2>> 와 같은 Bash 연산자를 빠르게 이해하기 위한 어리석고 짧은 소개 및 참조 가이드입니다. 이것은 주로 한 문장과 예제로 수행됩니다.

이 가이드는 다음과 같이 가정합니다.
  • ... Bash 터미널을 사용하고 있습니다. (OS는 관련 없음)
  • ... CLI 사용 및 탐색에 익숙합니다.
  • ... Bash 프로그램 인수/플래그/옵션의 개념에 익숙합니다.

  • 내용물


  • Mostly-Short Explanation of Fundamentals
  • Vocab for Stupid-Short List
  • Stupid-Short Explanations List

  • Note: For this blog, we will assume we are only writing and reading files.




    대부분 짧은 기초

    Admittedly, I never bothered to look up what the | > >> and < operators do in Linux until well into my programming career. If you've ever followed GitHub's instructions for adding an SSH key to your account, then you've already used are called Redirect Operators!

    프로그램의 기초



    프로그램에는 해당 번호가 있는 세 개의 입력 및 출력 스트림이 있습니다. 표준 입력(STDIN)(0), 표준 출력(STDOUT)(1) 및 표준 오류(STDERR)(2)가 있습니다.



    Note: My beautiful picture is only showing convention. If you build your own program, you can effectively name streams whatever you'd like and stream to whatever output. You don't know that though. If you do, act like you don't and read on.



    예: 좋은 일을 하자'ls . 오류가 없는 경우ls 입력은 ./이고(Bash는 현재 디렉터리가 비어 있다고 가정함) stdout은 표시되는 디렉터리 목록이고 stderr은 아무것도 아닙니다(잡아야 할 오류가 없기 때문).

    프로그램은 stdout과 stderr을 모두 스트리밍합니다. 이것은 "stdout 또는 stderr"이 아니라 "stdout 및 stderr"이기 때문입니다. ls presentDir notPresentDir를 실행하면 stdout과 stderr이 모두 표시됩니다.

    기본적으로 stdout, stderr 및 stdin은 모두 터미널에 있습니다. 이러한 리디렉션 연산자를 사용하면 단순히 해당 스트림을 다른 곳으로 리디렉션할 수 있습니다.


    어휘

    "program": This is what executables are called in terminal. Every time you cd or ls , you're running a program.
    cat : Program that prints the contents of a given file.
    wc -w : Program that outputs the count of words in a file.
    pbc : My alias for xclip -selection clipboard . For Mac folks, this is the exact same thing as pbcopy .
    pbp : My alias for pasting clipboard.


    Stupid-Short List

    ⭐️ The redirect operators have three numbers correlating with the output: 0 = input, 1 = output, 2 = error. If no number is given, this defaults to 1.
    ⭐️ If the file does not exist, these operators create the file.

    > 주어진 파일에 stdout을 씁니다.



    터미널에서 인쇄하는 대신 stdout을 지정된 파일로 보냅니다.

    $ ls -1 > list.txt
    
    $ cat list.txt
    lubbock.txt
    odessa.txt
    baird.txt
    



    >> 주어진 파일에 stdout을 추가합니다.



    파일 내용을 바꾸지 않고 파일 내용에 stdout을 추가합니다.

    $ echo "Flamingo" >> favorite-birds.txt
    
    $ cat favorite-birds.txt
    Cardinal
    Penguin
    Flamingo
    



    < stdin으로 파일 리디렉션



    파일의 내용을 stdin으로 전달합니다.
    예: wc -w book.txt 를 사용하면 프로그램은 단어 수와 book.txt 파일 이름을 출력합니다(예: 2394 book.txt ).wc -w < book.txt를 사용하면 book.txt의 내용을 입력으로 "전달"하므로 wc -w < book.txt는 마치 터미널에 전체를 입력한 것처럼 숫자( 2394 )만 반환합니다.

    $ wc -w book.txt
    2394 book.txt
    
    $ wc -w < book.txt
    2394
    



    2> : stderr을 지정된 파일로 리디렉션합니다.



    오류가 있으면 터미널에서 인쇄하는 대신 표준 오류를 파일로 리디렉션하십시오.

    $ ls cuteDogPics 2> example.txt
    
    $ cat example.txt
    ls: cuteDogPics: No such file or directory
    



    2>> : 주어진 파일에 stderr을 추가합니다.


    >>> 와 똑같습니다. 단, stderr은 예외입니다.

    $ cp ~/Documents/Reports/June2019.xlsx ~/Desktop 2>> ~/error.log
    
    $ cat ~/error.log
    cp: /Users/bananabrann/Reports/January2019.xlsx: No such file or directory
    cp: /Users/bananabrann/Reports/March2019.xlsx: No such file or directory
    cp: /Users/bananabrann/Reports/June2019.xlsx: No such file or directory
    
    



    | : 다음 프로그램을 위해 stdout을 stdin으로 사용하십시오.


    |의 왼쪽 프로그램의 stdout을 오른쪽 프로그램의 stdin으로 사용하십시오.

    $ ls -1
    buffalo-gap.txt
    abilene.txt
    clyde.txt
    lubbock.txt
    
    $ ls -1 | head -2
    buffalo-gap.txt
    abilene.txt
    



    데이지 체인 가능


    | 를 사용하면 궁극적으로 원하는 결과를 얻고자 하는 만큼 많은 프로그램을 연결할 수 있습니다.
    아래 그림에서 grep 프로그램의 stdout을 가져와 head의 stdin과 해당 인수로 보냅니다. 그런 다음 해당 stdout을 tail의 stdin으로 보낸 다음 마지막으로 stdout을 guestlist.txt로 리디렉션합니다.




    이것이 누군가에게 도움이 되었거나, 누군가가 이 오퍼레이터와 함께 놀고 스스로 더 연구하는 데 관심을 갖게 되기를 바랍니다!

    행복한 코딩! 🍻

    좋은 웹페이지 즐겨찾기