Difference between revisions of "Terminal Quickies"

From macwrench
Jump to navigation Jump to search
(Sandbox-Informationen anzeigen)
(Mitteilungszentrale (Notification Center) neu starten)
Line 213: Line 213:
  
 
Anschließend wird es automatisch neu gestartet, deutlich erkennbar am verzögerten Aufbau der einzelnen Today Extensions.
 
Anschließend wird es automatisch neu gestartet, deutlich erkennbar am verzögerten Aufbau der einzelnen Today Extensions.
 +
 +
=== macOS Upgrade-Hinweis im Systemupdater ausblenden===
 +
Um beispielsweise den Upgrade-Hinweis auf macOS Catalina in Mojave auszublenden, ist folgende Terminal-Anweisung auszuführen:
 +
  sudo softwareupdate --ignore "macOS Catalina"
 +
Nach der nächsten Updatesuche sollte dann der Hinweis verschwinden. Um das Upgrade wieder einzublenden, ist folgende Anweisung im Terminal auszuführen:
 +
  sudo softwareupdate --reset-ignored "macOS Catalina"
  
 
==Freigaben starten==
 
==Freigaben starten==

Revision as of 17:02, 8 October 2019


In diesem Artikel findet sich eine Sammlung diverser Terminal-Kommandos, die im Alltag immer wieder nützlich sein können. Falls bereits aus einem dieser Quickies ein eigener Artikel entstand, ist dieser jeweils am Ende der Beschreibung verlinkt.

Contents

Dateien und Verzeichnisse

Aliase finden

mdfind -onlyin <path> 'kMDItemKind == "Alias"'

z.B.:

mdfind -onlyin ~/Documents/ 'kMDItemKind == "Alias"'

Zwei Verzeichnisse miteinander vergleichen

Mit dem Font Awesome 5 solid terminal.svg diff-Kommando lassen sich sehr einfach die Inhalte zweier Verzeichnisse rekursiv miteinander vergleichen (beispielsweise zum nachträglichen Verifizieren eines Backups). Durch Entfernen von "r" im folgenden Beispiel wird der Vergleich nicht-rekursiv durchgeführt:

diff -qr ./old/ ./new/

Beispielausgabe:

Only in ./old/: aDeletedFile.txt
Files ./old/anotherFile.txt and ./new/anotherFile.txt differ
Only in ./new/: aNewFile.txt

Alle .svn Metadaten rekursiv löschen

Folgende Anweisung löscht alle .svn Verzeichnisse innerhalb des aktuellen Verzeichnisses und aller Unterverzeichnisse (rekursiv):

find . -regex '.*.svn' -exec rm -rf "{}" \;

Alle .DS_Store Dateien rekursiv löschen

Folgende Anweisung löscht alle .DS_Store Dateien innerhalb des aktuellen Verzeichnisses und aller Unterverzeichnisse (rekursiv):

sudo find ./ -name ".DS_Store" -depth -exec rm {} \;

Um die Dateien auf dem gesamten System zu löschen, ist ./ durch / zu ersetzen.

.DS_Store Dateien auf Netzwerkvolumes verhindern

Um das Erstellen dieser Dateien auf Netzwerkvolumes dauerhaft zu unterbinden, ist folgendes im Terminal einzugeben:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Um dies wieder zu deaktivieren, ist folgende Anweisung einzugeben:

defaults delete com.apple.desktopservices DSDontWriteNetworkStores

Daten sicher löschen

Die Funktion "sicher löschen" des Finder Papierkorbs steht auch im Terminal zur Verfügung und zwar über das Kommando Font Awesome 5 solid terminal.svg srm:

srm FILE_OR_DIRECTORY
srm -r DIRECTORY_RECURSIVELY

Dabei stehen verschiedene Varianten zur Auswahl, die auch aus dem Disk Utility bekannt sein dürften (zum Löschen von Partitionen):

-n, --nounlink overwrite file, but do not rename or unlink it
-s, --simple only overwrite with a single pass of random data
-m, --medium overwrite the file with 7 US DoD compliant passes (0xF6, 0x00, 0xFF, random, 0x00, 0xFF, random)
-z, --zero after overwriting, zero blocks used by file

Quelle: Font Awesome 5 solid terminal.svg srm manpage, siehe auch: srm in der Wikipedia (engl.)

Dateien und Verzeichnisse verstecken

Folgende Anweisung bewirkt, dass die jeweiligen Objekte im Finder nicht mehr sichtbar sind, ohne diese umbennen zu müssen (nur auf HFS+ Volumes):

chflags hidden FILE_OR_DIRECTORY

Folgendes Kommando bewirkt genau das Gegenteil:

chflags nohidden FILE_OR_DIRECTORY

Siehe auch: Dateien und Ordner verstecken und schützen hier auf Macwrench

.deb Archive entpacken

Die Installationsarchive Debian-basierter Linux-Distributionen lassen sich auch unter Mac OS X mit Bordmitteln entpacken. Dazu wird das Kommandozeilenprogramm Font Awesome 5 solid terminal.svg ar verwendet, beispielsweise so:

ar vx dateiname.deb

Die eigentlichen Dateien sind im dabei extrahierten Archiv data.tar.gz enthalten, das sich mit jedem handelsüblichen Packprogramm (z.B. The Unarchiver) oder eben auch im Terminal entpacken lässt:

tar xvfz data.tar.gz

Die Dateien control.tar.gz und debian-binary werden zum reinen Extrahieren einzelner Dateie nicht benötigt, sie enthalten lediglich Informationen zur Installation des Paketes (siehe auch: Debian-Paket in der Wikipedia).

Dateilisting mit vollständigen Datumsangaben

Standardmäßig zeit Font Awesome 5 solid terminal.svg ls das Dateidatum im Format "Tag Monatsname Stunden:Minuten" an. Um zusätzlich die Sekunden- und Jahresangaben anzuzeigen, ist unter OS X lediglich die Option -T (Großschreibung beachten!) anzuhängen, beispielsweise so:

ls -alT

DVD-RAM oder BD-RE mit best. UDF Version formatieren

die für DVD-RAM geeignete Version ist (v.a. aus Performancegründen, siehe hier und hier) 2.01:

newfs_udf -v "DISCNAME" -r 2.01 /dev/diskX

Für blu-rays (BD-RE) sollte Version 2.5 oder 2.6 verwendet werden:

newfs_udf -v "DISCNAME" -r 2.5 /dev/diskX

Vor dem Formatieren ist die disc zu Deaktivieren was entweder über das Festplatten-Dienstprogramm (Disk Utility) oder mit Hilfe der folgenden Terminal-Anweisung erfolgen kann:

discutil unmountDisk /dev/diskX

diskX ist hierbei durch den jeweils korrekten Wert zu ersetzen, der sich ebenfalls im Festplatten-Dienstprogramm (Disk Utility) oder mit Hilfe der folgenden Terminal-Anweisung ermitteln lässt:

diskutil list

Überprüfen lässt sich das dann mit dem UDF Media Reader

Administration

Aktuelle Arbeitsspeicher-Belegung prüfen

Durch die Eingabe vom vm_stat kann eine detaillierte Übersich der derzeitigen Arbeitsspeicherauslastung angezeigt werden. Zum errechnen der jeweiligen Größe in *byte ist der entsprechende Wert mit der "page size" zu multiplizieren und durch die jeweilige Potenz von 1024 zu teilen:

vm_stat

liefert beispielsweise:

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                        1005031.
Pages active:                       389132.
Pages inactive:                     182756.
Pages speculative:                  219753.
Pages wired down:                   298729.
"Translation faults":            831704131.
Pages copy-on-write:              21865968.
Pages zero filled:               402761914.
Pages reactivated:                 1065664.
Pageins:                           4099764.
Pageouts:                           699567.
Object cache: 181 hits of 1789806 lookups (0% hit rate)

389132 * 4096 / (1024^3) ≅ 1,4844 GB

Siehe auch:

Ungenutzten Arbeitsspeicher freigeben

Mit Font Awesome 5 solid terminal.svg purge kann derzeit ungenutzter, aber von Programmen noch reservierter Speicher wieder freigegeben werden:

purge

Startzeit von Prozessen ermitteln

Die folgende Anweisung bewirkt die Ausgabe der aktuell laufenden Prozesse inklusive deren Start-Uhrzeit:

ps -ef

PowerPC Applikationen finden

Mit Hilfe des foldenden Terminal-Kommandos lassen sich installierte PowerPC Anwendungen ausfindig machen. Das ist insbesondere vor einem Update auf OSX Lion hilfreich, da diese Anwendungen dann nicht mehr laufen werden (die PowerPC-Unterstützung via Rosetta wurde bekanntlich mit 10.7 entfernt):

system_profiler SPApplicationsDataType

In der dadurch erzeugten Liste lassen sich anhand des Attributs "Kind" PowerPC-Anwendungen identifizieren. Für eine Schnellsuche (ob überhaupt PowerPC Anwendungen existieren) genügt folgender Aufruf:

system_profiler SPApplicationsDataType | grep PowerPC

Siehe auch: Font Awesome 5 solid terminal.svg system_profiler manpage, System Profiler in der Wikipedia (engl.)

32-Bit Applikationen finden

Die folgende Terminal-Anweisung ermittelt alle auf dem lokalen System vorhandenen 32bit Applikationen und Programme:

mdfind "kMDItemExecutableArchitectures == '*i386*' && kMDItemExecutableArchitectures != '*x86*'"

und so kann man die Suche auf ein best. Verzeichnis einschränken:

mdfind "kMDItemExecutableArchitectures == '*i386*' && kMDItemExecutableArchitectures != '*x86*'" | grep "/Applications/"

Alternativ kann dies auch über das Programm "Systeminformationen" ermittelt werden, und zwar über "Software" > "Programme" in der linken Spalte. In der oben rechts angezeigten Tabelle existiert dazu eine Spalte "64-Bit (Intel)".

Benutzer remote ausloggen

Hin und wieder kommt es auch unter Mac OS vor, dass die Oberfläche spinnt, keine Benutzeriennahmen annimmt oder der Finder komplett blockiert. Dazu muss man nicht notwendigerweise das komplette System zwangsweise ausschalten (via 4Sek. Powerbutton) sondern es genügt oftmals, entweder den Finder bzw. das Dock zu killen oder den jeweiligen Benutzer zwangsweise abzumelden. Damit werden dann allerdings auch die gestarteten Anwendungen – die ja alle als Kindprozesse von Font Awesome 5 solid terminal.svg loginwindow laufen – ebenfalls beendet, so dass nicht gespeicherte Daten unwiderbringlich verloren gehen.

Um die Benutzersitzung also zwangsweise zu beenden, sind folgende Schritte notwendig:

Mit folgendem Kommando die Prozessnummer der entsprechenden loginwindow-Instanz herausfinden (sollte am Benutzer zu erkennen sein):

ps -A -j | grep loginwindow

Mit Font Awesome 5 solid terminal.svg kill den Prozess beenden, z.B.:

sudo kill 123

Hinweis: der Prozess /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow console ist die eigene SSH Session.

Software-Updates nur herunterladen

Vor Mac OS X Snow Leopard (10.6) bot die Software-Update Applikation die Möglichkeit, Updates nur herunterzuladen ohne diese gleich zu installieren. In 10.6 fiel diese Option weg, lässt sich jedoch im Terminal weiterhin mit Hilfe des folgenden Kommandos ausführen:

softwareupdate -d -a

Die heruntergeladenen Installationspakete sind anschließend in folgendem Verzeichnis zu finden:

/Library/Updates/

Weitere Informationen dazu gibt es in der manpage zu Font Awesome 5 solid terminal.svg softwareupdate

Bluetooth-Assistent deaktivieren

Um das automatische Starten des Bluetooth-Assistenten zu deaktvieren, wenn beispielsweise beim Aufwachen aus dem Ruhezustand gerade keine Tastatur und/oder Maus aktiv ist, können folgende Anweisugnen im Terminal verwendet werden:

sudo defaults write /Library/Preferences/com.apple.Bluetooth BluetoothAutoSeekKeyboard '0'
sudo defaults write /Library/Preferences/com.apple.Bluetooth BluetoothAutoSeekPointingDevice '0'

Sprache im Anmeldebildschirm ändern

Mit Hilfe der folgenden Terminal-Anweisung kann die Systemsprache geändert werden:

sudo languagesetup

Siehe auch: support.apple.com

Laufende Dienste auflisten

Mit folgender Terminal-Anweisung lassen sich alle laufenden Dienste auflisten:

sudo launchctl list

Hiermit lässt sich prüfen, ob ein bestimmter Dienst gerade läuft, z.B. so:

$ sudo launchctl list | grep analyticsd
216	0	com.apple.analyticsd

Nähre Informationen über einen bestimmten Dienst gibt es mit obigem Kommando, wenn man den entsprechenden Identifier hinzufügt:

$ sudo launchctl list com.apple.analyticsd
{
	"EnableTransactions" = true;
	"LimitLoadToSessionType" = "System";
	"MachServices" = {
		"com.apple.analyticsd.managed" = mach-port-object;
		"com.apple.analyticsd" = mach-port-object;
	};
	"Label" = "com.apple.analyticsd";
	"TimeOut" = 30;
	"OnDemand" = true;
	"LastExitStatus" = 0;
	"PID" = 216;
	"Program" = "/System/Library/PrivateFrameworks/CoreAnalytics.framework/Support/analyticsd";
	"ProgramArguments" = (
		"/System/Library/PrivateFrameworks/CoreAnalytics.framework/Support/analyticsd";
	);
};

Beenden lässt sich ein Dienst dann mit folgender Anweisung:

sudo launchctl unload -w &lt;NAME>

Siehe auch: GIST pwnsdx/disable.sh

Mitteilungszentrale (Notification Center) neu starten

Wenn (z.B. während der Entwicklung) ein Today Widget das Notification Center lahmlegt oder man einfach den Neustart einer Today Extension erzwingen will, kann es notwendig werden, dieses einfach neu zu starten - beispielsweise mit Hilfe folgender Terminal-Anweisung:

killall NotificationCenter

Anschließend wird es automatisch neu gestartet, deutlich erkennbar am verzögerten Aufbau der einzelnen Today Extensions.

macOS Upgrade-Hinweis im Systemupdater ausblenden

Um beispielsweise den Upgrade-Hinweis auf macOS Catalina in Mojave auszublenden, ist folgende Terminal-Anweisung auszuführen:

 sudo softwareupdate --ignore "macOS Catalina"

Nach der nächsten Updatesuche sollte dann der Hinweis verschwinden. Um das Upgrade wieder einzublenden, ist folgende Anweisung im Terminal auszuführen:

 sudo softwareupdate --reset-ignored "macOS Catalina"

Freigaben starten

Einige Netzwerk-Dienste wie die Bildschirmfreigabe lassen sich auch aus dem Terminal heraus starten:

Screen Sharing

Dienst starten:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -off -restart -agent -privs -all -allowAccessFor -allUsers

Dienst beenden:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate

Keine Interaktionen zulassen (nur Beobachtungsmodus):

sudo defaults write /var/db/launchd.db/com.apple.launchd/overrides.plist com.apple.screensharing -dict Disabled -bool false

Für weitere Optionen siehe:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart --help

Über den Neustart des Mac hinaus aktiv lassen:

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist

Remote Login (SSHd)

Dienst starten:

sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

Dienst beenden:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist

Netzwerk

DNS-Cache leeren

Um nach Änderungen an der DNS-Konfiguration oder der lokalen Namensauflösung in Font Awesome 5 solid terminal.svg /etc/hosts kann man mit folgendem Terminal-Kommando den lokalen DNS-Cache leeren:

OS X Version Terminal-Anweisung
bis Mac OS 10.4 (Tiger) sudo lookupd -flushcache
bis Mac OS 10.6 (Snow Leopard) sudo dscacheutil -flushcache
bis OS X 10.8 (Mountain Lion) sudo killall -HUP mDNSResponder
OS X 10.9 (Mavericks) sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
OS X 10.10 (Yosemite) * bis 10.10.3:
sudo discoveryutil mdnsflushcache; sudo discoveryutil udnsflushcaches
seit 10.10.4:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
OS X 10.11 (El Capitan) sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
seit OS X 10.12 (Sierra) sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder; sudo killall mDNSResponderHelper

*) In Version 10.10.0 wurde mDNSResponder durch discoveryd ersetzt, der in Version 10.10.4 wegen anhaltender Probleme wieder entfernt wurde. Somit gleicht das Vorgehen in Version 10.10.4 und neuer wieder dem Vorgehen unter OS X Mavericks.

Alle DNS-Records einer Domain ermitteln

Um alle A-, MX-, SOA- etc. -Records einer Domain zu ermitteln, ist folgende Anweisung im Terminal einzugeben:

dig <HOSTNAME> ANY +nocmd +nostats +noquestion

TXT-Records können mit folgenden Anweidungen ausgelesen werden:

dig -t txt <HOSTNAME>
dig TXT <HOSTNAME>
host -t txt <HOSTNAME>

Geöffnete Ports auflisten

Alle geöffneten, numerischen Ports:

lsof -nP | grep LISTEN

dasselbe mit Dienstnamen statt Portnummern:

lsof | grep LISTEN

einen bestimmten Port prüfen (macOS 10.13 und neuer):

lsof -nP -i4TCP:<PORT> | grep LISTEN

z.B.:

sudo lsof -nP -i4TCP:80 | grep LISTEN

dasselbe unter älteren macOS Versionen:

lsof -nP -iTCP:<PORT> | grep LISTEN
lsof -nP -i:$PORT | grep LISTEN

ggf. ist der Aufruf über Font Awesome 5 solid terminal.svg sudo notwedig (z.B. für Ports < 1024)

Beispielausgabe:

$ sudo lsof -nP -i4TCP:80 | grep LISTEN
httpd   46234 root    4u  IPv6 0x43d62c23d1f89bbd      0t0  TCP *:80 (LISTEN)
httpd   46238 _www    4u  IPv6 0x43d62c23d1f89bbd      0t0  TCP *:80 (LISTEN)

Sicherheit

Auf Sandbox prüfen

Die folgende Anweidung prüft, ob ein App-Bundle in einer Sandbox läuft, ohne dies dazu starten zu müssen:

codesign -d --entitlements - <pfad>

z.B.

codesign -d --entitlements - /Applications/Calculator.app

Beispielausgabe:

Executable=/Applications/Calculator.app/Contents/MacOS/Calculator
??qq?<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple.security.app-sandbox</key>
	<true/>
	<key>com.apple.security.files.user-selected.read-write</key>
	<true/>
	<key>com.apple.security.network.client</key>
	<true/>
	<key>com.apple.security.print</key>
	<true/>
</dict>
</plist>

Sandbox-Informationen anzeigen

Um die Sandbox-Konfiguration (entitlements) aus dem Mac App Store heruntergeladener Apps anzuzeigen, sind folgende Anweisungen im Terminal einzugeben:

Gültigkeit der Codesignatur überprüfen
spctl -a -v /Pfad/zum/Appbundle.app
spctl --assess -vv /Pfad/zum/Appbundle.app
check-signature /Pfad/zum/Appbundle.app
Anzeige diverser Informationen über die App
codesign -d -v /Pfad/zum/Appbundle.app

liefert beispielsweise (Apple Configurator):

Identifier=com.apple.configurator
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=18631 flags=0x200(kill) hashes=923+5 location=embedded
Signature size=4169
Info.plist entries=31
Sealed Resources rules=12 files=158
Internal requirements count=2 size=1228
Alternativ
codesign -v --strict --deep --verbose=2 /Pfad/zum/Appbundle.app
codesign -d --deep --verbose=2 -r- /Pfad/zum/Appbundle.app
Anzeige der XML-entitlements im Klartext
codesign -d --entitlements - /Pfad/zum/Appbundle.app

liefert beispielsweise (Apple Configurator):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple.security.app-sandbox</key>
	<true/>
	<key>com.apple.security.device.usb</key>
	<true/>
	<key>com.apple.security.files.user-selected.read-write</key>
	<true/>
	<key>com.apple.security.network.client</key>
	<true/>
	<key>com.apple.security.temporary-exception.files.absolute-path.read-only</key>
	<array>
		<string>/Library/Preferences/com.apple.usbmuxd.plist</string>
	</array>
	<key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
	<array>
		<string>/private/var/db/lockdown/</string>
		<string>/private/tmp/</string>
	</array>
	<key>com.apple.security.temporary-exception.sbpl</key>
	<array>
		<string>(allow file-read-data (regex #".+\.iosdevicebackup$"))</string>
		<string>(allow mach-lookup (global-name #"com.apple.syncservices.SyncServer"))</string>
		<string>(allow network-outbound (literal "/private/var/run/usbmuxd"))</string>
		<string>(allow mach-lookup (global-name-regex #"^com\.apple\.DeviceLink\.AppleMobileBackup\..+"))</string>
		<string>(allow mach-lookup (global-name #"com.apple.storeagent-xpc"))</string>
		<string>(allow file-read-data (regex #".+\.ipsw$"))</string>
		<string>(allow distributed-notification-post)</string>
	</array>
</dict>
</plist>
Siehe auch

SIP vorübergehend deaktivieren

um SIP (System Integrity Protection) vorübergehend zu deaktivieren, ist folgende Vorgehensweise notwendig:

  1. Mac von der macOS Recovery-Partition starten und dort über das Menü die Terminal-App starten
  2. csrutil disable
    Weitere Informationen zur Nutzung: csrutil (ohne Parameter)
  3. den Mac erneut neu starten

Operationen auf durch SIP geschützte Dateien und Verzeichnisse durchführen

  1. Zur Reaktivierung von SIP den Mac erneut von der Recovery-Partition starten und eine Terminal-Sitzung starten
  2. csrutil enable
  3. Mac erneut neu starten

Der aktuelle Status lässt sich wie folgt abfragen:

$ csrutil status
System Integrity Protection status: enabled.

Mehr zu SIP auf apple.com, Wikipedia

Gatekeeper deaktivieren

Seit macOS Sierra ist die Option, unsignierte Programme ohne Warnhinweis starten zu können, aus den Privatsphäre-Systemeinstellungen verschwunden. Um diese Option wieder sichtbar zu machen, genügt folgende Anweisung im Terminal:

sudo spctl --master-disable

Um das wieder rückgängig zu machenm, ist folgende Terminal-Anweisung notwendig:

sudo spctl --master-enable

App-Zugriffsberechtigungen zurücksetzen

Die einem Programm gewährten Zugriffsberechtigungen auf Kontakte, Kalender usw. lassen sich mit Hilfe des Kommandozeilenprogramms tccutil im Font Awesome 5 solid terminal.svg Terminal zurücksetzen:

tccutil COMMAND SERVICE [BUNDLE_IDENTIFIER]

z.B.:

tccutil reset Accessibility
tccutil reset AppleEvents
tccutil reset All

Folgende Services stehen beipielsweise zur Verfügung ("Accessibility" setzt dabei auch die Einstellungen für "Automation" zurück, mit dem Schlüsselwort "All" werden alle Dienste zurückgesetzt):

  • Accessibility
  • AddressBook
  • AppleEvents
  • Calendar
  • Camera
  • CoreLocationAgent
  • Microphone
  • Photos
  • Reminders
  Logo informations.svg
Alle verfügbaren Dienste (Services) lassen sich mit folgender Terminal-Anweisung ausgeben:
strings /System/Library/PrivateFrameworks/TCC.framework/TCC | grep kTCCService
Bei der Verwendung mit tccutil muss dabei der Präfix "kTCCService" weggelassen werden - also z.B. "Calendar" statt "kTCCServiceCalendar"
 
  Gefahrenzeichen 16.svg
Das Verwenden eines Bundle Identifier (wie in der manpage beschrieben) endet zumindest unter macOS Mojave immer mit der Fehlermeldung "tccutil: No such bundle identifier", daher können bislang nur alle Einstellungen eines bestimmten Dienstes zurückgesetzt werden.
 

Entwicklung

iOS Simulator - Screenshot erstellen

Mit Hilfe der folgenden Anweisung lässt sich ein Screenshot des derzeit vom iOS Simulator angezeigten Bildschirminhaltes anfertigen, der dann im aktuellen Verzeichnis (pwd) abgelegt wird:

xcrun simctl io booted screenshot

Alternativ kann ein Zielpfad angegeben werden:

xcrun simctl io booted screenshot <pfad-zur-zieldatei>

iOS Simulator - Video aufzeichnen

Mit Hilfe der folgenden Anweisung lassen sich Interaktionen im iOS Simulator als Videodatei aufzeichnen:

xcrun simctl io booted recordVideo <pfad-zur-zieldatei>

Programme

Firefox Profile-Manager starten

Im Profil-Manager lassen sich weitere Benutzerprofile erstellen und verwalten, allerdings ist dieser mittlerweile recht versteckt:

  1. Firefox beenden, falls gerade gestartet
  2. Terminal öffnen
  3. im Terminal folgende Anweisung ausführen:
    /Applications/Firefox.app/Contents/MacOS/firefox-bin -P

Dort kann man dann auch (optional) durch Setzen der entsprechenden Checkbox veranlassen, dass der Profil-Manager bei jedem Start angezeigt wird.

Troubleshooting

Schwarzer Desktop-Hintergrund

Wenn der Hintergrund aller Spaces plötzlich schwarz wird und man kein Hintergrundbild mehr auswählen kann, hilft folgende Terminal-Anweisung in der Regel weiter, so dass man sich eine Neuanmeldung bzw. einen Reboot sparen kann:

killall Dock

Sonstiges

System-Icons finden

Mit dem folgenden Kommando lassen sich sämtliche vom System verwendeten .icns Dateien auffinden:

find /System/Library /Library -iname \*.icns -print

Apps vom MAS erneut installieren

Es kommt des öfteren mal vor, dass die Mac App Store App deinstallierte Apps nicht als deinstalliert registriert und sich dann standhaft weigert, solche Apps erneut zu installieren. Es erscheint lediglich ein Hinweis, die App sei bereits installiert.

In diesem Fall sollte folgende Terminal-Anweisung dem App Store wieder auf die Sprünge helfen:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

Doppelte Einträge im "Öffnen mit ..." Finder-Menü beseitigen

Hin und wieder kommt es vor, das Programme im Finder-Kontextmenü "Öffnen mit ..." mehrfach gelistet sind. Um diesen Fehler zu bereinigen, ist folgendes im Terminal einzugeben:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain user

Anschließend ist der Finder mit folgender Anweisung neu zu starten

killall Finder

Alternativ kann das auch über das Dock-Menü erfolgen, in dem während des Klicks auf den Finder-Eintrag die folgenden Tasten gedrückt werden: <KB>CTRL+ALT</KB>

  Logo informations.svg
Hinweis: dadurch werden auch die Warnhinweise für aus dem Internet heruntergeladenen Programme zurückgesetzt, so dass beim nächsten Start eines solchen Programms OS X erneut nachfragt, ob man ein aus dem Internet geladenes Programm wirklich öffnen möchte.
 

Datum und Uhrzeit von UNIX Timestamps anzeigen

date -d @<timestamp>

z.B.:

date -d @1528954682

Ausgabe:

Thu Jun 14 05:38:02 UTC 2018

Zugriff auf Dateien/Volumes ermitteln

z.B. um herauszufinden. welche Prozesse gerade auf ein bestimmtes Volume zugreifen und damit das Aushängen/Auswerfen verhindern:

sudo lsof | grep <path>

z.B.

$ sudo lsof|grep "/Volumes/Macintosh HD"
mds         110            root   17r      DIR                1,4       1024         2 /Volumes/Macintosh HD
notifyd     151            root   56r      DIR                1,4       1024         2 /Volumes/Macintosh HD

Daten/Verzeichnisse Auf SIP-Schutz prüfen

Mit folgender Anweisung lässt sich prüfen, ob der Zugriff auf bestimmte Dateien/Verzeichnisse durch SIP (System Integrity Protection) eingeschränkt ist:

ls -lO

In solchen fällen erscheint in der Ausgabe dann "restricted", wie beispielsweise hier:

drwxr-xr-x  6 root  wheel  restricted 192 Jun 26 12:47 VirtualBox

Um solche Dateien löschen zu können, muss zunächst SIP vorübergehend deaktiviert und der Mac neu gestartet werden.

Zufallszahl erzeugen

folgende Anweisung erzeugt eine (ganzzahlige) Zufallszahl (größer 0) mit einem Maximalwert von 10:

echo $(( $RANDOM % 10 ))

dasselbe ohne die 0:

echo $(( ( RANDOM % 10 ) + 1 ))

dasselbe mit Werten zwischen 40 und 49:

r=$(( $RANDOM % 10 + 40 )); echo $r

alternativ unter Verwendung von /dev/random:

grep -m1 -ao '[0-9]' /dev/urandom | sed s/0/10/ | head -n1

alternativ unter Verwendung der $RANDOM Bash-Funktion:

 echo $RANDOM % 10 + 1 | bc

oder wie folgt, mit einer etwas besseren Verteilung der erzeugten Werte:

 while :; do ran=$RANDOM; ((ran < 32760)) && echo $(((ran%10)+1)) && break; done

Siehe auch