“>;|”的含义在bash?
在上,有一个部分包含一些代码,Windows用户可以将粘贴复制到他们的“>;|”的含义在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
.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
没有问题。