CLI에 cat deco.txt >> cat example.txt 프롬프트를 입력하면 실제로 어떤 일이 발생합니까?

CLI에 cat deco.txt >> cat example.txt 프롬프트를 입력하면 실제로 어떤 일이 발생합니까?

"demo"라는 단어만 포함된 텍스트 파일 데모.txt와 "sample"이라는 단어만 포함된 텍스트 파일 샘플.txt가 있다고 가정합니다.

내가 아는 한, 이는 cat demo.txt >> sample.txt데모.txt의 내용을 Sample.txt의 내용에 추가합니다.

하지만 리디렉션 기호 양쪽에 cat 명령이 있으면 어떻게 되나요? 단일 및 이중 리디렉션으로 동일한 작업을 시도했습니다. 나는 무언가를 재정의하지 않으려면 단일 리디렉션이 아닌 이중 리디렉션을 사용하고 싶다는 것을 충분히 조사했습니다. 나는 또한 cat 명령이 connect의 약자라는 것을 알고 있었습니다("cat" 명령이 txt 인쇄 "함수"로 두 배가 된다는 사실에 놀랐습니다).

cat demo.txt >> cat sample.txt어떻게 작동하는지 이해할 수 없습니다. 어떤 결과가 나와야 한다고 생각합니까?

답변1

리디렉션을 먼저 처리하고 이를 명령 및 해당 매개변수와 분리합니다. 단일 명령 내의 리디렉션 배치는 임의적입니다.

당신이 보여준 명령은,

cat demo.txt >> cat sample.txt

동등하다

cat demo.txt sample.txt >> cat

또는 원하는 경우

>> cat cat demo.txt sample.txt

이 명령은 전체적으로 두 파일 의 demo.txt연결 을 .sample.txtcat

셸은 cat추가를 위해 먼저 (리디렉션한 파일)을 열고, 아직 존재하지 않는 경우 생성한 다음, 명령의 표준 출력 스트림으로 사용합니다 cat demo.txt sample.txt.

관련된:


나는 리디렉션 연산자와 (이 경우) 파일 사이에 공백 없이 리디렉션을 작성하는 경향이 있습니다. 나는 또한 리디렉션을 마지막에 작성하는 경향이 있습니다.

cat demo.txt sample.txt >>cat

어떤 사람들은 명령 시작 부분에 입력 리디렉션을 작성하는 것을 좋아합니다.

<file.in cat >file.out

하지만 개인적으로 이상하게 보이기 때문에 사용하지 않습니다.

관련 정보