Hilfreichen Konsolen-Befehlen für macOS

Die deutsche Apple-Nachrichtenseite MacTechNews hatte vor 3 Wochen einen Artikel mit einer kurzen Sammlung an Terminal-Befehlen für den Mac. Die Seite beruft sich auf den GitHub-User Marcel Bischoff, der eine von ihm selbst kuratierte englischsprachige Liste mit Terminal-Kommandos, fein säuberlich sortiert nach Anwendungszwecken und Aufgaben pflegt. Von der bereits von MacTechNews gekürzten Auswahl an Befehlen, habe ich mir die für mich interessantesten Befehle genommen und in diesem Artikel aufgelistet.

1. Dateien und Ordner

Immer alle Dateinamens-Erweiterungen im Finder anzeigen:
defaults write -g AppleShowAllExtensions -bool true
Inhalte von zwei Ordnern vergleichen:
diff -qr /Pfad/zu/Ordner1 /Pfad/zu/Ordner2
.DS_Store-Dateien entfernen:
find . -type f -name '*.DS_Store' -ls -delete

2. Time Machine

Backup-Intervall anpassen:
sudo defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int Intervall_in_Sekunden
Beispiel: Intervall auf eine Stunde setzen:
sudo defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int 3600
Backups lokal speichern, wenn das externe Speichermedium nicht verfügbar ist:
sudo tmutil enablelocal

Diese Einstellung kann mit sudo tmutil disablelocal wieder rückgängig gemacht werden. Beide Befehle funktionieren nur bis einschließlich macOS 10.12 Sierra, ab macOS 10.13 High Sierra sind sie obsolet.

3. Festplatten, SSDs und Volumes

Alle Platten und Partitionen anzeigen:
diskutil list
Dateiberechtigungen reparieren:
sudo diskutil repairPermissions /

Dieser Befehl funktioniert nur bis einschließlich macOS 10.10 Yosemite, da spätere Versionen die Systemdateiberechtigungen automatisch schützen.

4. Betriebssystem

Ausführlichen Systembericht erzeugen:
sudo sysdiagnose -f ~/Desktop/
Status der Kernelerweiterungen anzeigen:
sudo kextstat -l

Über diese Auswahl an Befehlen hinaus sind auf der GitHub-Seite von Marcel Bischoff noch zahlreiche weitere Kommandos zu finden, beispielsweise aus den Themenbereichen Netzwerk, Audio, Sicherheit und Apps. Darüber hinaus stellt er in einer weiteren Übersicht eine ganze Reihe von Kommandozeilen-Apps vor.

Ein weiteres Thema ist persönlich bei mir, dass ich die Konfigurations-Datei .profile im Benutzerstammverzeichnis regelmäßig bearbeite. Zum Beispiel – und das ist das wesentliche bei mir – um Aliases zu erstellen und bearbeiten. Um die Datei neu einzulesen, dachte ich mir immer, müsse man sich als Benutzer immer wieder im System ab- und wieder neu anmelden. Aber zum Glück gibt es da aus der restlichen Unix-Derivaten- und Linux-Welt den Befehl source. Einfach eintippen mit dem Pfad der Konfigurationsdatei, die geändert wurde.:

source Example:
source ~/.profile

Links:

    MacTechNews-Artikel vom 03. Oktober 2019
    GitHub-User Marcel Bischoff – Appearance
    GitHub-User Marcel Bischoff – Command Line Apps

YouTube-Videos auf einem iOS-Gerät speichern

Aus urheberrechtlichen Gründen ist es nicht möglich ein Video von der Video-Plattform YouTube auf einem iOS-Gerät wie dem iPhone herunter zu laden und zu speichern. So gibt es im App Store kein Programm, die diese Funktion ermöglichen wird. Damit dies technisch dennoch möglich ist, gibt es im Internet einige Workarounds.
Eine Möglichkeit ist es, die Apple-eigene App Shortcuts aus dem App Store zu laden und einen entsprechenden Kurzbefehl zum Laden und Speichern der Videos zu erstellen. Diese Möglichkeit wäre zugleich auch die eleganteste Lösung, fordert von mir aber die Voraussetzung ab, dass ich mich erst noch in das Thema einarbeiten muss, wie auf einem iPhone ein Shortcut erstellt wird.
Eine zweite Möglichkeit ist es, mit Hilfe des Programms Documents 6 ein Video von YouTube herunter zu laden, die nach einem ersten Testdurchlauf auch auf Anhieb funktioniert hat.:

Aus dem App Store muss die kostenlose App Documents 6 herunter geladen werden.

  1. Als ersten Schritt muss der Link des YouTube-Videos in die Zwischenablage kopiert werden. Im Safari die URL aus dem Adressfeld heraus kopieren, oder in der offiziellen YouTube-App über die Funktion ‚Teilen‚ den Link kopieren.
  2. Als nächstes die App Documents 6 auf dem iPhone öffnen.
  3. Über das Browser-Symbol (kleiner Kompass) den integrierten Browser in der App öffnen.
  4. Als nächstes wird der YouTube-Link aus der Zwischenablage in das Eingabefeld auf der savefrom.net-Seite eingefügt.
  5. Jetzt auf Download tippen und zuvor auswählen, in welcher Auflösung das Video geladen werden soll. Im nächsten Fenster ist es möglich, den Dateinamen zu verändern. Auf Fertig tippen, um mit dem Download zu beginnen.
  6. Je nach Größe des Videos und abhängig von der Internetverbindung kann es einige Zeit dauern, bis das Video geladen ist. Um den Fortschritt zu überwachen, auf das Download-Symbol rechts unten tippen.
  7. Nachdem der Download abgeschlossen ist, zurück in das Hauptfenster der App zurückkehren und dort auf den Downloads-Ordner tippen. Dort sollte – sofern der Speicherpfad zuvor nicht verändert wurde – das geladene Video zu finden sein. Rechts oben auf den Button Bearbeiten tippen, das Video wählen und unten durch tippen Verschieben auswählen.
  8. In der folgenden Ansicht auf das Dokumente-Verzeichnis durch antippen auf Documents navigieren. Anschließend auf Alle Fotos gehen. Danach unten auf „Alle Fotos verschieben“ klicken, damit das YouTube-Video aus dem Download-Ordner in die Fotos-App verschoben wird.
  9. In der Fotos-App über die Alben-Ansicht auf Alle Fotos navigieren, denn am Ende befindet sich nun das hinzu gefügte Video, welches nun von hier aus abgespielt oder beliebig weiter bearbeitet werden kann.

YouTube Videos zu downloaden, widerspricht den AGBs von YouTube. Diese App bietet zwar diese Funktionalität, wir empfehlen die Nutzung aber nicht. Häufig werden solche Apps auch nach gewisser Zeit aus dem App Store entfernt.

Veröffentlicht unter Apple | Verschlagwortet mit

macOS 10.12.2 Sierra: Änderungen bei SSH Keys und Passphrase

Mit dem macOS Sierra Update 10.12.2 setzt Apple nun auf die OpenSSH-Version 7.3p1. Im Gegensatz zu früheren Mac-OS Versionen gibt es seit 10.12 Sierra für die Speicherung von SSH-Passphrasen im Schlüsselbund keinen grafischen Abfragedialog mehr. Um Passphrasen und Kennwörter nun im Schlüsselbund ablegen zu können, muss die SSH-Konfigurationsdatei um die Option UseKeychain yes ergänzt werden. Dies lässt sich auch für einzelne Hosts festlegen.

Beispiel:

…

Host Servername
    Hostname 192.168.5.23
    User sommteck
    IdentityFile ~/.ssh/PrivatKeyName
    UseKeychain yes
AddKeysToAgent yes …

OpenSSH lädt die Keys außerdem nicht länger automatisch in den ssh-agent, dies passe das Verhalten von macOS an das OpenSSH-Projekt an.
Falls die Passphrase nicht im Schlüsselbund gespeichert wird, erkundige sich SSH deshalb immer wieder neu nach dem Kennwort. Um den oder die SSH-Schlüssel wieder im Agent verfügbar zu machen, muss die SSH-Konfigurationsdatei um den Zusatz AddKeysToAgent yes ergänzt werden.

Update 18. Oktober 2021 19:04 Uhr:

Mit dem Konsolenbefehl ssh-add -K ~/.ssh/PrivatKeyName lassen sich die privaten Schlüssel auch manuell an den SSH Agent hinzufügen. Ebenso lassen sich auch all jene privaten Schlüssel anzeigen, die im SSH Agent bereits gespeichert sind.:

sommteck@MacBook-Pro ~ % ssh-add -l
2048 SHA256:wBLcJPCf9URvi8Pfk+nvI5nybU8+0nfEwAYCOTA3ix4.ssh/alix_id_rsa (RSA)

Weiterführende Links:
https://www.heise.de/mac-and-i/meldung/macOS-10-12-2-Sierra-Aenderungen-bei-SSH-Keys-und-Passphrase-3588517.html
https://developer.apple.com/library/content/technotes/tn2449/_index.html

Apple File System

Was ich im letzten Beitrag nicht erwähnt habe, ist auch gleich für mich die größte und aufregenden Neuerung in Sachen macOS von Apple. Auf der letzte WWDC gab es nämlich eine Präsentation über ein neues Dateisystem, mit welchem Apple das nun 30 Jahre alte HFS ablösen will. So wurde auch mit den letzten Betas im Sommer und dem anschließen Major-Release von Sierra eine Betaversion des neuen APFS (Apple Filesystem) – erstmal zielgerichtet für Entwickler – veröffentlicht, was auch jeden anderen Nutzer wie mich einlädt, mal ein wenig damit herum zu spielen. Deswegen lassen sich Image-Sparsefiles und Datenträger auch erstmal nur unter der Konsole und noch nicht über das grafische Festplattendienstprogramm erstellen und bearbeiten. Die Integration im Finder ist stattdessen aber bereits vorhanden.
Die finale Version, die auch für den alltäglichen Produktiveinsatz zur Verfügung sein wird, ist für die kommende macOS-Version im Herbst 2017 geplant. Als Features sind folgende zu nennen:

  • das Klonen von Dateien und Ordnern, ohne dass sie neu geschrieben werden
  • Snapshots
  • APFS-Laufwerke können dynamisch in der Größe verändert werden, ohne dass das Laufwerk neu partitioniert zu werden braucht
  • „Space Sharing“ erlaubt mehreren logischen Laufwerken, den Speicherplatz desselben physikalischen Laufwerks gemeinsam zu nutzen
  • Verschlüsselung sowohl auf Dateisystemebene sowie Dateiweise bzw. der Metadaten
  • „Atomic Safe-Save“ führt Umbenennungen in einer einzelnen Transaktion so aus, dass aus Nutzerperspektive eine Operation entweder vollständig durchgeführt wurde oder gar nicht geschieht

Demgegenüber unterstützt APFS derzeit noch kein Startlaufwerk, keine Time-Machine-Sicherungen, kein FileVault sowie kein Fusion Drive.

Dennoch habe ich wie in Apples Support-Dokument mal ein 1 Gigabyte großes Sparse-Image erstellt:

hdiutil create -fs APFS -size 1GB apfs-test.sparseimage

Im zweiten Fall wollte ich mal einen ganzen USB-Stick mit APFS formatieren. Wichtig dabei ist, dass das Medium mit GPT nach dem GUID-Schema formatiert wird. MBR wird für APFS nicht mehr zugelassen.
In meinem Beispiel hat der USB-Stick die Gerätekennung disk2.:

sommteck:~ franky$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Simba                   249.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                            Simba                  +248.8 GB   disk1
                                 Logical Volume on disk0s2
                                 D2BDDC9A-78E4-490C-808F-282E2BB8623A
                                 Unlocked Encrypted

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *16.1 GB    disk2
   1:                  Apple_HFS Stick                   16.1 GB    disk2s1

Mit folgendem Befehl wird nun das Gerät formatiert. Mit der 1 wird angegeben, dass eine Partition angelegt wird.:

diskutil partitionDisk disk2 1 GPT apfs Stick-APFS 100M

Als Dateisystem wird apfs angegeben. Als Volumenamen habe ich Stick-APFS gesetzt. Was man für einen Wert für die Größe und als Suffix angibt (hier die 100M) ist in diesem Beispiel erstmal egal, da diskutil im Normalfall das Ende der letzten Partion ans Ende des Geräts setzt. In diesem Fall ist die Erste auch gleich die Letzte.

Links:
Apple File System Guide

macOS Sierra

Vor nunmehr fünf Wochen hat Apple sein aktuelles Computerbetriebssystem macOS Sierra veröffentlicht. Neben Neuerungen wurden aber auch einige Änderungen unter der Haube durchgeführt.
Eine wesentliche was die Kompatibilität mit älteren Programmen betrifft, ist der Wegfall der Garbage Collection für das Handling des Arbeitsspeichers der Programme. Hat ein Programm auf dieses gesetzt, so wird es nach dem Upgrade leider nicht mehr ausführbar sein, da Apple die Unterstützung für den Garbage Collector in Sierra entfernt hat. Um also vor dem Upgrade prüfen zu können, ob Programme mit Sierra kompatibel sind oder nicht, kann man mit folgenden Befehl im Terminal dies überprüfen, um hinterher keinen Reinfall zu erleben. Allerdings muss für die Prüfung Xcode installiert sein.:

Befehl:

otool -oV /Applications/PROGRAMMNAME.app/Contents/MacOS/PROGRAMMNAME | tail -3

Ausgabe:

Contents of (__DATA,__objc_imageinfo) section
  version 0
    flags 0x6 OBJC_IMAGE_SUPPORTS_GC

Sollte in der Terminalausgabe nun „OBJC_IMAGE_SUPPORTS_GC“ erscheinen, so kommt noch der Garbage Collector zum Einsatz und das Programm ist unter macOS Sierra nicht mehr lauffähig.

Außerdem ist Apple beim Einsatz von OpenSSH von Version 6.x auf 7.x gewechselt. Die Entwickler von OpenSSH haben aber in der Major-Version 7.0 eine wesentliche Änderung vorgenommen, was das automatische Laden von SSH-Schlüsseln in den ssh-agent betrifft. Hat man sich früher mit dem lokalen Mac via SSH auf einen anderen Rechner eingeloggt und sich dann wiederum von diesem mittels Public-Key-Verfahren auf einen weiteren Rechner verbunden, so hat der lokale SSH-Client sowohl Privat-Key als auch die Passphrase in den ssh-agent hinein geladen. Dies funktioniert seit Version 7 nicht mehr. Um sich dennoch Schlüssel und Passphrase des Man-in-the-middle-Computers wieder in den Agent seines lokalen Computers dauerhaft laden zu können, reicht es, wenn man in die benutzereigene Client-Konfiguration folgende Option hinzufügt.

echo "AddKeysToAgent yes" >> ~/.ssh/config

Des weiteren lässt sich wie gewohnt der macOS-Installer auf einem GPT-vorformatierten USB-Stick mit folgendem Konsolenbefehl kopieren, so dass dieser auch für künftige Installationen ohne Internetverbindungen ein Rettungssystem beinhaltet.

sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Stick --applicationpath /Applications/Install\ macOS\ Sierra.app/ --nointeraction