小编Got*_*bel的帖子

为什么在远程计算机上运行脚本时文件名包含问号?

我有一个小脚本,它只是获取当前日期,运行 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 调用,则不会出现问号。只有当我手动运行脚本时。

linux bash sftp shell-script

12
推荐指数
1
解决办法
4万
查看次数

如何启用名称服务器递归?

在 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) 不应返回拒绝状态。那么如何启用递归以便考虑姓氏服务器?

ubuntu dns dig resolv.conf

4
推荐指数
1
解决办法
2万
查看次数

搞砸了我的 bash 提示,发生了什么?

我只是想我可能会通过输入获取有关当前 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)

我想我知道这可能是什么(呈现提示的代码),但我不知道如何摆脱它。谁做?

bash prompt

3
推荐指数
1
解决办法
232
查看次数

标签 统计

bash ×2

dig ×1

dns ×1

linux ×1

prompt ×1

resolv.conf ×1

sftp ×1

shell-script ×1

ubuntu ×1