要将stdout重定向到Bash中的截断文件,我知道要使用:
cmd > file.txt
Run Code Online (Sandbox Code Playgroud)
要在Bash中重定向stdout,追加到文件,我知道要使用:
cmd >> file.txt
Run Code Online (Sandbox Code Playgroud)
要将stdout和stderr重定向到截断的文件,我知道要使用:
cmd &> file.txt
Run Code Online (Sandbox Code Playgroud)
如何重定向附加到文件的stdout和stderr?cmd &>> file.txt
不适合我.
git clone
它的输出写到stderr
作为记录在这里.我可以使用以下命令重定向它:
git clone https://myrepo c:\repo 2>&1
Run Code Online (Sandbox Code Playgroud)
但是这会将所有输出(包括错误)重定向stderr
到stdout
.有没有办法将进度消息重定向到stdout
但仍然写入错误消息stderr
.
我正在编写一个脚本来为我的博客生成草稿.运行ShellCheck后,我一直看到弹出这个错误.这是什么意思,有人可以提供一个例子吗?
SC2129: Consider using { cmd1; cmd2; } >> file instead of individual redirects.
另外,我不确定我需要做什么才能将值传递$title
给"Title"
帖子的YAML中的字段......
#!/bin/bash
# Set some variables
var site_path=~/Documents/Blog
drafts_path=~/Documents/Blog/_drafts
title="$title"
# Create the filename
title=$("$title" | "awk {print tolower($0)}")
filename="$title.markdown"
file_path="$drafts_path/$filename"
echo "File path: $file_path"
# Create the file, Add metadata fields
echo "---" > "$file_path"
{
echo "title: \"$title\""
} >> "$file_path"
echo "layout: post" >> "$file_path"
echo "tags: " >> "$file_path"
echo "---" >> "$file_path"
# Open the …
Run Code Online (Sandbox Code Playgroud) 消息
Cloning into 'sub-mod'...
done.
Run Code Online (Sandbox Code Playgroud)
git submodule add...
将命令写入stderr后。我希望该消息被写入标准输出,因为我不认为它表明命令出了问题。
我可以使用以下命令序列重现此内容:
rm -rf /tmp/repo /tmp/module
mkdir /tmp/repo /tmp/module
cd /tmp/module
git init > /dev/null
echo "foo" > foo;
git add foo > /dev/null
git commit . -m "+ foo" > /dev/null
cd /tmp/repo
git init > /dev/null
git submodule add /tmp/module/ sub-mod 1> /dev/null
Run Code Online (Sandbox Code Playgroud)
如果我将最后一个命令中的重定向更改为... 2> /dev/null
,则不会打印任何内容。