Hacker News new | ask | show | jobs
by chasil 794 days ago
In startup.sh, here are a few things to think about.

Instead of setting RED/GREEN/BLUE, you could do this:

  N=$(printf \\033)
  N="$N[" x=30

  for a in Bl R G Y B M C W  # Black Red Green Yellow Blue Magenta Cyan White
  do eval $a='$N'"'"$((     x))"m'" \
         b$a='$N'"'"$((60 + x))"m'" \
      ${a}bg='$N'"'"$((10 + x))"m'" \
     b${a}bg='$N'"'"$((70 + x))"m'" # bX=bright Xbg=background bXbg=brgt bgnd
     x=$(( x + 1 ))
  done                       # https://en.wikipedia.org/wiki/ANSI_escape_code
Unless you have "set -e" this:

  if [ ! "$HOSTNAME" ]; then
    HOSTNAME="$(hostname -s)"
  fi
Is more succinctly expressed as this:

  [ -z "$HOSTNAME" ] && HOSTNAME="$(hostname -s)"
2 comments

Apart from the length, what advantages does `[-z $VAR ] && VAR=x` over `if [ ! $VAR ]; then VAR=x fi` ?

Btw, The color script is cool. This makes ANSI sensible.

I don't think there are any functional or performance differences between these forms:

  [ -n "$var" ] || var=X
  [ -z "$var" ] && var=X
  if [ ! "$var" ]; then var=X; fi
It's a question of [your] style and taste, I think.

There are a lot more ANSI sequences that I could work into that block, but it is quite thorough for the space it occupies.

BONUS:

Here is my script to extract all of the stored WiFi networks and passwords when run as root:

  #!/bin/sh

  find /data \
      -name WifiConfigStore.xml \
      -print0 |
  xargs -0 awk '

    /"SSID/ { s = 1 }
    /PreShared/ { p = 1 }

    s || p {
      gsub(/[<][^>]+[>]/, "")
      sub(/^[&]quot;/, "")
      sub(/[&]quot;$/, "")
      gsub(/[&]quot;/, "\"")
      gsub(/[&]amp;/, "\\&")
      gsub(/[&]lt;/, "<")
      gsub(/[&]gt;/, ">")
    }

    s { s = 0; printf "%-32.32s ", $0 }
    p { p = 0; print }

  ' | sort -f
If -e is set you can use || and invert the condition.