我正在尝试完成标题中所说的内容...但我无论如何都无法弄清楚魔法咒语。
clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-format
我正在下载的 LLVM 档案包含我想要提取到指定位置的路径。
我正在尝试这个:
mkdir outdir && curl -L 'https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz' | tar -xz clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-format --directory outdir/ --strip-components=2
但这不会放置任何内容outdir
,同时会在当前工作目录中创建要提取的路径(这正是我试图避免的--strip-components
)。
当我移动--strip-components
到前面时,它会剥离路径,但将结果放在当前目录中,而忽略--directory
。
正确的方法是什么?
最终目标:提取clang-format
二进制文件至/usr/local/bin/
.
答案1
看来--strip-components
和-C
选项需要放在要提取的文件之前,否则它们会被默默忽略。
我想手册页暗示了这一点
tar -x [-f ARCHIVE] [OPTIONS] [MEMBER...]
但在某些情况下(https://askubuntu.com/a/45354/596667)最后看起来还好。
正确的命令行是
mkdir outdir && curl -L 'https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz' | tar --directory outdir/ --strip-components=2 -xz clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-format