![貓和T卹有什麼差別?](https://rvso.com/image/913172/%E8%B2%93%E5%92%8CT%E5%8D%B9%E6%9C%89%E4%BB%80%E9%BA%BC%E5%B7%AE%E5%88%A5%EF%BC%9F.png)
我正在使用 Apache,php.ini
並獲得了它,因此當我使用具有該mail()
功能的 PHP 文件發送電子郵件時,它會將電子郵件保存在我的電腦上,這對於測試和 Web 開發人員都有好處。這是我在以下程式碼中新增的程式碼行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
when youmeancat
可能會覆蓋您想要讀取的文件,從而導致意外的資料遺失。
cat
tee
當您不給他們任何文件名時,行為類似。這就是你的例子中發生的情況;命令有輸出重定向( >
) 但沒有實際的命令列參數。當您確實傳遞cat
和tee
命令檔案名稱時,它們的行為彼此不同,甚至可能會在tee
您打算將檔案名稱傳遞到 時意外覆蓋檔案並丟失資料cat
。
原因是cat
,tee
在沒有任何參數的情況下執行相同的操作,但使用檔案名稱作為參數傳遞不同的操作,可以透過考慮每個操作的行為來辨別。一般來說,他們的行為幾乎相反。cat
讀取潛在的多個文件並將其輸出發送到一處,同時tee
讀取一個輸入並將其發送到潛在的多個文件。
貓
cat
將其所有輸入檔的內容複製到標準輸出, 一個接一個地。這就是說它連接了文件。例如,cat x y
輸出 的內容,x
然後輸出 的內容y
。當傳遞單一檔案名稱時,它會將該檔案的內容複製到標準輸出,然後由於沒有更多參數而停止。
當你跑步cat
時不檔案名,預設從自己的檔案名稱讀取標準輸入。基本上,這意味著它讀取任何內容管道式的或者重定向或以其他方式在終端機中輸入的任何內容。 (另一種表達方式是,在沒有文件名的情況下,cat
其行為類似於cat -
, 因為cat
,像其他各種命令一樣,-
特殊對待並用它來指定標準輸入。
球座
tee
將其標準輸入的內容複製到其所有輸出文件以及它自己的標準輸出。這就是說,它的功能就像一個T 型接頭——或者更準確地說,氮T 字路口氮是您傳遞給它的名稱的輸出檔案的數量。例如,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
.
與 不同的是cat
,該tee
指令不會將未取得檔名參數視為特殊情況。相反,只需將其輸入寫入全為零您為其指定名稱的文件的名稱,然後像往常一樣將其傳遞到其標準輸出。其效果是,與 一樣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
,否則它將用新輸入覆蓋當前內容。