我正在尝试这样的事情:
rpm -ql `rpm -qa | grep openssh-5`
这列出了使用 openssh-5 rpm 安装的所有文件。
我希望将所有这些文件复制到一个文件夹:例如:myfolder
所以我试试这个:
cp ``rpm -ql `rpm -qa | grep openssh-5`` myfolder
但它失败了。有什么出路,任何shell脚本吗?
你不能嵌套反引号。这应该工作:
cp $(rpm -ql $(rpm -qa | grep openssh-5)) myfolder
另一种方法是:
rpm -qa | grep openssh-5 | xargs -d $'\n' rpm -ql | xargs -d $'\n' cp -t myfolder
(这也处理包含空格的文件名。不会处理带有换行符的文件名...)
files=${rpm -ql `rpm -qa | grep openssh-5`};
while read file do
cp $file "myfolder";
done < $files;
也许?
尝试
rpm -qla \*openssh-5\* | while read filename; do
cp -a "$file" "$myfolder"
done
. 请注意""
考虑文件名中空格的变量周围的变量(诚然,这在 RPM 包中非常罕见 - 但并非不可能)。
还要注意rpm -qla
使事情变得更容易的结构。