如何在 运行 Freebsd OS 上的 psql 命令行上的脚本时将输出连同错误消息一起记录到文件中?

How to log the output along with error messages to a file while running a script on psql command line on Freebsd OS?

在 RHEL 上,以下命令有效: psql -h 主机名 -U 用户名 -p port_no -d 数据库 -f /tmp/myfile.sql &> logfile01.txt

在 FreeBSD 上,这会引发错误: "Invalid null command"

请推荐。

此重定向适用于 bash

&> logfile01.txt

,但它在 csh 中不起作用,它是 FreeBSD 中的 default shell

# set | grep shell
shell   /bin/csh
# ls -la &> logfile01.txt
Invalid null command.
默认情况下未安装

Bash。你可以install

pkg install bash

并将其配置为 default shell

如果您仅在命令行上使用它,则无需更改 shell。 要将 stdout 和 stderr 重定向到 C-Shell synthax 中的文件,只需使用 ">& filename".

不同的故事是,如果你想写 shell 脚本。 Bourne Shell 及其克隆(例如 Bash)更适合编写脚本。请参阅此 Unix 常见问题解答 "Csh Programming Considered Harmful":http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/