我有一个小脚本,它只是获取当前日期,运行 PHP 脚本并将输出(和错误)重定向到包含当前日期的文件名。
DATE=$(date +"%Y%m%d")
FILE="log/${DATE}.log"
php -q script.php >> $FILE 2>&1
Run Code Online (Sandbox Code Playgroud)
当我在本地计算机(Windows 7、Aptana IDE)上运行此脚本时,PHP 脚本运行良好,日志文件具有预期的文件名,例如20140502.log
.
但是当我通过 SFTP 将该脚本推送到我的远程机器并执行该脚本时,文件名如下所示:
20140502?.log?
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?这是一个编码错误吗(例如,SFTP 上传的编码是 ANSII,其中需要 UTF-8)?还是我必须更改脚本本身的任何内容?
有关系统/外壳的信息:
[foo@bar path]$ sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Run Code Online (Sandbox Code Playgroud)
有趣的事实:如果该脚本由 cronjob 调用,则不会出现问号。只有当我手动运行脚本时。
在 Ubuntu 14.04 上,当我执行
dig google.de
Run Code Online (Sandbox Code Playgroud)
在我的机器上,我得到一个REFUSED
状态(减少到相关行):
me@machine:~# dig google.de
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 26926
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
Run Code Online (Sandbox Code Playgroud)
我/etc/resolv.conf
知道三个域名服务器:
nameserver 1.2.3.4
nameserver 1.2.3.5
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
其中前两个是公司拥有的名称服务器。但至少最后一个 ( 8.8.8.8
) 不应返回拒绝状态。那么如何启用递归以便考虑姓氏服务器?
我只是想我可能会通过输入获取有关当前 bash 的版本信息
bash -v
Run Code Online (Sandbox Code Playgroud)
这给标准输出带来了多行代码,并给我留下了一行出现在我通常的提示正上方的行
printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
[foo@bar path]$
Run Code Online (Sandbox Code Playgroud)
我想我知道这可能是什么(呈现提示的代码),但我不知道如何摆脱它。谁做?