我正在制作一个安装后脚本,在linux机器上自动安装一些软件包。我想始终显示apt-get install <package>
命令的最后一行。所以apt-get
的最后一行必须重写前一行。
所以我想象这样的事情:
----------------
Install Dev apps
----------------
[the last line from apt-get install here]
我怎样才能在bash中执行此操作?
答案 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>