Einstellungen der Kommandozeile

Seit MacOS X 10.15 Catalina ist nicht mehr bash, sondern zsh die Standard-Shell.

Um zsh zu konfigurieren, kann eine Datei ~/.zshrc angelegt werden, deren Kommandos beim Öffnen eines Terminalfenster sofort ausgeführt werden.

Die verfügbaren Optionen können hier eingesehen werden:

man zshoptions

Zuerst die Datei anlegen und im Texteditor öffnen:

touch ~/.zshrc
open -t ~/.zshrc

Dort folgenden Inhalt einfügen:

################################ Willkommen ################################
echo
echo "                               * --------------- *"
echo "                               *  Café MegaByte  *"
echo "                               * --------------- *"
echo
echo '--------------------------------------------------------------------------------'


################################ Kurzbefehle ################################
echo 'Z-Profil-Datei editieren  profile'
alias profile="open -t ~/.zshrc"

echo 'History anzeigen          history'
alias history="fc -l 1 | open -ft"

echo 'History neu einlesen      hi'
alias hi="fc -RI"

echo 'Anständiges Listing       ll      = ls -lah'
alias ll="ls -lah"

echo '                          lm      = ll | more'
alias lm="ll | more"

echo 'Legacy back               cd..    = cd ..'
alias cd..="cd .."

echo 'man-Page (neues Fenster)  manpage <Page>'
manpage()
{
open x-man-page://$@
}

echo 'man-Page als Text         mantext <Page>'
mantext()
{
MANWIDTH=80 MANPAGER='col -bx' man $@ | open -f -t
}

echo 'man-Page als PostScript   manps   <Page>'
manps()
{
# Wenn die Datei "Befehl.ps" nicht existiert, nehmen wir die
PSFILE="/Users/markus/Desktop/${@}.ps"
if [ -e $PSFILE ]
then
	# Sonst nehmen wir eine Temp-Datei
	PSFILE=`mktemp ~/Desktop/${@}_XXX` || exit 1
	chmod 644 $PSFILE
	mv $PSFILE ${PSFILE}.ps
	PSFILE=${PSFILE}.ps
fi
man -t "$@" >> $PSFILE
}

echo 'man-Page als PDF          manpdf  <Page>'
# Bis MacOS 12 Monterey
# man -t "$@" | open -f -a /System/Applications/Preview.app/
#
# MacOS 13 Ventura
# TMPFILE=`mktemp /tmp/manpdf.XXXXX` || exit 1
# rm $TMPFILE
# TMPFILE="${TMPFILE}.pdf"; man -t "$@" | pstopdf -o $TMPFILE > /dev/null
# open $TMPFILE -a /System/Applications/Preview.app/
# }
#
# Ab MacOS 14 Sonoma kann der Mac kein PostScript mehr interpretieren. :-(
manpdf()
{
MANPATH=`man -w $@`
mandoc -Tpdf $MANPATH | open -f -a Preview
}

echo 'Gatekeeper entfernen      gk <Ordner>/<Datei>'
gk()
{
xattr -d -r com.apple.quarantine "$@"
}

echo 'Monitor ausschalten       dis'
alias dis="pmset displaysleepnow"

echo 'Dock neustarten           killdock'
killdock()
{
killall Dock;
/System/Library/CoreServices/Dock.app/Contents/MacOS/Dock &
}

# Dieses Kürzel ist in den SSH-Einstellungen konfiguriert.
# Es wird in allen fortfolgenden SSH-Kurzbefehlen verwendet.
echo 'SSH mit Mac mini          ssh mac-mini' 

echo 'SSH-Tunnel Screensharing  ssh1'
alias ssh1="ssh -N mac-mini -L 5900:mac-mini:5900"

echo 'SSH-Tunnel Plex           ssh2'
alias ssh2="ssh -N mac-mini -L 32400:mac-mini:32400"

echo 'An Mac mini Schr. senden  send2mac <Datei> <Name auf Schr.>'
send2mac()
{
cat $1 | ssh mac-mini "cat > ~/Desktop/$2"
}

# Dies ist keine endlose Rekursion, auch wenn es so aussieht.
# Die Shell erkennt die Rekursion und verwendet für das "cd"
# innerhalb der Funktion das eingebaute cd-Kommando.
echo 'CD mit Auto-Listing'
mycd()
{
cd "$@"
ll
}
alias cd=mycd


################################ Einstellungen ################################

# Ordner in Farbe
export CLICOLOR=1

# Ordner in grün
export LSCOLORS=cxxxxxxxxxxxxxxxxxxxxx

# Leerzeile vor dem Prompt
precmd() { echo }

# Prompt mit vollem Pfad und Zeilenumbruch
export PS1="%n@%m %F{green}%~%f
$ "

# Prompt mit vollem Pfad
export PS1='%n@%m %F{green}%~%f $ '

# Rot blinkendes sudo
export SUDO_PROMPT=$'[\e[31;5msudo\e[m] Paßwort für \e[33;1m%p\e[m: '

# Keine doppelte History
#für Bash: export HISTCONTROL=erasedups
setopt HIST_IGNORE_ALL_DUPS

# History-AutoComplete
export INPUTRC=$HOME/.inputrc

# History sofort nach Befehlseingabe aktualisieren
setopt SHARE_HISTORY

# Unnötige Leerzeichen entfernen
setopt HIST_REDUCE_BLANKS

# Größe der History
export HISTSIZE=100

# Größe der beim Logout gespeicherten History
export SAVEHIST=100

echo '--------------------------------------------------------------------------------'

#-------------------------#
# Café MegaByte           #
#-------------------------#

Die einzelnen Kurzbefehle und Einstellungen können bei Bedarf entfernt bzw. auskommentiert werden. Damit man sie nicht vergißt, werden sie in jedem neuen Terminalfenster erklärt.

Die SSH-Kurzbefehle erfordern, daß ssh entsprechend konfiguriert ist:

Hier werden die verwendeten Kurzbefehle für SSH-Tunnel erklärt.