Big Sur Homebrew xcrun: error: invalid active developer path

Bei meinem letzten Update von Homebrew unter macOS Big Sur hatte ich die Fehlermeldung, dass es eine ungültigen Pfadangabe für die Entwicklerwerkzeuge gäbe. Da ich nur die Kommandozeilenwerkzeuge für macOS nutze wird diese nicht einem Update unterzogen.
Bei einer kompletten Installation von Xcode würde dies automatisch geschehen.

Um das Update selbst anzustoßen genügt ein:

➜  ~ xcode-select --install

Shell Helligkeit des externen Monitors steuern

Aufstehen, die gut versteckten Taster suchen, Einstellen, hinsetzen. Das gilt auch für meinen externen Monitor, welchen ich öfters wegen der Sonneneinstrahlung anpassen muss.

Hier hilft mir xrandr in der Shell. Zuerst muss ich den richtigen angeschlossen Monitor finden und kann dann über Parameter die gewünschte Helligkeit einstellen. Bei Nutzung als Tastaturkürzel in TilingWMs eine große Hilfe.

⏚ [ChristianGrube:~] $ xrandr -q|grep "HDMI"

HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
HDMI-2 disconnected (normal left inverted right x axis y axis)
HDMI-3 disconnected (normal left inverted right x axis y axis)

⏚ [ChristianGrube:~] $ xrandr --output HDMI-1 --brightness 1.2

Die augenschonende Schriftart für das Arbeiten mit Code und Shell

Typeface Name: Hack

Meine Empfehlung für das kommende Jahr doch einmal die Schriftart zu ändern und eine neue für die Konsole und das Programmieren zu nutzen. Die Schriftart Hack lässt sich in jeder Größe sehr leicht lesen.
Ein Blick auf die Proben sollte überzeugen.

Sie ist bei jeder größeren Linuxdistribution in den Repositories zu finden, lässt sich aber auch Systemen wie MacOs und Windows nachinstallieren. Ich nutze sie schon länger auf Grund der schnell zu erfassenden Gestaltung und damit einhergehender Augenfreundlichkeit.

macOS: SSH Hosts mit Autovervollständigung aufrufen

Es gibt unter macOS Mojave keine Autovervollständigung der definierten Hosts aus der Datei ~/.ssh/config. Hierzu habe ich in die Datei ~/.bash_profile folgende Funktion eingetragen :

function __completeSSHHosts {
	COMPREPLY=()
	local currentWord=${COMP_WORDS[COMP_CWORD]}
	local completeHosts=$(
		cat "$HOME/.ssh/config" | \
			grep --extended-regexp "^Host +([^* ]+ +)*[^* ]+ *$" | \
			tr -s " " | \
			sed -E "s/^Host +//"
	)

	COMPREPLY=($(compgen -W "$completeHosts" -- "$currentWord"))
	return 0
}

complete -F __completeSSHHosts ssh

Nun reicht wieder ein ssh TAB in der Konsole um die einzelnen Hosts und der damit verbundenen Konfiguration aufzurufen.

What is my IP für die Shell

Unter der Adresse https://ifconfig.co/ gibt es einen Dienst, welcher die öffentliche Adresse des genutzten Clients ausgibt. ifconfig.co lässt sich sehr gut in eigene Scripte durch die Unterstützung von curl, httpie, GNU Wget und fetch einbinden.

Ausgegeben werden hier nicht nur die IP-Adresse (Oktett, Dezimal), sondern auf Wunsch auch noch der Standort (ISO,Stadt, Land, GPS-Koordinaten) und die Erreichbarkeit von Ports ausgegeben.

Es ist möglich die Webanwendung auf einem eigene Host zu installieren, die Quellen liegen in einem öffentlichen Repository auf Github.

Kopieren und verschieben mit Fortschrittsanzeige in einem Terminal

Folgenden Aliaseintrag in die Datei ~/.bashrc bzw die eingebundene Aliasdatei einfügen:

alias rsyncp="rsync --partial --progress --append --rsh=ssh -r -h -z"
alias rsyncmv="rsync --partial --progress --append --rsh=ssh -r -h -z--remove-sent-files"

Legende

Wir missbrauchen hier das Programm rsync:

  • –partial Teilweise übertragene Daten behalten
  • –progress Detailierte Informationen über den Ablauf ausgeben
  • –append nicht vollständig übertragene Daten wieder aufnehmen.
  • Remoteshellprogramm ist ssh und kein TCP-Daemon
  • -r rekursives Übertragen der Daten
  • -h human readable
  • -z Daten bei der Übertragung komprimieren. Wäre nur sinnvoll bei einer SSH-Verbindung. Da ich den Befehl für lokale und entfernte Übertragungen nutze habe ich den Parameter doch mit eingepflegt.
  • –remove-sent-files übertragene Daten löschen. Dies kommt nur bei dem Befehl für das verschieben zum tragen