我有一个包含很多包名称的文本文件。
package1
package2
# comment
# installing package3 because it was needed for...
package 3
package 4
如何在不删除注释的情况下批量安装文本文件内的所有包?
答案1
类似这样的事应该可以解决问题。
apt-get install $(grep -vE "^\s*#" filename | tr "\n" " ")
$(something) 构造运行某物命令,将其输出插入命令行。
grep 命令将排除以 # 开头的任何行,可选择允许其前面有空格。然后 tr 命令将换行符替换为空格。
答案2
以下命令比替代命令有(轻微)改进,因为sudo apt-get install
当包列表为空时不会执行。
xargs -a <(awk '! /^ *(#|$)/' "$packagelist") -r -- sudo apt-get install
请注意,该-a
选项直接从文件而不是标准输入读取项目。我们不想将文件导入,xargs
因为 stdin 必须保持不变才能供apt-get
.
答案3
给定一个包列表文件package.list
,尝试:
sudo apt-get install $(awk '{print $1}' package.list)
答案4
受到这里接受的答案的启发关于删除评论的这个答案:
apt-get install $(grep -o '^[^#]*' filename)