>> file command
그것은 모든 것을 의미합니까? stdout
커맨드뿐만 아니라 리디렉션됩니까?
이러한 리디렉션은 간단한 명령에 영향을줍니다. 에서 man 1 bash
:
명령이 실행되기 전에 쉘에서 해석 한 특수 표기법을 사용하여 입출력을 재 지정할 수 있습니다. [...] 다음 리다이렉션 연산자는 간단한 명령 내에서 선행하거나 나타날 수 있습니다. 리다이렉션은 왼쪽에서 오른쪽으로 나타나는 순서대로 처리됩니다.
"다음 리디렉션 연산자"는 다음과 같습니다. [n]<word
, [n]>word
, [n]>>word
기타
간단한 명령은 공백으로 구분 된 단어와 리디렉션 뒤에 오는 선택적 변수 지정 순서로, 제어 연산자로 종료됩니다.
과
제어 운영자
제어 기능을 수행하는 토큰. 다음 기호 중 하나입니다.
||
&
&&
;
;;
(
)
|
|&
& lt; 새 줄 & gt;
즉, 다음 명령은 동일합니다.
echo Some text >> file
echo Some >> file text
echo >> file Some text
>> file echo Some text
질문에 태그가 지정되었습니다. 세게 때리다 나는 인용한다. man 1 bash
하지만 위 명령은 sh
게다가.
명령 줄 파서는 명령을 실행하기 전에 모든 리디렉션을 "제공"해야합니다 (예 : 이러한 리디렉션을 제거한 명령). 그것에 대해 생각해보십시오. 절차는 특정 리디렉션의 위치와 관계없이 동일합니다. 맨 마지막에있을 필요는 없습니다.
언제 그리고 왜 순서를 바꾸겠습니까?
나는 중간에 방향 전환을 원했던 상황을 상기하지 않습니다. 그러나 처음에는 입력 리디렉션을 사용하는 것이 유용합니다. 다음 코드를 고려하십시오.
grep foo file | tail | …
파이프가 매우 길다고 상상해보십시오. 수퍼 유저에게 게시되어 문제를 해결합니다. 그것을 당신의 콘솔에 붙이고 그것을 실행할 수 있습니다. 당신이 오히려 추가하다 일부 명령이나 파이프에? 예 : 당신은 얻고 싶어 :
my_custom_command | grep foo | tail | …
# ^^^^^^^^^^^^^^^^^^^ this is the part you'd be happy to paste
제거해야합니다. file
복사 된 명령에서. 이런 이유로 일부 사용자는 다음과 같은 명령을 게시하는 것을 선호합니다.
cat file | grep foo | tail | …
# ^^^^^^^^^^^^^^^^^^^ it's easy to copy this
# ^^^^^^^^^^^^^^^^^^^^^ or even this
다른 상황에서는 이것이 전혀 쓸모없는 것입니다. cat
. 어떤 사람들은 상황에 관계없이 여전히 그것이라고 말할 것입니다. 어때?
< file grep foo | tail | …
# ^^^^^^^^^^^^^^^^^^^ it's easy to copy this
아니 cat
과 편리한 형태!
echo Some text >file
과>file echo Some text
결과가 다르다.