How do I create a fake process bar?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP








up vote
3
down vote

favorite
1












I want the terminal to show some kind of process bar based on time, like 1% every 60 seconds for example.







share|improve this question






















  • See How to add a progress bar to a shell script? - Stack Overflow
    – wjandrea
    Apr 23 at 18:11






  • 3




    Possible duplicate of Create a progress bar in bash
    – wjandrea
    Apr 23 at 18:12






  • 6




    To reviewers: IMO this is neither unclear nor a duplicate to the linked question, it asks precisely for a fake progress bar and is quite clear about the fake data. If you consider this unclear nevertheless, please add a comment explaining how OP can improve the question.
    – dessert
    Apr 23 at 18:49






  • 1




    @dessert Re my dupe flag, I don't see how a fake progress bar is different from a real one. Edit: after reading your answer, I think I get it, but I could still use some clarity.
    – wjandrea
    Apr 23 at 20:20







  • 1




    Most of the progress bar examples I've seen online are fake in the first place so people can copy and paste them :)
    – WinEunuuchs2Unix
    Apr 23 at 21:44














up vote
3
down vote

favorite
1












I want the terminal to show some kind of process bar based on time, like 1% every 60 seconds for example.







share|improve this question






















  • See How to add a progress bar to a shell script? - Stack Overflow
    – wjandrea
    Apr 23 at 18:11






  • 3




    Possible duplicate of Create a progress bar in bash
    – wjandrea
    Apr 23 at 18:12






  • 6




    To reviewers: IMO this is neither unclear nor a duplicate to the linked question, it asks precisely for a fake progress bar and is quite clear about the fake data. If you consider this unclear nevertheless, please add a comment explaining how OP can improve the question.
    – dessert
    Apr 23 at 18:49






  • 1




    @dessert Re my dupe flag, I don't see how a fake progress bar is different from a real one. Edit: after reading your answer, I think I get it, but I could still use some clarity.
    – wjandrea
    Apr 23 at 20:20







  • 1




    Most of the progress bar examples I've seen online are fake in the first place so people can copy and paste them :)
    – WinEunuuchs2Unix
    Apr 23 at 21:44












up vote
3
down vote

favorite
1









up vote
3
down vote

favorite
1






1





I want the terminal to show some kind of process bar based on time, like 1% every 60 seconds for example.







share|improve this question














I want the terminal to show some kind of process bar based on time, like 1% every 60 seconds for example.









share|improve this question













share|improve this question




share|improve this question








edited Apr 24 at 6:10









muru

129k19271462




129k19271462










asked Apr 23 at 18:05









Graham Miranda

234




234











  • See How to add a progress bar to a shell script? - Stack Overflow
    – wjandrea
    Apr 23 at 18:11






  • 3




    Possible duplicate of Create a progress bar in bash
    – wjandrea
    Apr 23 at 18:12






  • 6




    To reviewers: IMO this is neither unclear nor a duplicate to the linked question, it asks precisely for a fake progress bar and is quite clear about the fake data. If you consider this unclear nevertheless, please add a comment explaining how OP can improve the question.
    – dessert
    Apr 23 at 18:49






  • 1




    @dessert Re my dupe flag, I don't see how a fake progress bar is different from a real one. Edit: after reading your answer, I think I get it, but I could still use some clarity.
    – wjandrea
    Apr 23 at 20:20







  • 1




    Most of the progress bar examples I've seen online are fake in the first place so people can copy and paste them :)
    – WinEunuuchs2Unix
    Apr 23 at 21:44
















  • See How to add a progress bar to a shell script? - Stack Overflow
    – wjandrea
    Apr 23 at 18:11






  • 3




    Possible duplicate of Create a progress bar in bash
    – wjandrea
    Apr 23 at 18:12






  • 6




    To reviewers: IMO this is neither unclear nor a duplicate to the linked question, it asks precisely for a fake progress bar and is quite clear about the fake data. If you consider this unclear nevertheless, please add a comment explaining how OP can improve the question.
    – dessert
    Apr 23 at 18:49






  • 1




    @dessert Re my dupe flag, I don't see how a fake progress bar is different from a real one. Edit: after reading your answer, I think I get it, but I could still use some clarity.
    – wjandrea
    Apr 23 at 20:20







  • 1




    Most of the progress bar examples I've seen online are fake in the first place so people can copy and paste them :)
    – WinEunuuchs2Unix
    Apr 23 at 21:44















See How to add a progress bar to a shell script? - Stack Overflow
– wjandrea
Apr 23 at 18:11




See How to add a progress bar to a shell script? - Stack Overflow
– wjandrea
Apr 23 at 18:11




3




3




Possible duplicate of Create a progress bar in bash
– wjandrea
Apr 23 at 18:12




Possible duplicate of Create a progress bar in bash
– wjandrea
Apr 23 at 18:12




6




6




To reviewers: IMO this is neither unclear nor a duplicate to the linked question, it asks precisely for a fake progress bar and is quite clear about the fake data. If you consider this unclear nevertheless, please add a comment explaining how OP can improve the question.
– dessert
Apr 23 at 18:49




To reviewers: IMO this is neither unclear nor a duplicate to the linked question, it asks precisely for a fake progress bar and is quite clear about the fake data. If you consider this unclear nevertheless, please add a comment explaining how OP can improve the question.
– dessert
Apr 23 at 18:49




1




1




@dessert Re my dupe flag, I don't see how a fake progress bar is different from a real one. Edit: after reading your answer, I think I get it, but I could still use some clarity.
– wjandrea
Apr 23 at 20:20





@dessert Re my dupe flag, I don't see how a fake progress bar is different from a real one. Edit: after reading your answer, I think I get it, but I could still use some clarity.
– wjandrea
Apr 23 at 20:20





1




1




Most of the progress bar examples I've seen online are fake in the first place so people can copy and paste them :)
– WinEunuuchs2Unix
Apr 23 at 21:44




Most of the progress bar examples I've seen online are fake in the first place so people can copy and paste them :)
– WinEunuuchs2Unix
Apr 23 at 21:44










2 Answers
2






active

oldest

votes

















up vote
6
down vote



accepted












Create a progress bar in bash lists approaches to get a progress bar, so I'll concentrate on the How to fake part here. I'll use 2 seconds instead of your 60 here just for testing, adjust the sleep value to your exact needs.



Using dialog, whiptail or zenity (GUI)



for i in 1..100; do sleep 2; echo $i; done | dialog --gauge 'Running...' 6 60 0


This for loop loops1 over the numbers one to hundred and echos them every 2 seconds, the output is then piped to dialog, which shows the number as the progress on a progress bar. This approach works for whiptail and zenity --progress (GUI) as well. dialog's output looks like this with a colored progress bar using 'curses' in text mode:



dialog progress bar



Using pv



for i in 1..100; do sleep 2; echo; done | pv -pWs100 >/dev/null


This loop is very similar, just that it prints only a newline (=1 byte of data) every 2 seconds, pv is then told to expect exactly 100 bytes of data and show a progress bar. In a terminal window with a width of 80 characters the output looks like this:



[===============> ] 22%


Constructing your own progress bar



With a simple loop you can also construct your own progress bar. Here are some examples that just print 100 # in one line, one per 2 seconds:



# number signs only
$ for i in 1..100; do sleep 2; echo -n #; done; echo
####################################################################################################

# with progress in % on the right
$ for i in 1..100; do sleep 2; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "%3d%%r" "$i"; done; echo
###################################################### 54%

# with progress in % on the left
$ for i in 1..100; do sleep 2; printf "%3d%% " "$i"; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "r"; done; echo
39% #######################################


1 Look, a Polyptoton!






share|improve this answer





























    up vote
    3
    down vote













    Fake Progress Bar



    Here's my fake progress bar:



    yad-progress.sh.gif



    It uses yad which is a super-charged version of zenity the default GUI used in the terminal. To install yad use:



    sudo apt install yad


    Here's the code you can copy and paste because everyone has the /usr/bin directory:





    #!/bin/bash

    # NAME: yad-progress-bar
    # PATH: $HOME/bin
    # DESC: Display yad progress bar % with names.
    # DATE: Apr 23, 2018.

    title="AU question: https://askubuntu.com/q/1027543/307523"
    Percent=0

    for f in /usr/bin/* ; do # 1000+ files so this is fake loop
    echo "#$f" # Display file name in progress bar.
    echo $Percent # Percent complete
    Percent=$(( $Percent + 1 ))
    [[ $Percent -gt 100 ]] && break
    sleep .05 # Change to 2 seconds for OP's fake.

    done | yad --progress --auto-close
    --width=500 --height=300
    --title="$title" --enable-log "Current filename"
    --log-expanded --log-height=250
    --log-on-top --percentage=0
    --no-cancel --center

    exit 0


    The percentage is incremented by 1 in each iteration of the for loop. It should be calculating percentage on 1,000+ files but stops after 100 files.






    share|improve this answer






















    • Why do you iterate over /usr/bin? Why not just use for i in 1..100 or i=100; while ((--i)) ?
      – wjandrea
      Apr 24 at 0:30










    • Two notes: 1) Use the newer command substitution syntax $() instead of backticks, which are deprecated. 2) It would be cleaner to put the yad options in an array.
      – wjandrea
      Apr 24 at 0:34







    • 1




      @wjandrea I looped through /usr/bin to give some text to the progress display. I know backticks are frowned upon these days but it was old code I had laying around which I copied without doing a lot of work. I've removed them. The yad options in an array does clean up the done line but I think this method illustrates to newcomers what is going on with the pipe to yad with all the details in one spot.
      – WinEunuuchs2Unix
      Apr 24 at 0:42










    • +1 for… a nice answer. ;D OP asked for the terminal to show some kind of process bar, which is why I concentrated on non-GUI solutions, but this is not at all detrimental to the usefulness of your approach. Thanks for sharing the knowledge!
      – dessert
      Apr 24 at 6:50










    Your Answer







    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "89"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: false,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













     

    draft saved


    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1027543%2fhow-do-i-create-a-fake-process-bar%23new-answer', 'question_page');

    );

    Post as a guest






























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    6
    down vote



    accepted












    Create a progress bar in bash lists approaches to get a progress bar, so I'll concentrate on the How to fake part here. I'll use 2 seconds instead of your 60 here just for testing, adjust the sleep value to your exact needs.



    Using dialog, whiptail or zenity (GUI)



    for i in 1..100; do sleep 2; echo $i; done | dialog --gauge 'Running...' 6 60 0


    This for loop loops1 over the numbers one to hundred and echos them every 2 seconds, the output is then piped to dialog, which shows the number as the progress on a progress bar. This approach works for whiptail and zenity --progress (GUI) as well. dialog's output looks like this with a colored progress bar using 'curses' in text mode:



    dialog progress bar



    Using pv



    for i in 1..100; do sleep 2; echo; done | pv -pWs100 >/dev/null


    This loop is very similar, just that it prints only a newline (=1 byte of data) every 2 seconds, pv is then told to expect exactly 100 bytes of data and show a progress bar. In a terminal window with a width of 80 characters the output looks like this:



    [===============> ] 22%


    Constructing your own progress bar



    With a simple loop you can also construct your own progress bar. Here are some examples that just print 100 # in one line, one per 2 seconds:



    # number signs only
    $ for i in 1..100; do sleep 2; echo -n #; done; echo
    ####################################################################################################

    # with progress in % on the right
    $ for i in 1..100; do sleep 2; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "%3d%%r" "$i"; done; echo
    ###################################################### 54%

    # with progress in % on the left
    $ for i in 1..100; do sleep 2; printf "%3d%% " "$i"; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "r"; done; echo
    39% #######################################


    1 Look, a Polyptoton!






    share|improve this answer


























      up vote
      6
      down vote



      accepted












      Create a progress bar in bash lists approaches to get a progress bar, so I'll concentrate on the How to fake part here. I'll use 2 seconds instead of your 60 here just for testing, adjust the sleep value to your exact needs.



      Using dialog, whiptail or zenity (GUI)



      for i in 1..100; do sleep 2; echo $i; done | dialog --gauge 'Running...' 6 60 0


      This for loop loops1 over the numbers one to hundred and echos them every 2 seconds, the output is then piped to dialog, which shows the number as the progress on a progress bar. This approach works for whiptail and zenity --progress (GUI) as well. dialog's output looks like this with a colored progress bar using 'curses' in text mode:



      dialog progress bar



      Using pv



      for i in 1..100; do sleep 2; echo; done | pv -pWs100 >/dev/null


      This loop is very similar, just that it prints only a newline (=1 byte of data) every 2 seconds, pv is then told to expect exactly 100 bytes of data and show a progress bar. In a terminal window with a width of 80 characters the output looks like this:



      [===============> ] 22%


      Constructing your own progress bar



      With a simple loop you can also construct your own progress bar. Here are some examples that just print 100 # in one line, one per 2 seconds:



      # number signs only
      $ for i in 1..100; do sleep 2; echo -n #; done; echo
      ####################################################################################################

      # with progress in % on the right
      $ for i in 1..100; do sleep 2; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "%3d%%r" "$i"; done; echo
      ###################################################### 54%

      # with progress in % on the left
      $ for i in 1..100; do sleep 2; printf "%3d%% " "$i"; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "r"; done; echo
      39% #######################################


      1 Look, a Polyptoton!






      share|improve this answer
























        up vote
        6
        down vote



        accepted







        up vote
        6
        down vote



        accepted








        Create a progress bar in bash lists approaches to get a progress bar, so I'll concentrate on the How to fake part here. I'll use 2 seconds instead of your 60 here just for testing, adjust the sleep value to your exact needs.



        Using dialog, whiptail or zenity (GUI)



        for i in 1..100; do sleep 2; echo $i; done | dialog --gauge 'Running...' 6 60 0


        This for loop loops1 over the numbers one to hundred and echos them every 2 seconds, the output is then piped to dialog, which shows the number as the progress on a progress bar. This approach works for whiptail and zenity --progress (GUI) as well. dialog's output looks like this with a colored progress bar using 'curses' in text mode:



        dialog progress bar



        Using pv



        for i in 1..100; do sleep 2; echo; done | pv -pWs100 >/dev/null


        This loop is very similar, just that it prints only a newline (=1 byte of data) every 2 seconds, pv is then told to expect exactly 100 bytes of data and show a progress bar. In a terminal window with a width of 80 characters the output looks like this:



        [===============> ] 22%


        Constructing your own progress bar



        With a simple loop you can also construct your own progress bar. Here are some examples that just print 100 # in one line, one per 2 seconds:



        # number signs only
        $ for i in 1..100; do sleep 2; echo -n #; done; echo
        ####################################################################################################

        # with progress in % on the right
        $ for i in 1..100; do sleep 2; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "%3d%%r" "$i"; done; echo
        ###################################################### 54%

        # with progress in % on the left
        $ for i in 1..100; do sleep 2; printf "%3d%% " "$i"; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "r"; done; echo
        39% #######################################


        1 Look, a Polyptoton!






        share|improve this answer
















        Create a progress bar in bash lists approaches to get a progress bar, so I'll concentrate on the How to fake part here. I'll use 2 seconds instead of your 60 here just for testing, adjust the sleep value to your exact needs.



        Using dialog, whiptail or zenity (GUI)



        for i in 1..100; do sleep 2; echo $i; done | dialog --gauge 'Running...' 6 60 0


        This for loop loops1 over the numbers one to hundred and echos them every 2 seconds, the output is then piped to dialog, which shows the number as the progress on a progress bar. This approach works for whiptail and zenity --progress (GUI) as well. dialog's output looks like this with a colored progress bar using 'curses' in text mode:



        dialog progress bar



        Using pv



        for i in 1..100; do sleep 2; echo; done | pv -pWs100 >/dev/null


        This loop is very similar, just that it prints only a newline (=1 byte of data) every 2 seconds, pv is then told to expect exactly 100 bytes of data and show a progress bar. In a terminal window with a width of 80 characters the output looks like this:



        [===============> ] 22%


        Constructing your own progress bar



        With a simple loop you can also construct your own progress bar. Here are some examples that just print 100 # in one line, one per 2 seconds:



        # number signs only
        $ for i in 1..100; do sleep 2; echo -n #; done; echo
        ####################################################################################################

        # with progress in % on the right
        $ for i in 1..100; do sleep 2; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "%3d%%r" "$i"; done; echo
        ###################################################### 54%

        # with progress in % on the left
        $ for i in 1..100; do sleep 2; printf "%3d%% " "$i"; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "r"; done; echo
        39% #######################################


        1 Look, a Polyptoton!







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Apr 24 at 7:49

























        answered Apr 23 at 18:46









        dessert

        19.8k55594




        19.8k55594






















            up vote
            3
            down vote













            Fake Progress Bar



            Here's my fake progress bar:



            yad-progress.sh.gif



            It uses yad which is a super-charged version of zenity the default GUI used in the terminal. To install yad use:



            sudo apt install yad


            Here's the code you can copy and paste because everyone has the /usr/bin directory:





            #!/bin/bash

            # NAME: yad-progress-bar
            # PATH: $HOME/bin
            # DESC: Display yad progress bar % with names.
            # DATE: Apr 23, 2018.

            title="AU question: https://askubuntu.com/q/1027543/307523"
            Percent=0

            for f in /usr/bin/* ; do # 1000+ files so this is fake loop
            echo "#$f" # Display file name in progress bar.
            echo $Percent # Percent complete
            Percent=$(( $Percent + 1 ))
            [[ $Percent -gt 100 ]] && break
            sleep .05 # Change to 2 seconds for OP's fake.

            done | yad --progress --auto-close
            --width=500 --height=300
            --title="$title" --enable-log "Current filename"
            --log-expanded --log-height=250
            --log-on-top --percentage=0
            --no-cancel --center

            exit 0


            The percentage is incremented by 1 in each iteration of the for loop. It should be calculating percentage on 1,000+ files but stops after 100 files.






            share|improve this answer






















            • Why do you iterate over /usr/bin? Why not just use for i in 1..100 or i=100; while ((--i)) ?
              – wjandrea
              Apr 24 at 0:30










            • Two notes: 1) Use the newer command substitution syntax $() instead of backticks, which are deprecated. 2) It would be cleaner to put the yad options in an array.
              – wjandrea
              Apr 24 at 0:34







            • 1




              @wjandrea I looped through /usr/bin to give some text to the progress display. I know backticks are frowned upon these days but it was old code I had laying around which I copied without doing a lot of work. I've removed them. The yad options in an array does clean up the done line but I think this method illustrates to newcomers what is going on with the pipe to yad with all the details in one spot.
              – WinEunuuchs2Unix
              Apr 24 at 0:42










            • +1 for… a nice answer. ;D OP asked for the terminal to show some kind of process bar, which is why I concentrated on non-GUI solutions, but this is not at all detrimental to the usefulness of your approach. Thanks for sharing the knowledge!
              – dessert
              Apr 24 at 6:50














            up vote
            3
            down vote













            Fake Progress Bar



            Here's my fake progress bar:



            yad-progress.sh.gif



            It uses yad which is a super-charged version of zenity the default GUI used in the terminal. To install yad use:



            sudo apt install yad


            Here's the code you can copy and paste because everyone has the /usr/bin directory:





            #!/bin/bash

            # NAME: yad-progress-bar
            # PATH: $HOME/bin
            # DESC: Display yad progress bar % with names.
            # DATE: Apr 23, 2018.

            title="AU question: https://askubuntu.com/q/1027543/307523"
            Percent=0

            for f in /usr/bin/* ; do # 1000+ files so this is fake loop
            echo "#$f" # Display file name in progress bar.
            echo $Percent # Percent complete
            Percent=$(( $Percent + 1 ))
            [[ $Percent -gt 100 ]] && break
            sleep .05 # Change to 2 seconds for OP's fake.

            done | yad --progress --auto-close
            --width=500 --height=300
            --title="$title" --enable-log "Current filename"
            --log-expanded --log-height=250
            --log-on-top --percentage=0
            --no-cancel --center

            exit 0


            The percentage is incremented by 1 in each iteration of the for loop. It should be calculating percentage on 1,000+ files but stops after 100 files.






            share|improve this answer






















            • Why do you iterate over /usr/bin? Why not just use for i in 1..100 or i=100; while ((--i)) ?
              – wjandrea
              Apr 24 at 0:30










            • Two notes: 1) Use the newer command substitution syntax $() instead of backticks, which are deprecated. 2) It would be cleaner to put the yad options in an array.
              – wjandrea
              Apr 24 at 0:34







            • 1




              @wjandrea I looped through /usr/bin to give some text to the progress display. I know backticks are frowned upon these days but it was old code I had laying around which I copied without doing a lot of work. I've removed them. The yad options in an array does clean up the done line but I think this method illustrates to newcomers what is going on with the pipe to yad with all the details in one spot.
              – WinEunuuchs2Unix
              Apr 24 at 0:42










            • +1 for… a nice answer. ;D OP asked for the terminal to show some kind of process bar, which is why I concentrated on non-GUI solutions, but this is not at all detrimental to the usefulness of your approach. Thanks for sharing the knowledge!
              – dessert
              Apr 24 at 6:50












            up vote
            3
            down vote










            up vote
            3
            down vote









            Fake Progress Bar



            Here's my fake progress bar:



            yad-progress.sh.gif



            It uses yad which is a super-charged version of zenity the default GUI used in the terminal. To install yad use:



            sudo apt install yad


            Here's the code you can copy and paste because everyone has the /usr/bin directory:





            #!/bin/bash

            # NAME: yad-progress-bar
            # PATH: $HOME/bin
            # DESC: Display yad progress bar % with names.
            # DATE: Apr 23, 2018.

            title="AU question: https://askubuntu.com/q/1027543/307523"
            Percent=0

            for f in /usr/bin/* ; do # 1000+ files so this is fake loop
            echo "#$f" # Display file name in progress bar.
            echo $Percent # Percent complete
            Percent=$(( $Percent + 1 ))
            [[ $Percent -gt 100 ]] && break
            sleep .05 # Change to 2 seconds for OP's fake.

            done | yad --progress --auto-close
            --width=500 --height=300
            --title="$title" --enable-log "Current filename"
            --log-expanded --log-height=250
            --log-on-top --percentage=0
            --no-cancel --center

            exit 0


            The percentage is incremented by 1 in each iteration of the for loop. It should be calculating percentage on 1,000+ files but stops after 100 files.






            share|improve this answer














            Fake Progress Bar



            Here's my fake progress bar:



            yad-progress.sh.gif



            It uses yad which is a super-charged version of zenity the default GUI used in the terminal. To install yad use:



            sudo apt install yad


            Here's the code you can copy and paste because everyone has the /usr/bin directory:





            #!/bin/bash

            # NAME: yad-progress-bar
            # PATH: $HOME/bin
            # DESC: Display yad progress bar % with names.
            # DATE: Apr 23, 2018.

            title="AU question: https://askubuntu.com/q/1027543/307523"
            Percent=0

            for f in /usr/bin/* ; do # 1000+ files so this is fake loop
            echo "#$f" # Display file name in progress bar.
            echo $Percent # Percent complete
            Percent=$(( $Percent + 1 ))
            [[ $Percent -gt 100 ]] && break
            sleep .05 # Change to 2 seconds for OP's fake.

            done | yad --progress --auto-close
            --width=500 --height=300
            --title="$title" --enable-log "Current filename"
            --log-expanded --log-height=250
            --log-on-top --percentage=0
            --no-cancel --center

            exit 0


            The percentage is incremented by 1 in each iteration of the for loop. It should be calculating percentage on 1,000+ files but stops after 100 files.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Apr 24 at 1:12









            wjandrea

            7,15242255




            7,15242255










            answered Apr 23 at 23:29









            WinEunuuchs2Unix

            35.6k759133




            35.6k759133











            • Why do you iterate over /usr/bin? Why not just use for i in 1..100 or i=100; while ((--i)) ?
              – wjandrea
              Apr 24 at 0:30










            • Two notes: 1) Use the newer command substitution syntax $() instead of backticks, which are deprecated. 2) It would be cleaner to put the yad options in an array.
              – wjandrea
              Apr 24 at 0:34







            • 1




              @wjandrea I looped through /usr/bin to give some text to the progress display. I know backticks are frowned upon these days but it was old code I had laying around which I copied without doing a lot of work. I've removed them. The yad options in an array does clean up the done line but I think this method illustrates to newcomers what is going on with the pipe to yad with all the details in one spot.
              – WinEunuuchs2Unix
              Apr 24 at 0:42










            • +1 for… a nice answer. ;D OP asked for the terminal to show some kind of process bar, which is why I concentrated on non-GUI solutions, but this is not at all detrimental to the usefulness of your approach. Thanks for sharing the knowledge!
              – dessert
              Apr 24 at 6:50
















            • Why do you iterate over /usr/bin? Why not just use for i in 1..100 or i=100; while ((--i)) ?
              – wjandrea
              Apr 24 at 0:30










            • Two notes: 1) Use the newer command substitution syntax $() instead of backticks, which are deprecated. 2) It would be cleaner to put the yad options in an array.
              – wjandrea
              Apr 24 at 0:34







            • 1




              @wjandrea I looped through /usr/bin to give some text to the progress display. I know backticks are frowned upon these days but it was old code I had laying around which I copied without doing a lot of work. I've removed them. The yad options in an array does clean up the done line but I think this method illustrates to newcomers what is going on with the pipe to yad with all the details in one spot.
              – WinEunuuchs2Unix
              Apr 24 at 0:42










            • +1 for… a nice answer. ;D OP asked for the terminal to show some kind of process bar, which is why I concentrated on non-GUI solutions, but this is not at all detrimental to the usefulness of your approach. Thanks for sharing the knowledge!
              – dessert
              Apr 24 at 6:50















            Why do you iterate over /usr/bin? Why not just use for i in 1..100 or i=100; while ((--i)) ?
            – wjandrea
            Apr 24 at 0:30




            Why do you iterate over /usr/bin? Why not just use for i in 1..100 or i=100; while ((--i)) ?
            – wjandrea
            Apr 24 at 0:30












            Two notes: 1) Use the newer command substitution syntax $() instead of backticks, which are deprecated. 2) It would be cleaner to put the yad options in an array.
            – wjandrea
            Apr 24 at 0:34





            Two notes: 1) Use the newer command substitution syntax $() instead of backticks, which are deprecated. 2) It would be cleaner to put the yad options in an array.
            – wjandrea
            Apr 24 at 0:34





            1




            1




            @wjandrea I looped through /usr/bin to give some text to the progress display. I know backticks are frowned upon these days but it was old code I had laying around which I copied without doing a lot of work. I've removed them. The yad options in an array does clean up the done line but I think this method illustrates to newcomers what is going on with the pipe to yad with all the details in one spot.
            – WinEunuuchs2Unix
            Apr 24 at 0:42




            @wjandrea I looped through /usr/bin to give some text to the progress display. I know backticks are frowned upon these days but it was old code I had laying around which I copied without doing a lot of work. I've removed them. The yad options in an array does clean up the done line but I think this method illustrates to newcomers what is going on with the pipe to yad with all the details in one spot.
            – WinEunuuchs2Unix
            Apr 24 at 0:42












            +1 for… a nice answer. ;D OP asked for the terminal to show some kind of process bar, which is why I concentrated on non-GUI solutions, but this is not at all detrimental to the usefulness of your approach. Thanks for sharing the knowledge!
            – dessert
            Apr 24 at 6:50




            +1 for… a nice answer. ;D OP asked for the terminal to show some kind of process bar, which is why I concentrated on non-GUI solutions, but this is not at all detrimental to the usefulness of your approach. Thanks for sharing the knowledge!
            – dessert
            Apr 24 at 6:50

















             

            draft saved


            draft discarded















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1027543%2fhow-do-i-create-a-fake-process-bar%23new-answer', 'question_page');

            );

            Post as a guest













































































            Popular posts from this blog

            pylint3 and pip3 broken

            Missing snmpget and snmpwalk

            How to enroll fingerprints to Ubuntu 17.10 with VFS491