development:scripts:shell
Table of Contents
Shell
Links
- en.wikibooks.org: Bourne Shell Scripting
- SHELLdorado: Shell Scripts
- The Linux Documentation Project: Advanced Bash-Scripting Guide
- Bash Hackers Wiki: List of Bash online-tutorials
- fahd.blog: Shell Scripting - Best Practices
- Simon Nattrass: Making Scripts Portable
- Ralf Hoppe: Bash-Scripting Kurzreferenz (sorry, only available in German)
Helpful Aliases
alias ..='cd ..' alias ...='cd ../..' alias +='pushd .' alias -- -='popd' alias ll='ls -lF' alias la='ls -AF' alias l='ls -CF' alias e='/usr/bin/emacsclient -a /usr/bin/emacs -n'
Optional source another script
if [ -f ~/.bashrc-rho ]; then . ~/.bashrc-rho fi
How to "source" an environment for a command
$SHELL -c "( source env-of-cmd.sh ; $* )"
How to "daemonize" a script
if [ "x$1" != "x--" ]; then echo "restarting as daemon..." $0 -- & exit 0 fi # stuff to do
Kill a child after timeout
TIMEOUT=5 echo -n "executing app... " app & PID_APP=$! ( sleep $TIMEOUT && kill -9 $PID_APP ) 2>/dev/null & PID_WATCHER=$! if wait $PID_APP 2>/dev/null; then echo "done." kill -9 $PID_WATCHER wait $PID_WATCHER 2>/dev/null else echo "error." fi
Read/Write number binary
# write to file (example: 1st byte in file) echo -ne "$(printf '\\x%x' $number)" | dd of=<file> count=1 bs=1c 2>/dev/null # read from file number="$(dd if=<file>" count=1 bs=1c 2>/dev/null | od -i | tr -s ' ' | cut -s -d ' ' -f 2)" if [ $(echo "$number" | grep -c -E "^[0-9]+$") -ne 0 ] ; then # success fi
Generate a "C" source from binary file
echo "/* HEADER */" echo : : echo "static int binarray = {" od -v -t x1 -A n $FILE | sed -e 's/\([0-9a-f][0-9a-f]\)/0x\1,/g' echo "};"
Compare two directory listings (regarding names and size)
ls -lL <path/to/dir1> | sed -e 's/ [ ]*/ /g' | cut -d ' ' -f '5,9-' | sort -k 2 > dir1.lst ls -lL <path/to/dir2> | sed -e 's/ [ ]*/ /g' | cut -d ' ' -f '5,9-' | sort -k 2 > dir2.lst diff dir1.lst dir2.lst
development/scripts/shell.txt · Last modified: 2022/05/24 09:59 by Ralf H.