Pet*_*ter 5 php email command-line apache2
我在玩 Apachephp.ini
并得到了它,所以当我发送带有 PHP 文件的电子邮件时,该文件具有mail()
将电子邮件保存在我的计算机上的功能,这对测试和 Web 开发人员都有好处。这是我添加的代码行php.ini
:
sendmail_path = "cat > /home/cam/Documents/TestEmails/`date '+%Y-%m-%d - %H-%M-%S'`.eml"
Run Code Online (Sandbox Code Playgroud)
这行代码也有效:
sendmail_path = "tee > /home/cam/Documents/TestEmails/`date '+%Y-%m-%d - %H-%M-%S'`.eml"
Run Code Online (Sandbox Code Playgroud)
cat
和tee
命令有什么区别?
TL;DR:
cat
从你传递它的名字的文件中读取,但tee
写入它们。只有当您不向它们传递文件名时,它们才具有相同的效果。否则,使用tee
when you meancat
可能会覆盖您要读取的文件,从而导致数据意外丢失。
cat
和tee
行为一样,当你不给他们任何文件名。这就是你的例子中发生的事情;这些命令有输出重定向( >
) 但没有实际的命令行参数。当您确实传递cat
和tee
命令文件名时,它们的行为彼此不同,您甚至可以通过将它们的名称传递给tee
您打算将它们传递给cat
.
原因cat
和tee
不带任何参数做同样的事情,但不同的事情以文件名作为参数传递,可以通过考虑每个人的行为来辨别。一般来说,他们有几乎相反的行为。cat
读取潜在的许多文件并将其输出发送到一个地方,同时tee
读取一个输入并将其发送到潜在的许多文件。
cat
将其所有输入文件的内容一个接一个地复制到标准输出。这就是说它连接文件。例如,cat x y
输出 的内容x
后跟 的内容y
。当传递单个文件名时,它将该文件的内容复制到标准输出,然后,由于它没有更多参数,因此停止。
当您在没有文件名的情况下运行cat
时,它默认从它自己的标准输入中读取。基本上,这意味着它读取通过管道传输或重定向到它的任何内容,或者以其他方式输入到终端中的任何内容。(另一种说法是,在没有文件名的情况下,其行为类似于, 因为,就像其他各种命令一样,进行特殊处理并将其用于指定标准输入。)cat
cat -
cat
-
tee
将其标准输入的内容复制到它的所有输出文件以及它自己的标准输出。这就是说它的功能就像一个T 形接头——或者更准确地说,是N 个T 形接头,其中N是您传递给它的名称的输出文件的数量。例如,tee x
读取其输入,将其写入 file 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
或tee
不使用任何参数,但如果您使用,cat
那么人们就会知道您的意思。tee
没有参数很好,但它看起来像一个错误。有时这是通过说这cat
是惯用的方式来描述的。
另请注意,cat
和支持的命令行选项tee
是不同的。你可能会期待这一点,因为他们大多做不同的事情,因此能够以完全不同的方式定制他们的行为。请参阅man cat
和man tee
了解详细信息,尤其是关于此的。
归档时间: |
|
查看次数: |
2970 次 |
最近记录: |