Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何对bash命令使用/dev/null_Linux_Bash_Su - Fatal编程技术网

Linux 如何对bash命令使用/dev/null

Linux 如何对bash命令使用/dev/null,linux,bash,su,Linux,Bash,Su,我正在使用下面的命令获取SQL查询的结果 su - postgres -c 'psql -d dbname' with stdin "COPY ( my SQL query ) TO STDOUT WITH CSV HEADER" 这在我的服务器上运行良好,但在不同的机器上,它正在打印带有SQL查询输出的bash警告 su - postgres -c 'psql -d dbname' with stdin "COPY ( my SQL query ) TO STDOUT WITH CSV HE

我正在使用下面的命令获取SQL查询的结果

su - postgres -c 'psql -d dbname' with stdin "COPY ( my SQL query ) TO STDOUT WITH CSV HEADER"
这在我的服务器上运行良好,但在不同的机器上,它正在打印带有SQL查询输出的bash警告

su - postgres -c 'psql -d dbname' with stdin "COPY ( my SQL query ) TO STDOUT WITH CSV HEADER"
比如说-

/etc/profile: line 46: HISTSIZE: readonly variable
/etc/profile: line 50: HISTCONTROL: readonly variable
/etc/profile.d/20-tmout.sh: line 1: TMOUT: readonly variable
/etc/profile.d/history.sh: line 6: hcmnt_tty: readonly variable
name
abc
无论如何,请让我知道,这样我就可以跳过上面的警告消息,只获取数据

如果我想在本例中使用/dev/null,那么如何修改上述命令以仅获取数据。

如果您的意思是“如何仅放弃错误输出?”,那么方法是将标准错误流重定向到遗忘(
/dev/null
),如下所示:

您的命令2>/dev/null
这样,如果命令将数据输出到standard out,它将通过,但任何到standard error套接字的输出都将被丢弃,因此您将看不到这些错误消息


顺便说一下,
2
这是一个标准错误的速记文件描述符。

很抱歉,这是未测试的,但我遇到了相同的错误,您的db会话不是读/写的。您可以将这些语句回显到psql,以强制执行正确的会话,如下所示。我不确定stdin会如何影响

echo 'SET TRANSACTION READ WRITE; SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE ; COPY ( my SQL query ) TO STDOUT WITH CSV HEADER' | su - postgres -c 'psql -d dbname' with stdin 
小心-bash-hack

su - postgres -c 'psql -d dbname' with stdin "COPY ( my SQL query ) TO STDOUT WITH CSV HEADER" | grep -v "readonly"

我不认为将数据隐藏起来是理想的效果here@EliranMalka-我在命令后面提到了2>/dev/null,它不会显示与使用psql的SQL命令相关的stderr。或者我是否可以跳过与/etc/profile相关的su-postgres的警告。我不知道这种方式,也许一些psql/postgres专家会分享她的知识。。