我有两个文件,第一个名为packages.txt
,它是包列表:
gcc
emacs
vim
python
...
现在,当我运行命令
时cat packages.txt | tr '\n' ' ' | apt-get install
这基本上将文件转换为由空格分隔的一行包。它没有安装packages.txt.
中的所有软件包(我认为它只安装第一个)有谁知道为什么?
答案 0 :(得分:3)
尝试使用xargs
:
xargs -d '\n' -- apt-get install < packages.txt
或者
xargs -d '\n' -n 1 -- apt-get install < packages.txt
确保packages.txt
不是DOS格式:
sed -i 's|\r||' packages.txt
答案 1 :(得分:1)
管道运营商将一个应用程序的stdout
发送到下一个应用程序(stdin
。不幸的是,apt-get
不会从stdin
读取。而是{{1}在命令行中获取一个包列表。我认为你试图做的更多是
apt-get
或
apt-get install $(cat packages.txt | tr '\n' ' ')
这就是评估文件列表,并将其作为参数传递给单个apt-get install `cat packages.txt | tr '\n' ' '`
调用。