고양이와 티의 차이점은 무엇인가요?

고양이와 티의 차이점은 무엇인가요?

저는 Apache를 가지고 놀다 php.ini가 그것을 얻었습니다. PHP 파일로 이메일을 보내면 mail()내 컴퓨터에 이메일을 저장하는 기능이 있어서 테스트와 웹 개발자에게 좋습니다. 다음은 내가 추가한 코드 줄입니다 php.ini.

sendmail_path = "cat > /home/cam/Documents/TestEmails/`date '+%Y-%m-%d - %H-%M-%S'`.eml"

또한 다음 코드 줄도 작동했습니다.

sendmail_path = "tee > /home/cam/Documents/TestEmails/`date '+%Y-%m-%d - %H-%M-%S'`.eml"

cat이들명령 그리고 명령 의 차이점은 무엇인가요 tee?

답변1

요약: cat이름을 전달한 파일에서 읽지만 tee씁니다. 파일 이름을 전달하지 않는 경우에만 동일한 효과가 나타납니다. 그렇지 않은 tee경우에 사용하면 cat읽으려고 했던 파일을 덮어쓰게 되어 실수로 데이터가 손실될 수 있습니다.

cattee파일 이름을 지정하지 않으면 똑같이 행동합니다 . 이것이 바로 귀하의 예에서 일어나는 일입니다. 명령에는출력 리디렉션( >)이지만 실제 명령줄 인수는 없습니다. cat및 명령의 파일 이름을 전달하면 tee서로 다르게 동작하며 에 전달하려고 tee했는데 이름을 에 전달하여 실수로 파일을 덮어쓰고 데이터를 잃을 수도 있습니다 cat.

그 이유는 cat인수 tee없이 동일한 작업을 수행하지만 인수로 전달된 파일 이름을 사용하여 다른 작업을 수행하는 것은 각각의 동작을 고려하여 식별할 수 있습니다. 일반적으로 그들은 거의 반대되는 행동을 보입니다. cat잠재적으로 많은 파일을 읽고 해당 출력을 한 곳으로 보내는 반면, tee하나의 입력을 읽고 잠재적으로 많은 파일로 보냅니다.

고양이

cat모든 입력 파일의 내용을 다음으로 복사합니다.표준 출력, 차례로. 즉, 파일을 연결한다는 뜻입니다. 예를 들어 는 의 내용 뒤에 의 cat x y내용을 출력합니다 . 단일 파일 이름이 전달되면 해당 파일의 내용을 표준 출력으로 복사한 다음 더 이상 인수가 없으므로 중지됩니다.xy

cat당신이 함께 실행할 때아니요파일 이름은 기본적으로 자체 파일 이름에서 읽는 것입니다.표준 입력. 기본적으로 이는 무엇이든 읽는다는 의미입니다.파이프로 연결된또는리디렉션됨또는 터미널에 입력되는 모든 것. (또 다른 표현은 파일 이름이 없으면 다음 cat과 같이 동작한다는 것입니다 .cat -cat다른 다양한 명령처럼, -특별하게 취급하여 표준 입력을 지정하는 데 사용됩니다.)

tee표준 입력의 내용을 모든 출력 파일에 복사합니다.자체 표준 출력뿐만 아니라. 즉, 다음과 같은 기능을 한다는 뜻이다.T-접합--또는 더 정확하게는NT-접합N이름을 전달한 출력 파일의 수입니다. 예를 들어, tee x는 입력을 읽고 파일에 쓰고 x자체 표준 출력에도 씁니다. tee x y입력을 읽고 파일에 쓴 x다음또한파일에 추가 y하고 자체 표준 출력에도 씁니다.

의 가장 일반적인 용도는 tee단일 파일 이름 인수를 사용하여 파이프라인에 삽입하는 것입니다. 예를 들어, 호출된 명령의 출력을 라는 foo명령의 입력으로 파이프한다고 가정해 보겠습니다 bar. 당신은 쓸 수 있습니다 foo | bar. 그러나 logfile검사할 수 있도록 출력을 이라는 파일에 기록하려는 경우 foo | tee logfile | bar.

tee옵션을 전달하지 않는 한 이름을 지정한 파일을 덮어씁니다. -a이 경우 해당 파일에 추가됩니다. 예를 들어 해당 로그를 덮어쓰는 대신 해당 로그에 추가하려면 foo | tee -a logfile | bar.

와 달리 cattee명령은 파일 이름 인수가 없는 것을 특별한 경우로 처리하지 않습니다. 대신, 단순히 입력을 다음과 같이 씁니다.모두 제로이름을 지정한 파일을 선택한 다음 평소대로 표준 출력에 전달합니다. 결과적으로 와 마찬가지로 파일 이름 없이 cat실행하면 표준 입력도 표준 출력으로 복사됩니다.tee

표준 입력을 표준 출력으로 복사하려는 경우 문화는 cat을 선호합니다.

cat이 목적을 위해 인수 없이 또는 중 하나를 사용할 수 있지만 tee, 사용하면 cat사람들은 무슨 뜻인지 알게 될 것입니다. tee인수가 없으면 괜찮지만외모실수처럼. 때때로 이것은 cat다음과 같은 말로 설명됩니다.관용적인그것을하는 방법.

cat와 에서 지원되는 명령줄 옵션이 tee다르다는 점도 참고하세요. 그들은 대부분 다른 일을 하고 따라서 그들의 행동을 완전히 다른 방식으로 맞춤화할 수 있기 때문에 아마도 이것을 기대할 것입니다. 보다man cat그리고man tee자세한 내용은 특히 이것에 대해.

답변2

요약하자면 cat읽기용입니다(수동 입력그리고파일) 및 파일에 쓰기( >및 사용). >>그리고 tee단지 파일에 쓰는 것에 관한 것입니다.동시에입력 방법을 제공하는 명령의 출력에 따라.

예를 들어:

  • ping 192.168.1.xx | tee [-a] ping_report.txt

위에 표시된 명령을 사용하면 다음을 수행할 수 있습니다.동시에ping명령 의 출력을 확인하세요그리고해당 출력은 파일에 기록됩니다 ping_report.txt(물론 나중에 분석됩니다). 매개변수를 사용 하면 -a입력(첫 번째 명령의 출력)이 파일에 추가되고 ping_report.txt, 그렇지 않으면 새 입력으로 현재 내용을 재정의합니다.

관련 정보