如何在 ubuntu 中下载文件时打印文本?

如何在 ubuntu 中下载文件时打印文本?

我目前正在编写一个 Bash 脚本。我想在打印文本的同时下载文件。例如,考虑这个脚本:

echo -e "---------------------------"
echo -e "Your file downloading..." 
echo -e "---------------------------"
wget example.com/1gbfile

在第二个循环中,应每秒连续打印echoeach .,直到下载完成。如果 的数量.变为 3,如下所示:...,则应将其重置为 1.并继续循环。

答案1

主要脚本:

创建以下脚本作为进度/弹跳条的来源(我称之为bash-progress):

#!/bin/bash

# Initial configuration variables

# Set time interval for progress delay (in fraction of seconds)
time_delay=".2"

# Set left and right brackets (1 character)
  lb="["
#  lb="("
#  lb=" "
  rb="]"
#  rb=")"
#  rb=" "

# Function to show bouncing bar while running command in the background
show_bouncer() {
  # If no argument is given, then this is run on the last command - else provide PID
  if [[ -z $1 ]]
  then
    PID=$!
  else
    PID=$1
  fi
  ii=0
  # Define bouncer array (3 characters)
  bo=('.  ' '.. ' '...' ' ..' '  .' ' ..' '...' '.. ')
#  bo=('⠄  ' '⠂⠄ ' '⠁⠂⠄' '⠂⠂⠂' '⠄⠂⠁' ' ⠄⠂' '  ⠄' '   ')
#  bo=('⡇  ' '⣿  ' '⣿⡇ ' '⢸⣿ ' ' ⣿⡇' ' ⢸⡇' '  ⡇' '   ')
  # True while the original command is running
  while [[ -d "/proc/$PID" ]]
  do
    ch="${bo[(ii++)%${#bo[@]}]}"
    printf "%b" " ${lb}${ch}${rb}"
    sleep "$time_delay"
    # Adjust backspaces to bouncer length + 3
    printf "\b\b\b\b\b\b"
  done
}

该脚本可以以两种方式工作:要么使用最后运行的命令的 PID,要么使用给定的 PID。最常见的用法是使用最后一个命令。

使用它:

因此,您只需像这样创建其他脚本:

#!/bin/bash

# Include Bash progress bars - or include the entire source in your script.
source "./bash-progress"

your_command_here &
show_bouncer

在后台运行该命令很重要,因为它会立即继续显示保镖。

您可以使用sleep命令轻松地对其进行测试:

#!/bin/bash

# Include Bash progress bars - or include the entire source in your script.
source "./bash-progress"

sleep 5 &
show_bouncer
奖金信息:

要使用最后一个 PID 以外的其他 PID,您可以使用pgrep-n表示最新和-x精确匹配)来查找进程的最新实例,如下所示:

#!/bin/bash

# Include Bash progress bars - or include the entire source in your script.
source "./bash-progress"

your_command &
do_something_else
do_anything_meanwhile
show_bouncer $(pgrep -nx "your_command")

相关内容