터미널 명령에서`>>`는 무엇을 의미합니까?


14

나는 지금 아래에 주어진 명령을 보았습니다.

$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile

내가 추측 할 수 있듯이, 아마도 .bash_profile의 변경 사항을 커밋하는 데 사용되지만 정확히 무엇을 사용합니까?


26
미래에 개선해야 할 점을 알려 드리기 위해 : man bash공식적인 언어로 작성되었으므로 이해하기 어려울 수 있습니다. 반면에이 문구 bash >>는 Google에서 유용한 링크를 거의 반환하지 않습니다. Google에 의존하지 않고 지식을 모으고 싶다는 것은 사실입니다. 이런 이유로 쉽게 검색 할 수있는 질문도 적합 할 수 있습니다. 그러나 귀하가 답변을 바로 제공하지 않았거나 ( 내 질문에 대답 할 수 있습니까? 참조 ) 기존 리소스를 지적했거나 (이해하기 위해 도움이 필요할 수 있음) 사실은 연구가 부족함을 나타냅니다.
Kamil Maciorowski

5
명령 행 리디렉션 연산자에 대한 자세한 개요는 unix.stackexchange.com/q/159513/85039
Sergiy Kolodyazhnyy 2018 년

답변:


31

이전에 프로그램의 표준 출력을 재지 정하고 >>이후에 지정된 파일에 추가합니다.


28
"프로그램 전"무슨 뜻입니까? 분명히 명령하지만 리디렉션을 미리 추가 할 수도 있습니다. 즉>> file command
rexkogitans

예입니다. Ubuntu 18.04에서 "apt search rust >> x"를 입력 할 수 있습니다. "apt search rust"부분은 rust라는 용어에 대해 사용 가능한 패키지를 검색 한 다음이를 표준 출력 (일반적으로이 경우 터미널)으로 보냅니다. 그러나 ">> x"는 출력을 파일 "x"의 끝으로 경로 재 지정합니다. 파일을 바꾸고 싶을 때는 하나의 ">"만 있으면됩니다.
NomadMaker

@rexkogitans 코드를 읽기 어렵게 만들고 싶다면 명령 도중에도 마찬가지입니다. 라는 파일에 echo a b >> c d추가 a b d됩니다 c.
kasperd

@kasperd 또한 stdin 리디렉션을 임의의 순서로 추가로 뿌릴 수 있습니다.
rexkogitans

48

짧은 대답 — 무엇을 >>합니까?

을 사용 >>하여 명령 출력을 파일에 추가합니다.

예제 명령은 기본적으로 여러 부분으로 구성됩니다.

명령 >> 파일 이름

따라서의 출력은에 command추가됩니다 filename.


의 경우에는 어떻게됩니까 echo?

특정한 경우, echo "…"명령은 입력 인수를 "표준 출력 디스크립터"인 "stdout"으로 출력합니다. 입력 인수 echo뒤에 줄 바꿈 ( \n) 이 오므 로 줄 바꿈이 발생합니다.

여기서 "표준 출력 설명자"는 명령을 실행할 때 셸에 표시되는 출력 스트림에 지나지 않습니다. (즉, 입력 echo foo하고 Enter 키 foo\n를 누르면 echo명령 의 실제 출력이며 쉘 foo에 줄 바꿈 이 표시됩니다 .)

기본적으로 명령 줄에 쓰는 것은 stdout을 사용하고 있습니다. 일반적으로 오류 메시지에 사용되는“stderr”이라는 다른 설명자가 있습니다. 또한 stdout처럼 인쇄되므로 때때로 산재 될 수 있습니다. 그리고 입력에 사용되는 stdin 디스크립터가 있습니다. 자세한 내용은 이 기사 를 참조하십시오.

쉘에서 출력을 어떻게 리디렉션합니까?

항상 stdout을 파일 디스크립터로 경로 지정할 수 있으며 , 다음 연산자 중 하나를 사용하여 수행 할 수 있습니다.

  • >파일 설명 자로 리디렉션합니다. 존재하지 않는 파일을 작성하거나 이미 존재하는 경우 파일을 쓰기 전에 잘립니다. 따라서 파일은 stdout으로 겹쳐 쓰입니다.

  • >>파일 디스크립터에 추가합니다. 파일이 없으면 작성합니다.

2>또는 2>>유사한 방식으로 stderr을 리디렉션 할 수도 있습니다 . 또는 stderr과 stdout을 하나의 파일로 결합 할 수 있습니다 2>&1. 리디렉션 및 예제에 대한 자세한 내용은 이 작은 자습서를 참조하십시오 .

특정 쉘 코드가 무엇을 의미하는지 어떻게 알 수 있습니까?

일반적으로, 당신은 시도 할 수 있습니다 explainshell.com 특정 쉘 명령에 대해 당신에게 시각적 인지도와 정보를 제공합니다.


7

에 대한 TLDR의 단지 예를 보려면 좋아하는 사람;

>> 이전의 명령의 표준 출력 (오류 아님)은 이름을 지정한 파일의 끝에 추가됩니다.

따라서 "flintstones.txt"파일에

Fred
Barney

echo Dino >> flintstones.txt 파일 끝에 'Dino'가 추가됩니다.

Fred
Barney
Dino

오른쪽 화살표 하나만 사용하면 echo Dino > flintstones.txt내용을 보여주는 예제를 추가하는 것이 좋습니다 Dino.
JakeGould

-2

다시 한 번하면

> somefile.txt

파일의 전체 내용이 지워집니다.


다른 답변을 왜 복사합니까?
토토

@ 토토 나는 그렇게 생각하지 않습니다. 그것은 합리적이고 매우 귀중한 것 같습니다.
Volker Siegel

트윗 담아 가기 더 자세히 보면 실제로는 그렇지 않습니다. 여러 측면에서도 잘못되었습니다. 홀수-그는 여기에 새로 생겼지 만 다른 곳에서는 활동적입니다. 아마 트롤링 만이 아닙니다.
Volker Siegel 2016 년

2
@VolkerSiegel : > file파일을 지우지 만 >> file아무 것도하지 않습니다.
토토

그러나 이것은 어떤 식 으로든 질문에 대답하지 않으며 주석이어야합니다.
phuclv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.