Apt-get install只显示最后一行

时间:2018-02-28 18:57:59

标签: linux bash debian apt-get

我正在制作一个安装后脚本,在linux机器上自动安装一些软件包。我想始终显示apt-get install <package>命令的最后一行。所以apt-get的最后一行必须重写前一行。

所以我想象这样的事情:

----------------
Install Dev apps
----------------
[the last line from apt-get install here]

我怎样才能在bash中执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用python脚本对每个命令的stdout和stderr进行任何操作。对于您的问题,您可以使用以下脚本仅查看输出的最后一行:

#!/usr/bin/python3
import subprocess, sys
process = subprocess.Popen(sys.argv[1:], stdout=subprocess.PIPE)
while process.poll() is None:
  stdout = process.stdout.readline().decode()[:-1]
  print(stdout,end='\r')
print()

将上面的代码保存在文件中,例如 run.py 。 然后,您可以运行任何命令以仅动态查看输出的最后一行。例如:

./run.py sudo apt-get install <package>

或:

./run.py sudo apt-get update
注1:不要忘记给您的脚本执行权限:
chmod +x run.py
注意2:您可以进行适当的符号链接以方便使用(或将脚本路径添加到$ PATH环境变量中,我不建议这样做):
sudo ln -s <path/to/yourscript.py> /usr/bin/run

此后,您只能使用:

run sudo apt-get install <package-name>