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:
- SSH Grundeinstellungen (Nicht zwingend erforderlich, aber empfehlenswert.)
- SSH Zugangsschlüssel erzeugen, da hier erklärt wird, wie man sich paßwortlos verbindet ohne Angabe eines Benutzers.
Hier werden die verwendeten Kurzbefehle für SSH-Tunnel erklärt.