Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
“>;|”的含义在bash?_Bash_Io Redirection - Fatal编程技术网

“>;|”的含义在bash?

“>;|”的含义在bash?,bash,io-redirection,Bash,Io Redirection,在上,有一个部分包含一些代码,Windows用户可以将粘贴复制到他们的.bashrc中,以自动启动ssh代理 以下是他们提供的代码: env=~/.ssh/agent.env agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } agent_start () { (umask 077; ssh-agent >| "$env") . "$env" >| /dev/null

在上,有一个部分包含一些代码,Windows用户可以将粘贴复制到他们的
.bashrc
中,以自动启动
ssh代理

以下是他们提供的代码:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

|
符号的含义是什么?它与常规io重定向(如
)有何不同?

几乎相同,只是它将覆盖现有的常规文件

只有在具备以下条件时,您才能看到差异:

set -o noclobber

否则,
|
将覆盖现有的常规文件。

是一个输出运算符,允许销毁文件(如果存在)

资料来源:

来自:

noclobber
选项可用于避免使用输出重定向覆盖现有文件(请参见设置内置)。“>|”重定向运算符可用于重写noclobber

如果您这样做:

set -o noclobber
echo > file
然后,如果执行前存在文件
文件
,则第二个命令将失败。您可以使用
>|

set -o noclobber
echo >| file

即使设置了
noclobber
选项,也会覆盖
文件(如果存在)。我很少看到
|
noclobber
选项。通常人们
[-f file]
会检查该文件是否存在。

我很确定这就是输出目录。但是我不使用bash,你可以在这里找到你的答案:这是正确的,但是写OP脚本的人似乎有点过火了;至少在我的系统上,
noclobber
选项对于普通的
/dev/null
没有问题。