sc (Source)

#!/bin/bash
##---------------------------------------------------------------------------##
#
#   Script: 'sc' - systemctl shortener
#   Author: Brian <genius@groupbcl.ca> :)
#   Date:   December 2015
#
#   'sc' implements a series of shortcuts for the 'systemctl' command (and
#   one for 'journalctl') via a series of symlinks in /usr/local/bin:
#
#   Symlink Runs
#    sc     systemctl
#    scs    systemclt start
#    scr    systemclt restart
#    sck    systemctl stop ('k' = 'kill')
#    scl    systemctl reload ('l' = reLoad)
#    scq    systemctl status ('q' = 'query')
#    sct    systemctl status ('t' = 'sTaTus')
#    scj    journalctl ('scj NAME' runs 'journalctl --catalog --unit=NAME')
#    sch    (provides help for the 'sc' command)
#
##---------------------------------------------------------------------------##
#
#   Setup:
#    1. Put this script into /usr/local/bin
#    2. Run the 'sc --setup' to set up the symlinks
#
##---------------------------------------------------------------------------##
#   BUUS: This script is part of Brian's Useful Utilities Set
##---------------------------------------------------------------------------##
PROGRAM_TO_RUN='systemctl'
COMMAND=''

BASENAME="$(basename $0)"
if [ $BASENAME = 'sc' -a "$1" = '--setup' ]
then
    DIRNAME=$(dirname $0)
    [ "$DIRNAME" ] && cd $DIRNAME
    echo -n "Setting up:"
    awk '/^#[[:space:]]*sc[a-z][[:space:]]/{print $2}' sc | while read X
    do
        [ -L $X ] || (echo -n " $X,"; ln -s sc $X)
    done
    echo " done"
    exit
fi

case $BASENAME in
  scs)  COMMAND='start';;
  sck)  COMMAND='stop';;
  scr)  COMMAND='restart';;
  scl)  COMMAND='reload';;
  scq)  COMMAND='status';;
  sct)  COMMAND='status';;
  scj)  PROGRAM_TO_RUN='journalctl';;
  sch)  COMMAND='sc-show-help';;
esac

#--- Handle a 'help' command (-h, --help)
if [ "$1" = '-h' -o "$1" = "--help" ]
then
    if [ ! "$COMMAND" ]
    then
        echo "Running 'systemctl --help' -- run 'sch' for help on 'sc' itself"
        sleep 1
    fi
fi

#--- Handle 'scj UNIT-NAME', where the user wants the journal for a given unit
if [ "$PROGRAM_TO_RUN" = 'journalctl' -a "$1" -a "${1:0:1}" != '-' ]
then
    COMMAND="--catalog --unit=$1"
    shift
fi

#--- Handle 'sc-show-help' (help for the 'sc command'
if [ "$COMMAND" = 'sc-show-help' ]
then
    awk '
        /#[[:space:]]*sch/ { exit }
        /#[[:space:]]*[[:alnum:]]+:/ { sw = 1 }
        sw == 1 && /^#[[:space:]]*$/ { sw = 2 }
        sw == 2 { match($0, /^#\t(.*)/, a); print a[1]  }
    ' $0
    echo
    exit
fi

echo -n " >> $PROGRAM_TO_RUN $COMMAND"; [ "$1" ] && echo -n " $@"; echo
exec $PROGRAM_TO_RUN $COMMAND "$@"

# vim: tabstop=4