首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Powershell将curl命令的结果输送到tar中?

如何使用Powershell将curl命令的结果输送到tar中?
EN

Stack Overflow用户
提问于 2021-06-29 16:58:32
回答 1查看 869关注 0票数 1

我目前正试图在中运行以下命令:

代码语言:javascript
运行
复制
curl https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.65/bin/apache-tomcat-8.5.65.tar.gz | tar xvz --strip-components=1 - -C ~/tomcat-8.6.65

当我运行这个命令时,它尝试解压缩默认值\\.\tape0,而不是tarball。我知道解决方法是用-f指定一个文件名,但是当我从URI中提取文件时,我不知道这是怎么可能的。有人有办法让这个命令正常工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-29 17:05:02

  • PowerShell只通过文本(字符串)与外部程序通信,它不支持原始字节流;有关更多信息,请参见this answer

  • In Windows PowerShell (但不再在PowerShell (Core) 7+中),curlInvoke-WebRequest cmdlet的内置别名;要调用外部curl.exe程序,请使用curl.exe,即包含文件扩展名.

由于您确实需要原始字节流处理,所以使用PowerShell管道不是一个选项,但可以委托给cmd.exe

代码语言:javascript
运行
复制
# Make sure that the target dir. exists and get its full path.
# (If the target dir. doesn't exist, tar's -C option will fail.)
$targetDir = (New-Item -Force -ErrorAction Stop -Type Directory $HOME/tomcat-8.6.65).FullName

# Invoke cmd.exe's binary pipeline, passing the target dir.
# As an aside: tar.exe on Windows does NOT know that ~ refers to the 
#              user's home dir.
cmd /c @"
curl https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.65/bin/apache-tomcat-8.5.65.tar.gz | tar xvz --strip-components=1 -f - -C "$targetDir"
"@

上面的内容还纠正了tar命令的语法问题:-应该是-f -

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68182870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档