DEV Community

lbonanomi
lbonanomi

Posted on

 

What was I doing in this shell?

Do you frequently open another SSH window for another task or to connect to another machine? I know I do. Do you ever return to those windows a day or two later and wonder what you were doing there to begin-with? I know I do.

Put this into your .profile to to run the lulwat function any time you hit enter three times in a row.

# source me.

export PROMPT_COMMAND=btnMash

function btnMash {
  # Init a counter for prompts-displayed if its missing
  [[ -f /tmp/promptsDisplayed ]] || history | tail -1 | awk '{ print $1 }' > /tmp/promptsDisplayed;

  # Init a counter for commands
  [[ -f /tmp/commandsRun ]] || (history | tail -1 | awk '{ print $1 }' > /tmp/commandsRun)

  COMMANDS=$(cat /tmp/commandsRun)

  # Increment prompts-displayed counter
  echo $(($(cat /tmp/promptsDisplayed)+1 )) > /tmp/promptsDisplayed;

  history | tail -1 | awk '{ print $1 }' > /tmp/commandsRun

  if [[ $COMMANDS -lt $(cat /tmp/commandsRun) ]]
  then
    cat /tmp/commandsRun > /tmp/promptsDisplayed
  fi

  PROMPTS=$(cat /tmp/promptsDisplayed)

  if [[ $PROMPTS -ge $(($COMMANDS+3)) ]]
  then
    lulwat; rm /tmp/promptsDisplayed; return
  fi
}

function lulwat {
    # If I am su-ed into this account, tell me.
    #
    ID=$(id | awk '{gsub(/[\(-\)]/," ")} { print $2 }');
    WHO=$(who -m | awk '{ print $1 }')

    [[ "$ID" == "$WHO" ]] && echo "You are: $ID"
    [[ "$ID" == "$WHO" ]] || echo "You are: $ID (su-ed from $WHO)"

    # Hostname and path
    #
    printf "On: $(hostname):$(pwd)\n"

    # If this a git repo, remind me of the remote
    #
    git status &>/dev/null && (
        printf "$(git remote -vv | awk '{ print $2 }' | head -1) ($(git branch | awk '{ print $2 }'))\n"
    )
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesnโ€™t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.