如何获取 tar 命令的标准输出
How to get stdout of tar command
我正在尝试 tar 一个文件并将其输出存储在一个变量中。
我试过了,但没有用:
resulting_tar=$(tar -zcf "$(date '+%Y-%m-%d').tar.gz" folder)
知道我该怎么做吗?
编辑: 进一步澄清后不再适用。为子孙后代留下。
您可能正在寻找 stdout
和 stderr
。您可以通过将 2>&1
附加到您的命令来组合两个输出流:
resulting_tar=$(tar -zcf "$(date '+%Y-%m-%d').tar.gz" folder 2>&1)
默认情况下,tar
不报告创建文件的名称。事实上,除非您告诉它,否则它什么也不会说,而且给出的选项也不会告诉它什么。
请注意 tar
不会告诉您它创建了什么文件。你告诉 tar
要创建什么文件。
您需要在变量中捕获文件名并自行报告:
file="$(date '+%Y-%m-%d').tar.gz"
tar -czf "$file" folder
echo "$file"
尝试运行tar -czf /dev/null folder
;您不会从 tar
(的大多数实现)中看到任何内容 — 这并不是因为我指定了 /dev/null
。如果您愿意,请指定一个名称:tar -czf junk.tar.gz folder
并观察(缺少)输出 — 并记住删除 junk.tar.gz
.
您可能还需要考虑在 tar
文件名中包含文件夹名称。
folder="…whatever…"
file="$folder-$(date +'%Y-%m-%d').tar.gz"
tar -czf "$file" "$folder"
echo "$file"
我正在尝试 tar 一个文件并将其输出存储在一个变量中。 我试过了,但没有用:
resulting_tar=$(tar -zcf "$(date '+%Y-%m-%d').tar.gz" folder)
知道我该怎么做吗?
编辑: 进一步澄清后不再适用。为子孙后代留下。
您可能正在寻找 stdout
和 stderr
。您可以通过将 2>&1
附加到您的命令来组合两个输出流:
resulting_tar=$(tar -zcf "$(date '+%Y-%m-%d').tar.gz" folder 2>&1)
默认情况下,tar
不报告创建文件的名称。事实上,除非您告诉它,否则它什么也不会说,而且给出的选项也不会告诉它什么。
请注意 tar
不会告诉您它创建了什么文件。你告诉 tar
要创建什么文件。
您需要在变量中捕获文件名并自行报告:
file="$(date '+%Y-%m-%d').tar.gz"
tar -czf "$file" folder
echo "$file"
尝试运行tar -czf /dev/null folder
;您不会从 tar
(的大多数实现)中看到任何内容 — 这并不是因为我指定了 /dev/null
。如果您愿意,请指定一个名称:tar -czf junk.tar.gz folder
并观察(缺少)输出 — 并记住删除 junk.tar.gz
.
您可能还需要考虑在 tar
文件名中包含文件夹名称。
folder="…whatever…"
file="$folder-$(date +'%Y-%m-%d').tar.gz"
tar -czf "$file" "$folder"
echo "$file"