A while ago I made a tiny function in my ~/.zshrc to download a video from the link in my clipboard. I use this nearly every day to share videos with people without forcing them to watch it on whatever site I found it. What's a script/alias that you use a lot?

# Download clipboard to tmp with yt-dlp
tmpv() {
  cd /tmp/ && yt-dlp "$(wl-paste)"
}
you are viewing a single comment's thread
view the rest of the comments
[–] 26 points 1 year ago (7 children)

I wrote a script called please. You input please followed by any other command (e.g. please git clone, please wget blahblah) and a robotic voice will say "affirmative," then the command will run, and when it completes, the robotic voice reads out the exit code (e.g. "completed successfully" or "failed with status 1" etc.)

This is useful for when you have a command that takes a long time and you want to be alerted when it's finished. And it's a gentleman.

  • source
  • hideshow 7 child comments
  • [–] 12 points 1 year ago* (2 children)
  • [–] 22 points 1 year ago (1 child)

    It's full of random shit I put in as a joke, but here it is. You can use please -s to get lightly roasted when your command fails.

    spoiler

    #!/bin/bash
    # announces success or failure of task
    
    if ! command -v "spd-say" > /dev/null
    then
        echo "spd-say must be installed."
        exit -1
    fi
    
    VOLUME=0
    SERIOUS=1
    FINISH_ONLY=0
    
    if [ $# -ge 2 ]
    then
        if [ $1 == "-i" ]
        then
            # parse volume from command line
            VOLUME=$2
            shift 2
        fi
    fi
    
    spd-say -C
    
    # force stop speech synthesizer
    killall -q speech-dispatcher
    
    # androgynous voice
    # __sayfn="spd-say -i -80 -t female3"
    
    # deep voice
    __sayfn="spd-say -i $VOLUME -r -10 -p -100 -t male3"
    
    function _sayfn {
        $__sayfn "$@" 2>/dev/null
        if [ $? -ne 0 ]
        then
            $__sayfn "$@"
        fi
    }
    
    if [ $# -eq 0 ] || [ "$1" == "--help" ]
    then
        _sayfn "Directive required."
        echo "Usage: please [-i volume] [-s|--serious] [-f|--finish] <command...>"
        echo "       please [-i volume] --say text"
        echo "       -i: volume in range -100 to +100"
        echo "       --serious, -s: no silliness. Serious only. (Just kidding.)"
        echo "       --finish, -f: do not announce start"
        exit -2
    fi
    
    # threading issue
    sleep 0.001
    
    if [ $# -ge 2 ]
    then
        if [ $1 == "--say" ]
        then
            # _sayfn the given line
            shift 1
            _sayfn "$@"
            exit 0
        fi
    
        if [ $1 == "--serious" ] || [ $1 == "-s" ]
        then
            shift 1
            SERIOUS=0
        fi
        
        if [ $1 == "--finish" ] || [ $1 == "-f" ]
        then
            shift 1
            FINISH_ONLY=1
        fi
    fi
    
    i=$(shuf -n1 -e "." "!") # inflection on voice
    
    if [ "$FINISH_ONLY" -eq 0 ]
    then
        if [ "$SERIOUS" -eq 0 ]
        then
            # startup lines (randomized for character)
            _sayfn -r -5 -x ".<break time=\"60ms\"/>$(shuf -n1 -e \
                'Proceeding As Directed...' \
                'By your command...' \
                'By your command...' \
                'By the power ov greyskaall!' \
                'By your command,line...' \
                'As you wish...' \
                'Stand by.' \
                'Engaged...' \
                'Initializing...' \
                'Activating' \
                'At once!' \
                "Post Haste$i" \
                'it shall be done immediately' \
                'Very well.' \
                'It shall be so.' \
                "righty-o$i" \
                "Affirmative$i" \
                "Acknowledged$i" \
                "Confirmed$i" \
            )"
        else
            _sayfn -r -5 -x ".<break time=\"60ms\"/>Engaged..."
        fi
    
        if [ $? -ne 0 ]
        then
            _sayfn "Speech engine failure."
            echo "Failed to run speech engine. Cancelling task."
            exit -3
        fi
    fi
    
    if ! command -v "$1" > /dev/null
    then
        # _sayfn a little faster because this exits fast.
        _sayfn -r +10 "Unable to comply? invalid command."
        >&2 echo "$1: command not found."
        exit -4
    fi
    
    eval " $@"
    result=$?
    i=$(shuf -n1 -e "," "!" "?") # inflection on voice
    transition=$(shuf -n1 -e "; error" ", with error" "; status")
    taskname=$(shuf -n1 -e "task" "task" "command" "objective" "mission" "procedure" "routine")
    errtext=$(shuf -n1 -e "Task_failed" "Task_failed" "Task_resulted_in_failure" "Procedure_terminated_in_an_error" "An_error_has_occurred" "Auxilliary_system_failure" "system_failure")
    consolation=$(shuf -n1 -e "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "Attention required." "Attention is required!" "Perhaps It was inevitable." "It may or may not be cause for alarm." "Perhaps Machines too, are fallible." "Apologies" "Hopefully nobody else was watching" "shazbot" "maybe next time." "Nobody could have predicted this outcome." "I'm very sorry." "how unfortunate." "remember: don't panic" "oh dear" "Nothing could have been done to prevent this" "Remember: No disasters are fully preventable" "perhaps the only winning move is not to play" "Remember: Failure is our teacher, not our undertaker." "Remember: If at first you don't succeed... try again." "Remember: If at first you don't succeed... try... try again." "But your friends still love you." "Remember: the machine is not your enemy." "Command?" "Awaiting further instructions." "Remember: Logic is the beginning of wisdom... not the end of it." "Remember: When you eliminate the impossible, whatever remains, however improbable, must be the truth." "Keep at it. Victory is within reach." "Remember: The road to success and the road to failure are almost exactly the same." "Now, while this could have gone better, it could also have gone much worse." "Remember: we do this not because it is easy, but because we thought it was going to be easy." "Don't give up." "It has now been... -- zero... -- days, since the last serious failure." "Remember: instead of documenting the problem, you can fix it." "Remember: Artificial intelligence is no match for artificial stupidity." "Standing by," "Remember: with every failure, we get closer to success." "We live in a society." "sometimes failure is not an option; it's a necessity." "Keep at it." "Remember: mistakes are just the first step on the road to failure... <break time=\"250ms\"/> I mean success." "Don't leave. The drones need you... <break time=\"350ms\"/> They look up to you." "Try again, for great justice." "fantastic" "brilliant" "did you really think that would work?")
    
    if [ $SERIOUS -eq 0 ]
    then
        # perhaps some silliness.
        if [ $result -eq 0 ]
        then
            _sayfn --wait "$(shuf -n1 -e \
               "$taskname complete. All systems nominal" \
               "$taskname completed successfully." \
               "$taskname resulted in success." \
               "$taskname yielded a successful result." \
               "$taskname concluded successfully." \
               "$taskname completed as instructed." \
               "Jobs done." \
            )" &
        else
            if [ $result -eq 1 ]
            then
                _sayfn -x --wait "$(shuf -n1 -e \
                   "Alert$i Primary system failure. Attention is required." \
                   "Alert$i System failure$i Attention required! $consolation" \
                   "Alert$i $taskname resulted in failure! <break time=\"150ms\"/> $consolation" \
                   "Alert$i $taskname was not completed as intended; $consolation" \
                   "Alert$i An error has occurred! <break time=\"220ms\"/> $consolation" \
                )" &
               
            else
                _sayfn --wait -x "Alert$i $errtext$transition code $result! <break time=\"350ms\"/> $consolation" &
            fi
        fi
    else
        # no silliness here.
        if [ $result -eq 0 ]
        then
            _sayfn --wait "Command complete."
        else
            if [ $result -eq 1 ]
            then
                _sayfn -x --wait "Alert. Command failed; error code $result!"
            fi
        fi
    fi
    
    exit $result
    

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 1 year ago (2 children)

    You can also use something like notifyd to generate a pop up for visual feedback :) I can't remember the exact command right now though. Differs per distro or desktop environment, obviously.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 1 year ago* (last edited 1 year ago)

    Also, printf '\a' will output an alert bell character which should make the terminal beep/blink and be highlighted for attention by your wm/compositor if it's unfocused.

    I have that aliased to a to get notified whenever a long running command finishes just by adding ;a at the end.

  • source
  • parent
  • [–] 1 point 1 year ago

    I once experimented with something similar, except it was supported to trigger my smart speaker and drop into another part of the house to tell me.

    Honestly, I really need to replace my proprietary smart speaker system with something self-hosted; it’s just I only recently have had the time to start cinsidering.

  • source
  • parent