diff --git a/.profile b/.profile index 679f2460..d1082b71 100644 --- a/.profile +++ b/.profile @@ -56,7 +56,7 @@ fi unset TEXDIR ## Make 'less' more friendly for non-text input files, see lesspipe(1). -command -v lesspipe >/dev/null && eval "$(lesspipe)" +command -v lesspipe >/dev/null 2>&1 && eval "$(lesspipe)" ## Manpage. export MANPAGER="less -s" @@ -94,12 +94,12 @@ fi ## Default text editor EDITOR="nano" -command -v vim >/dev/null && EDITOR="vim" -command -v emacs >/dev/null && EDITOR="emacs" +command -v vim >/dev/null 2>&1 && EDITOR="vim" +command -v emacs >/dev/null 2>&1 && EDITOR="emacs" GIT_EDITOR="$EDITOR" -## 'em' is a script for emacsclient. See 'homeinit'. -if command -v em >/dev/null; then +## 'em' is a script for emacsclient. See '.scripts/em'. +if command -v em >/dev/null 2>&1; then EDITOR='em' GIT_EDITOR='emc' fi @@ -108,14 +108,12 @@ export EDITOR export GIT_EDITOR ## Internet Browser -command -v luakit >/dev/null && export BROWSER="luakit" -command -v dwb >/dev/null && export BROWSER="dwb" +command -v luakit >/dev/null 2>&1 && export BROWSER="luakit" +command -v dwb >/dev/null 2>&1 && export BROWSER="dwb" ## SSH-Agent ## WARNING: this is insecure on machines where someone else has root access. -if command -v ssh-agent >/dev/null; then - eval "$(ssh-agent)" -fi +command -v ssh-agent >/dev/null 2>&1 && eval "$(ssh-agent)" ## Kill ssh-agent on session end. trap 'test -n "$SSH_AGENT_PID" && eval $(ssh-agent -k)' 0 diff --git a/.scripts/.tc-video-custom.in b/.scripts/.tc-video-custom.in index 940c1183..30831906 100644 --- a/.scripts/.tc-video-custom.in +++ b/.scripts/.tc-video-custom.in @@ -48,9 +48,9 @@ if ! $OPT_PROCESS; then exit fi -if ! command -v ffmpeg >/dev/null; then - echo "ffmpeg required." - exit +if ! command -v ffmpeg >/dev/null 2>&1; then + echo >&2 "'ffmpeg' not found in PATH. Exiting." + exit 1 fi _transcode () diff --git a/.scripts/archive b/.scripts/archive index a8d09f9e..ef164b83 100755 --- a/.scripts/archive +++ b/.scripts/archive @@ -63,8 +63,8 @@ fi ## We need 'realpath' since we need to work on the real path for the input ## files/folders and the archive location. Otherwise we could have troubles with ## circular symlinks and so on. -if ! command -v realpath >/dev/null; then - echo >&2 "'realpath' is required." +if ! command -v realpath >/dev/null 2>&1; then + echo >&2 "'realpath' not found in PATH. Exiting." exit 1 fi diff --git a/.scripts/bsdman b/.scripts/bsdman index 5ed85203..cbd1f6fe 100755 --- a/.scripts/bsdman +++ b/.scripts/bsdman @@ -19,7 +19,7 @@ fi AGENT="curl -s" -if ! command -v curl >/dev/null; then +if ! command -v curl >/dev/null 2>&1; then AGENT="wget -q -O - " fi diff --git a/.scripts/clonecd b/.scripts/clonecd index 45963af9..79a537be 100755 --- a/.scripts/clonecd +++ b/.scripts/clonecd @@ -39,14 +39,11 @@ if [ $# -eq 0 ]; then exit 1 fi - -if ! command -v readcd >/dev/null; then - echo >&2 "readcd required." - exit +if ! command -v readcd >/dev/null 2>&1; then + echo >&2 "'readcd' not found in PATH. Exiting." + exit 1 fi - - ## Fast? readcd dev=$DRIVE f="$1.iso" -v retries=5 timeout=30 -noerror diff --git a/.scripts/dwb-scheme b/.scripts/dwb-scheme index 7db6d177..920a5645 100755 --- a/.scripts/dwb-scheme +++ b/.scripts/dwb-scheme @@ -5,13 +5,13 @@ TERMCMD=xterm case ${DWB_SCHEME} in mailto) - ! command -v xclip >/dev/null && exit + ! command -v xclip >/dev/null 2>&1 && exit echo "${DWB_URI}" | sed -e 's/mailto://' -e 's/?/ /' | xclip -i ;; ftp) - ! command -v $TERMCMD >/dev/null && exit - ! command -v lftp >/dev/null && exit + ! command -v $TERMCMD >/dev/null 2>&1 && exit + ! command -v lftp >/dev/null 2>&1 && exit $TERMCMD -e "lftp ${DWB_URI}";; *) - ! command -v xdg-open >/dev/null && exit + ! command -v xdg-open >/dev/null 2>&1 && exit xdg-open "${DWB_URI}";; esac diff --git a/.scripts/extract b/.scripts/extract index d555421b..f1bf4700 100755 --- a/.scripts/extract +++ b/.scripts/extract @@ -55,7 +55,7 @@ if [ $# -eq 0 ]; then exit 1 fi -command -v atool >/dev/null && echo "You should use atool instead." && echo +command -v atool >/dev/null 2>&1 && echo "You should use atool instead." && echo _extract() { diff --git a/.scripts/git-get b/.scripts/git-get index 958d85fc..c4049386 100755 --- a/.scripts/git-get +++ b/.scripts/git-get @@ -43,13 +43,11 @@ if [ $# -eq 0 ]; then exit 1 fi - -if ! command -v git >/dev/null; then - echo >&2 "git required." - exit +if ! command -v git >/dev/null 2>&1; then + echo >&2 "'git' not found in PATH. Exiting." + exit 1 fi - for i; do git clone git@$DOMAIN:/$USER/$i done diff --git a/.scripts/homeclean b/.scripts/homeclean index 0c30d692..ecba8886 100755 --- a/.scripts/homeclean +++ b/.scripts/homeclean @@ -52,7 +52,7 @@ fi ## Clean trash if possible. echo echo "==> Emptying trash." -if ! command -v trash-empty >/dev/null; then +if ! command -v trash-empty >/dev/null 2>&1; then echo ":: 'trash-empty' not installed, you have to clean other drives manually." rm -rvf "$HOME/.local/share/Trash" else diff --git a/.scripts/homeinit b/.scripts/homeinit index 1563632b..ec78e013 100755 --- a/.scripts/homeinit +++ b/.scripts/homeinit @@ -33,7 +33,7 @@ if [ -d "$SOURCEDIR/contacts" ]; then echo fi -if command -v mutt >/dev/null; then +if command -v mutt >/dev/null 2>&1; then echo "==> Mutt" [ -d "$SOURCEDIR" ] && ln -snf "$SOURCEDIR/mails" "$HOME/.mutt.d" mkdir -p "$HOME/.cache/mutt/hcache" @@ -46,7 +46,7 @@ if [ -d "$SOURCEDIR/todo" ]; then echo fi -if command -v rtorrent >/dev/null; then +if command -v rtorrent >/dev/null 2>&1; then echo "==> rtorrent" ## We need the evaluation of the result, otherwise the variables will not ## get expanded, should it be '~' or "$HOME". @@ -55,7 +55,7 @@ if command -v rtorrent >/dev/null; then fi ## Luakit -- Install the adblock modules -if command -v luakit >/dev/null; then +if command -v luakit >/dev/null 2>&1; then echo "==> Luakit" git clone https://github.com/Plaque-fcc/luakit-adblock/ "$HOME/luakit-adblock" cp -fv ~/luakit-adblock/*.lua "$XDG_CONFIG_HOME/luakit" @@ -72,7 +72,7 @@ if command -v luakit >/dev/null; then fi ## dwb -- Install extensions. -if command -v dwb >/dev/null && [ ! -f "$XDG_DATA_HOME/dwb/extensions/adblock_subscriptions" ] ; then +if command -v dwb >/dev/null 2>&1 && [ ! -f "$XDG_DATA_HOME/dwb/extensions/adblock_subscriptions" ] ; then echo "==> dwb" dwbem -Ni adblock_subscriptions dwbem -Ni navtools @@ -97,7 +97,7 @@ if [ -d "$SOURCEDIR" ]; then fi ## News -if command -v newsbeuter >/dev/null; then +if command -v newsbeuter >/dev/null 2>&1; then echo "==> Newsbeuter" mkdir -p "$XDG_DATA_HOME/newsbeuter" [ -d "$SOURCEDIR" ] && ln -sf "$SOURCEDIR/news/urls" "$XDG_CONFIG_HOME/newsbeuter/" diff --git a/.scripts/imagemount b/.scripts/imagemount index bd4b5726..270a62b3 100755 --- a/.scripts/imagemount +++ b/.scripts/imagemount @@ -34,7 +34,7 @@ _mount () fi cdemu load $DEVICE "$1" - if [ $? -ne 0 ] && command -v fuseiso >/dev/null; then + if [ $? -ne 0 ] && command -v fuseiso >/dev/null 2>&1; then echo "Falling back to fuseiso." # LIST="$(mount | awk -v root="$FUSEROOT" '$1 == "fuseiso" && $3 ~ root {print $3}')" @@ -83,16 +83,6 @@ _umount () fi } - -if ! command -v udiskie >/dev/null; then - echo "udiskie required." - exit -fi -if ! command -v cdemu >/dev/null; then - echo "cdemu required." - exit -fi - _printhelp () { cat</dev/null; then - echo >&2 "'realpath' is required." - exit 1 -fi - - +check() +{ + for i ; do + if ! command -v $i >/dev/null 2>&1; then + echo >&2 "'$i' not found in PATH. Exiting." + exit 1 + fi + done +} ## realpath is needed to check if image was already mounted or not. +check udiskie cdemu realpath + if $OPT_UNMOUNT; then for i ; do _umount "$(realpath "$i")" diff --git a/.scripts/netinit b/.scripts/netinit index beb4ca65..ec24868f 100755 --- a/.scripts/netinit +++ b/.scripts/netinit @@ -27,7 +27,7 @@ Usage: ${1##*/} [OPTIONS] Connect to a wireless network. - -c: Decrypt $WSFILE with ccrypt. + -c: Decrypt $WSFILE with ccrypt's ccat command'. -d: Use DHCP. -h: Show this help. -t ITER: Timeout (default: $TIMEOUT_LIMIT). @@ -73,10 +73,11 @@ if [ $(id -u) -ne 0 ]; then fi if [ $USE_CRYPT -eq 1 ]; then - if ! command -v ccrypt >/dev/null; then - echo "You need to have 'ccrypt' installed." - exit + if ! command -v ccat >/dev/null 2>&1; then + echo >&2 "'ccat' not found in PATH. Exiting." + exit 1 fi + WPA_SUPPLICANT_CONF="$(ccat "$WSFILE")" if [ $? -ne 0 ]; then echo "Failed to decrypt wpa_supplicant config from $WSFILE." diff --git a/.scripts/netmap b/.scripts/netmap index e1345a19..acc3b618 100755 --- a/.scripts/netmap +++ b/.scripts/netmap @@ -12,9 +12,9 @@ EOF fi ## Network operations -if ! command -v nmap >/dev/null; then - echo "nmap required." - exit +if ! command -v nmap >/dev/null 2>&1; then + echo >&2 "'nmap' not found in PATH. Exiting." + exit 1 fi echo "$1" diff --git a/.scripts/pacman-diff b/.scripts/pacman-diff index 3db2220b..819582f8 100755 --- a/.scripts/pacman-diff +++ b/.scripts/pacman-diff @@ -47,7 +47,10 @@ if [ $# -eq 0 ]; then exit 1 fi -! command -v pacman >/dev/null && echo "You need pacman to run this script." && exit 1 +if ! command -v pacman >/dev/null 2>&1; then + echo >&2 "'pacman' not found in PATH. Exiting." + exit 1 +fi PKGLIST="$(mktemp)" FILE="$(mktemp)" diff --git a/.scripts/pacsize b/.scripts/pacsize index 58ecb264..7ebf6c14 100755 --- a/.scripts/pacsize +++ b/.scripts/pacsize @@ -87,7 +87,7 @@ done shift $(($OPTIND - 1)) ## If expac is available, use it since it is much faster. -if ! command -v expac >/dev/null; then +if ! command -v expac >/dev/null 2>&1; then expac -HK -$cmd '%6m %n' "$@" | awk -v sum=$opt_total '{sub(/[\.,]00/,""); if(sum) total+=$1; printf("%6s %s %s\n",$1,$2,$3)} END {if(sum) print total, "KiB TOTAL"}' | ($opt_sort || cat) exit fi @@ -109,7 +109,7 @@ if [ $# -eq 0 ]; then exit 1 fi -if ! command -v pacman >/dev/null; then +if ! command -v pacman >/dev/null 2>&1; then echo "You need the pacman package manager." >&2 exit 1 fi diff --git a/.scripts/pkggen b/.scripts/pkggen index cdde2862..1e321eef 100755 --- a/.scripts/pkggen +++ b/.scripts/pkggen @@ -8,7 +8,7 @@ PKG_ROOT="$HOME/.pkg" mkdir -p "$PKG_ROOT" ## Arch Linux -if command -v pacman >/dev/null; then +if command -v pacman >/dev/null 2>&1; then ## Note: the "-n" option was added between 2012 and 2013. pacman -Qnq | sort >"$PKG_ROOT/arch-official-${HOST}" pacman -Qmq | sort >"$PKG_ROOT/arch-aur-${HOST}" diff --git a/.scripts/prettyc b/.scripts/prettyc index 911a5f54..af4889f0 100755 --- a/.scripts/prettyc +++ b/.scripts/prettyc @@ -18,10 +18,9 @@ if [ $# -eq 0 ] || [ "$1" = "-h" ]; then exit fi - -if ! command -v indent >/dev/null; then - echo "Please install 'indent'." - exit +if ! command -v indent >/dev/null 2>&1; then + echo >&2 "'indent' not found in PATH. Exiting." + exit 1 fi CMD="indent -i4 -ppi4 -bli0 -cli4 -nut" diff --git a/.scripts/realpath b/.scripts/realpath index 400384f1..b2080dd8 100755 --- a/.scripts/realpath +++ b/.scripts/realpath @@ -1,10 +1,10 @@ #!/bin/sh ## This is a compatibility wrapper for 'realpath'. -if command -v greadlink >/dev/null; then +if command -v greadlink >/dev/null 2>&1; then ## On BSD systems, we might have greadlink greadlink -f "$@" -elif command -v readlink >/dev/null && [ "$(uname)" = "Linux" ]; then +elif command -v readlink >/dev/null 2>&1 && [ "$(uname)" = "Linux" ]; then readlink -f "$@" else ## Dirty fallback diff --git a/.shell.d/alias_rc b/.shell.d/alias_rc index 3274d0dd..a5c0b9ab 100644 --- a/.shell.d/alias_rc +++ b/.shell.d/alias_rc @@ -48,10 +48,10 @@ alias grep='grep --color=auto' alias nox='find . -type f -exec chmod a-x {} +' ## Get your external IP. -command -v curl >/dev/null && alias myip='curl ifconfig.me' +command -v curl >/dev/null 2>&1 && alias myip='curl ifconfig.me' ## Network discovery. -command -v nmap >/dev/null && alias network-discover='nmap -sP "192.168.0.*"' +command -v nmap >/dev/null 2>&1 && alias network-discover='nmap -sP "192.168.0.*"' ## Prevents accidentally clobbering files. alias mkdir='mkdir -p' @@ -61,7 +61,7 @@ alias cls='printf "\ec"' ## Shutdown / Reboot. ## If you do not want to get prompted for your password, configure sudo properly. -if command -v systemctl >/dev/null; then +if command -v systemctl >/dev/null 2>&1; then alias halt='systemctl poweroff' else alias halt='sudo halt -p' @@ -69,10 +69,10 @@ fi ## Start X and lock current terminal (press ENTER when back in terminal to ## prompt for password). Useless if X is running on the same TTY. -command -v vlock >/dev/null && alias sx='startx & vlock' +command -v vlock >/dev/null 2>&1 && alias sx='startx & vlock' ## Zathura -- Fork to background. -command -v zathura >/dev/null && alias zat='zathura --fork' +command -v zathura >/dev/null 2>&1 && alias zat='zathura --fork' ## Xrandr alias xmorphnone='xrandr --output $(xrandr | grep "\" | cut -f1 -d" ") --transform none' @@ -83,10 +83,10 @@ alias xmorphzi='xrandr --output $(xrandr | grep "\" | cut -f1 -d" ") alias xres='xrandr --output $(xrandr | awk '"'"'NR==2 {print $1;exit}'"'"') --auto && xrandr -s $(xrandr | awk '"'"'/^ / {print $1;exit}'"'"')' ## Udiskie -command -v udiskie-umount >/dev/null && alias uua='udiskie-umount -a' +command -v udiskie-umount >/dev/null 2>&1 && alias uua='udiskie-umount -a' ## Emacs -command -v em >/dev/null && alias emacs-reload="emacsclient -e '(kill-emacs)' >/dev/null 2>&1; emacs --daemon" +command -v em >/dev/null 2>&1 && alias emacs-reload="emacsclient -e '(kill-emacs)' >/dev/null 2>&1 2>&1; emacs --daemon" ##============================================================================== ## Zsh power aliases @@ -105,19 +105,16 @@ command -v em >/dev/null && alias emacs-reload="emacsclient -e '(kill-emacs)' >/ ##============================================================================== ## Pacman aliases ##============================================================================== -if command -v "pacman" >/dev/null; then - PACMAN_FRONTEND='pacman' - - ## The eval trick lets us define the alias after the variable has been expanded. - eval 'alias pc="sudo $PACMAN_FRONTEND -Sc"' - eval 'alias pi="sudo $PACMAN_FRONTEND -S --needed"' - eval 'alias pqi="$PACMAN_FRONTEND -Qi"' - eval 'alias pqo="$PACMAN_FRONTEND -Qo"' - eval 'alias pqs="$PACMAN_FRONTEND -Qs"' - eval 'alias pr="sudo $PACMAN_FRONTEND -Rs"' - eval 'alias psi="$PACMAN_FRONTEND -Si"' - eval 'alias pss="$PACMAN_FRONTEND -Ss"' - eval 'alias pu="sudo $PACMAN_FRONTEND -Syu"' +if command -v "pacman" >/dev/null 2>&1; then + alias pc='sudo pacman -Sc' + alias pi='sudo pacman -S --needed' + alias pqi='pacman -Qi' + alias pqo='pacman -Qo' + alias pqs='pacman -Qs' + alias pr='sudo pacman -Rs' + alias psi='pacman -Si' + alias pss='pacman -Ss' + alias pu='sudo pacman -Syu' fi ##============================================================================== diff --git a/.shell.d/funs_rc b/.shell.d/funs_rc index 159e4922..6a2dcc9b 100644 --- a/.shell.d/funs_rc +++ b/.shell.d/funs_rc @@ -45,7 +45,7 @@ search() ## Vim-only: search the vim reference manual for a keyword. ## Usage: :h -if command -v vim >/dev/null; then +if command -v vim >/dev/null 2>&1; then :h() { vim --cmd ":silent help $@" --cmd "only"; @@ -100,7 +100,7 @@ termsupport() done | sort -nk2 } -if command -v highlight >/dev/null ; then +if command -v highlight >/dev/null 2>&1; then hlt-viewer () { local SAMPLE DUMMY @@ -163,12 +163,12 @@ echokeymap () typex() { local xpath - if [ $# -ne 1 ] || ! command -v "$1" >/dev/null; then + if [ $# -ne 1 ] || ! command -v "$1" >/dev/null 2>&1; then echo "Provide an existing command as parameter." return fi - if [ -z "$(command -v "$1" | grep ^/)" ]; then + if [ -z "$(command -v "$1" 2>/dev/null | grep ^/)" ]; then type "$1" return fi @@ -276,7 +276,7 @@ xmultioff () ## Pacman functions ##============================================================================== -if command -v pacman >/dev/null; then +if command -v pacman >/dev/null 2>&1; then ## Get detailed file list for the specified packages, omitting folders. pql () {