Passer au contenu principal

Osx CLI

Awesome macOS Command Line

A curated list of shell commands and tools specific to OS X.

“You don’t have to know everything. You simply need to know where to find it when necessary.” (John Brunner)

Awesome Build Status

If you want to contribute, you are highly encouraged to do so. Please read the contribution guidelines. 

For more terminal shell goodness, please also see this list's sister list Awesome Command Line Apps.

Caffeinating

When you find something helpful in here, you could buy me a coffee. I spend a lot of time and effort on curating this list. Keeping me properly caffeinated accelerates things. And it would really make my day. Kindness of strangers and all that. If you can't or won't, no hard feelings. It's available completely free for a reason. Still, it would be awesome.

Buy Me A Coffee

Contents

    Appearance
      Transparency Wallpaper Applications
        App Store Apple Remote Desktop Contacts Google iTunes Mail Safari Sketch Skim Terminal TextEdit Visual Studio Code Backup
          Time Machine Developer
            Vim Xcode Dock Documents Files, Disks and Volumes
              APFS Disk Images Finder
                Desktop Files and Folders Layout Metadata Files Opening Things Fonts Functions Hardware
                  Bluetooth Harddisks Hardware Information Infrared Receiver Power Management Input Devices
                    Keyboard Launchpad Media
                      Audio Video Networking
                        Bonjour DHCP DNS Hostname Network Preferences Networking Tools SSH TCP/IP TFTP Wi-Fi Package Managers Printing Security
                          Application Firewall Gatekeeper Passwords Physical Access Wiping Data Search
                            Find Locate System
                              AirDrop AppleScript Basics Clipboard Date and Time FileVault Information/Reports Install OS Kernel Extensions LaunchAgents LaunchServices Login Window Memory Management Notification Center QuickLook Remote Apple Events Root User Safe Mode Boot Save Dialogs Screenshots Sidecar Software Installation Software Update Software Version Spotlight System Integrity Protection Terminal
                                Alternative Terminals Shells Terminal Fonts Glossary
                                  Mac OS X, OS X, and macOS Version Information

                                  Appearance

                                  Transparency

                                  Transparency in Menu and Windows

                                  # Reduce Transparency
                                  defaults write com.apple.universalaccess reduceTransparency -bool true
                                  
                                  # Restore Default Transparency
                                  defaults write com.apple.universalaccess reduceTransparency -bool false

                                  Wallpaper

                                  Set Wallpaper

                                  # Up to Mountain Lion
                                  osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/path/to/picture.jpg"'
                                  
                                  # Since Mavericks
                                  sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/path/to/picture.jpg'" && killall Dock

                                  Applications

                                  App Store

                                  List All Apps Downloaded from App Store

                                  # Via find
                                  find /Applications -path '*Contents/_MASReceipt/receipt' -maxdepth 4 -print |\sed 's#.app/Contents/_MASReceipt/receipt#.app#g; s#/Applications/##'
                                  
                                  # Via Spotlight
                                  mdfind kMDItemAppStoreHasReceipt=1

                                  Show Debug Menu

                                  Works up to Yosemite.

                                  # Enable
                                  defaults write com.apple.appstore ShowDebugMenu -bool true
                                  
                                  # Disable (Default)
                                  defaults write com.apple.appstore ShowDebugMenu -bool false

                                  Apple Remote Desktop

                                  Kickstart Manual Pages

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

                                  Activate And Deactivate the ARD Agent and Helper

                                  # Activate And Restart the ARD Agent and Helper
                                  sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -restart -agent -console
                                  
                                  # Deactivate and Stop the Remote Management Service
                                  sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop

                                  Enable and Disable Remote Desktop Sharing

                                  # Allow Access for All Users and Give All Users Full Access
                                  sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -configure -allowAccessFor -allUsers -privs -all
                                  
                                  # Disable ARD Agent and Remove Access Privileges for All Users
                                  sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -configure -access -off

                                  Remove Apple Remote Desktop Settings

                                  sudo rm -rf /var/db/RemoteManagement ; \
                                  sudo defaults delete /Library/Preferences/com.apple.RemoteDesktop.plist ; \
                                  defaults delete ~/Library/Preferences/com.apple.RemoteDesktop.plist ; \
                                  sudo rm -r /Library/Application\ Support/Apple/Remote\ Desktop/ ; \
                                  rm -r ~/Library/Application\ Support/Remote\ Desktop/ ; \
                                  rm -r ~/Library/Containers/com.apple.RemoteDesktop

                                  Contacts

                                  Debug Mode

                                  # Enable
                                  defaults write com.apple.addressbook ABShowDebugMenu -bool true
                                  
                                  # Disable (Default)
                                  defaults write com.apple.addressbook ABShowDebugMenu -bool false

                                  Google

                                  Uninstall Google Update

                                  ~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/ksinstall --nuke

                                  iTunes

                                  Keyboard Media Keys

                                  This works up to Yosemite. System Integrity Protection was introduced in El Capitan which prevents system Launch Agents from being unloaded.

                                  # Stop Responding to Key Presses
                                  launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist
                                  
                                  # Respond to Key Presses (Default)
                                  launchctl load -w /System/Library/LaunchAgents/com.apple.rcd.plist

                                  From El Capitan onwards, you can either disable SIP or resort to a kind of hack, which will make iTunes inaccessible to any user, effectively preventing it from starting itself or its helpers. Be aware that for all intents and purposes this will trash your iTunes installation and may conflict with OS updates down the road.

                                  sudo chmod 0000 /Applications/iTunes.app

                                  Mail

                                  Show Attachments as Icons

                                  defaults write com.apple.mail DisableInlineAttachmentViewing -bool yes

                                  Vacuum Mail Index

                                  The AppleScript code below will quit Mail, vacuum the SQLite index, then re-open Mail. On a large email database that hasn't been optimized for a while, this can provide significant improvements in responsiveness and speed.

                                  (*
                                  Speed up Mail.app by vacuuming the Envelope Index
                                  Code from: http://web.archive.org/web/20071008123746/http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
                                  Originally by "pmbuko" with modifications by Romulo
                                  Updated by Brett Terpstra 2012
                                  Updated by Mathias Törnblom 2015 to support V3 in El Capitan and still keep backwards compatibility
                                  Updated by Andrei Miclaus 2017 to support V4 in Sierra
                                  *)
                                  
                                  tell application "Mail" to quit
                                  set os_version to do shell script "sw_vers -productVersion"
                                  set mail_version to "V2"
                                  considering numeric strings
                                      if "10.10" <= os_version then set mail_version to "V3"
                                      if "10.12" <= os_version then set mail_version to "V4"
                                      if "10.13" <= os_version then set mail_version to "V5"
                                      if "10.14" <= os_version then set mail_version to "V6"
                                  end considering
                                  
                                  set sizeBefore to do shell script "ls -lnah ~/Library/Mail/" & mail_version & "/MailData | grep -E 'Envelope Index$' | awk {'print $5'}"
                                  do shell script "/usr/bin/sqlite3 ~/Library/Mail/" & mail_version & "/MailData/Envelope\\ Index vacuum"
                                  
                                  set sizeAfter to do shell script "ls -lnah ~/Library/Mail/" & mail_version & "/MailData | grep -E 'Envelope Index$' | awk {'print $5'}"
                                  
                                  display dialog ("Mail index before: " & sizeBefore & return & "Mail index after: " & sizeAfter & return & return & "Enjoy the new speed!")
                                  
                                  tell application "Mail" to activate

                                  Safari

                                  Change Default Fonts

                                  defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2StandardFontFamily Georgia
                                  defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DefaultFontSize 16
                                  defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2FixedFontFamily Menlo
                                  defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DefaultFixedFontSize 14

                                  Enable Develop Menu and Web Inspector

                                  defaults write com.apple.Safari IncludeInternalDebugMenu -bool true && \
                                  defaults write com.apple.Safari IncludeDevelopMenu -bool true && \
                                  defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true && \
                                  defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true && \
                                  defaults write -g WebKitDeveloperExtras -bool true

                                  Get Current Page Data

                                  Other options: get sourceget text.

                                  osascript -e 'tell application "Safari" to get URL of current tab of front window'

                                  Use Backspace/Delete to Go Back a Page

                                  # Enable
                                  defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool YES
                                  
                                  # Disable
                                  defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool NO

                                  Sketch

                                  Export Compact SVGs

                                  defaults write com.bohemiancoding.sketch3 exportCompactSVG -bool yes

                                  Skim

                                  Turn Off Auto Reload Dialog

                                  Removes the dialog and defaults to auto reload.

                                  defaults write -app Skim SKAutoReloadFileUpdate -boolean true

                                  Terminal

                                  Focus Follows Mouse

                                  # Enable
                                  defaults write com.apple.Terminal FocusFollowsMouse -string YES
                                  
                                  # Disable
                                  defaults write com.apple.Terminal FocusFollowsMouse -string NO

                                  TextEdit

                                  Use Plain Text Mode as Default

                                  defaults write com.apple.TextEdit RichText -int 0

                                  Visual Studio Code

                                  Fix VSCodeVim Key Repeat

                                  defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false

                                  Backup

                                  Time Machine

                                  Change Backup Interval

                                  This changes the interval to 30 minutes. The integer value is the time in seconds.

                                  sudo defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int 1800

                                  Local Backups

                                  Whether Time Machine performs local backups while the Time Machine backup volume is not available.

                                  # Status
                                  defaults read /Library/Preferences/com.apple.TimeMachine MobileBackups
                                  
                                  # Enable (Default)
                                  sudo tmutil enablelocal
                                  
                                  # Disable
                                  sudo tmutil disablelocal

                                  Since High Sierra, you cannot disable local snapshots. Time Machine now always creates a local APFS snapshot and uses that snapshot as the data source to create a regular backup, rather than using the live disk as the source, as is the case with HFS formatted disks.

                                  Prevent Time Machine from Prompting to Use New Hard Drives as Backup Volume

                                  sudo defaults write /Library/Preferences/com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true

                                  Show Time Machine Logs

                                  This little script will output the last 12 hours of Time Machine activity followed by live activity.

                                  #!/bin/sh
                                  
                                  filter='processImagePath contains "backupd" and subsystem beginswith "com.apple.TimeMachine"'
                                  
                                  # show the last 12 hours
                                  start="$(date -j -v-12H +'%Y-%m-%d %H:%M:%S')"
                                  
                                  echo ""
                                  echo "[History (from $start)]"
                                  echo ""
                                  
                                  log show --style syslog --info --start "$start" --predicate "$filter"
                                  
                                  echo ""
                                  echo "[Following]"
                                  echo ""
                                  
                                  log stream --style syslog --info --predicate "$filter"

                                  Toggle Backup While on Battery

                                  # Status
                                  sudo defaults read /Library/Preferences/com.apple.TimeMachine RequiresACPower
                                  
                                  # Enable (Default)
                                  sudo defaults write /Library/Preferences/com.apple.TimeMachine RequiresACPower -bool true
                                  
                                  # Disable
                                  sudo defaults write /Library/Preferences/com.apple.TimeMachine RequiresACPower -bool false

                                  Verify Backup

                                  Beginning in OS X 10.11, Time Machine records checksums of files copied into snapshots. Checksums are not retroactively computed for files that were copied by earlier releases of OS X.

                                  sudo tmutil verifychecksums /path/to/backup

                                  Developer

                                  Vim

                                  Compile Sane Vim

                                  Compiling MacVim via Homebrew with all bells and whistles, including overriding system Vim.

                                  brew install macvim --HEAD

                                  Neovim

                                  Install the modern Vim drop-in alternative via Homebrew.

                                  brew install neovim

                                  Xcode

                                  Install Command Line Tools without Xcode

                                  xcode-select --install

                                  Remove All Unavailable Simulators

                                  xcrun simctl delete unavailable

                                  Dock

                                  Add a Stack with Recent Applications

                                  defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }' && \
                                  killall Dock

                                  Add a Nameless Stack Folder and Small Spacer

                                  defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = {}; "tile-type"="small-spacer-tile"; }' && \
                                  killall Dock

                                  Add a Space

                                  defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}' && \
                                  killall Dock

                                  Add a Small Space

                                  defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="small-spacer-tile";}' && \
                                  killall Dock

                                  Auto Rearrange Spaces Based on Most Recent Use

                                  # Enable (Default)
                                  defaults write com.apple.dock mru-spaces -bool true && \
                                  killall Dock
                                  
                                  # Disable
                                  defaults write com.apple.dock mru-spaces -bool false && \
                                  killall Dock

                                  Autohide

                                  # Enable
                                  defaults write com.apple.dock autohide -bool true && \
                                  killall Dock
                                  
                                  # Disable (Default)
                                  defaults write com.apple.dock autohide -bool false && \
                                  killall Dock

                                  Icon Bounce

                                  Global setting whether Dock icons should bounce when the respective application demands your attention.

                                  # Enable (Default)
                                  defaults write com.apple.dock no-bouncing -bool true && \
                                  killall Dock
                                  
                                  # Disable
                                  defaults write com.apple.dock no-bouncing -bool false && \
                                  killall Dock

                                  Lock the Dock Size

                                  # Enable
                                  defaults write com.apple.Dock size-immutable -bool yes && \
                                  killall Dock
                                  
                                  # Disable (Default)
                                  defaults write com.apple.Dock size-immutable -bool no && \
                                  killall Dock

                                  Reset Dock

                                  defaults delete com.apple.dock && \
                                  killall Dock

                                  Resize

                                  Fully resize your Dock's body. To resize change the 0 value as an integer.

                                  defaults write com.apple.dock tilesize -int 0 && \
                                  killall Dock

                                  Scroll Gestures

                                  Use your touchpad or mouse scroll wheel to interact with Dock items. Allows you to use an upward scrolling gesture to open stacks. Using the same gesture on applications that are running invokes Exposé/Mission Control.

                                  # Enable
                                  defaults write com.apple.dock scroll-to-open -bool true && \
                                  killall Dock
                                  
                                  # Disable (Default)
                                  defaults write com.apple.dock scroll-to-open -bool false && \
                                  killall Dock

                                  Set Auto Show/Hide Delay

                                  The float number defines the show/hide delay in ms.

                                  defaults write com.apple.dock autohide-time-modifier -float 0.4 && \
                                  defaults write com.apple.dock autohide-delay -float 0 && \
                                  killall Dock

                                  Show Hidden App Icons

                                  # Enable
                                  defaults write com.apple.dock showhidden -bool true && \
                                  killall Dock
                                  
                                  # Disable (Default)
                                  defaults write com.apple.dock showhidden -bool false && \
                                  killall Dock

                                  Show Only Active Applications

                                  # Enable
                                  defaults write com.apple.dock static-only -bool true && \
                                  killall Dock
                                  
                                  # Disable (Default)
                                  defaults write com.apple.dock static-only -bool false && \
                                  killall Dock

                                  Single App Mode

                                  When clicking an application icon in the Dock, the respective windows will come to the front, but all other application windows will be hidden.

                                  # Enable
                                  defaults write com.apple.dock single-app -bool true && \
                                  killall Dock
                                  
                                  # Disable (Default)
                                  defaults write com.apple.dock single-app -bool false && \
                                  killall Dock

                                  Documents

                                  Convert File to HTML

                                  Supported formats are plain text, rich text (rtf) and Microsoft Word (doc/docx).

                                  textutil -convert html file.ext

                                  Files, Disks and Volumes

                                  Create an Empty File

                                  Creates an empty 10 gigabyte test file.

                                  mkfile 10g /path/to/file

                                  Disable Sudden Motion Sensor

                                  Leaving this turned on is useless when you're using SSDs.

                                  sudo pmset -a sms 0

                                  Eject All Mountable Volumes

                                  The only reliable way to do this is by sending an AppleScript command to Finder.

                                  osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'

                                  Repair File Permissions

                                  You don't have to use the Disk Utility GUI for this.

                                  sudo diskutil repairPermissions /

                                  Beginning with OS X El Capitan, system file permissions are automatically protected. It's no longer necessary to verify or repair permissions with Disk Utility. (Source)

                                  Set Boot Volume

                                  # Up to Yosemite
                                  bless --mount "/path/to/mounted/volume" --setBoot
                                  
                                  # From El Capitan
                                  sudo systemsetup -setstartupdisk /System/Library/CoreServices

                                  Show All Attached Disks and Partitions

                                  diskutil list

                                  View File System Usage

                                  A continuous stream of file system access info.

                                  sudo fs_usage

                                  APFS

                                  Available since High Sierra. There is no central utility and usage is inconsistent as most functionality is rolled into tmutil.

                                  Convert Volume from HFS+ to APFS

                                  /System/Library/Filesystems/apfs.fs/Contents/Resources/hfs_convert /path/to/file/system

                                  Create New APFS Filesystem

                                  /System/Library/Filesystems/apfs.fs/Contents/Resources/newfs_apfs /path/to/device

                                  Create Snapshot

                                  tmutil localsnapshot

                                  Delete Snapshot

                                  tmutil deletelocalsnapshots com.apple.TimeMachine.2018-01-26-044042

                                  List Snapshots

                                  tmutil listlocalsnapshots /

                                  Mount Snapshot

                                  Snapshots are read-only.

                                  mkdir ~/mnt
                                  /System/Library/Filesystems/apfs.fs/Contents/Resources/mount_apfs -s com.apple.TimeMachine.2018-01-26-044042 / ~/mnt

                                  Disk Images

                                  Create Disk Image From Folder Contents

                                  hdiutil create -volname "Volume Name" -srcfolder /path/to/folder -ov diskimage.dmg

                                  If you'd like to encrypt the disk image:

                                  hdiutil create -encryption -stdinpass -volname "Volume Name" -srcfolder /path/to/folder -ov encrypted.dmg

                                  By default, you'll be prompted for a password. You can automate that by piping in a password:

                                  echo -n YourPassword | hdiutil create -encryption -stdinpass -volname "Volume Name" -srcfolder /path/to/folder -ov encrypted.dmg

                                  Burn Disk Images to DVD

                                  This command applies to .iso, .img and .dmg images.

                                  hdiutil burn /path/to/image_file

                                  Disable Disk Image Verification

                                  defaults write com.apple.frameworks.diskimages skip-verify -bool true && \
                                  defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true && \
                                  defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true

                                  Make Volume OS X Bootable

                                  bless --folder "/path/to/mounted/volume/System/Library/CoreServices" --bootinfo --bootefi

                                  Mount Disk Image

                                  hdiutil attach /path/to/diskimage.dmg

                                  Unmount Disk Image

                                  hdiutil detach /dev/disk2s1

                                  Write Disk Image to Volume

                                  Like the Disk Utility "Restore" function.

                                  sudo asr -restore -noverify -source /path/to/diskimage.dmg -target /Volumes/VolumeToRestoreTo

                                  Finder

                                  Desktop

                                  Show External Media

                                  External HDs, thumb drives, etc.

                                  # Enable
                                  defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true && \
                                  killall Finder
                                  
                                  # Disable (Default)
                                  defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool false && \
                                  killall Finder

                                  Show Internal Media

                                  Built-in HDs or SSDs.

                                  # Enable
                                  defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true && \
                                  killall Finder
                                  
                                  # Disable (Default)
                                  defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false && \
                                  killall Finder

                                  Show Removable Media

                                  CDs, DVDs, iPods, etc.

                                  # Enable
                                  defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true && \
                                  killall Finder
                                  
                                  # Disable (Default)
                                  defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool false && \
                                  killall Finder

                                  Show Network Volumes

                                  AFP, SMB, NFS, WebDAV, etc.

                                  # Enable
                                  defaults write com.apple.finder ShowMountedServersOnDesktop -bool true && \
                                  killall Finder
                                  
                                  # Disable (Default)
                                  defaults write com.apple.finder ShowMountedServersOnDesktop -bool false && \
                                  killall Finder

                                  Files and Folders

                                  Clear All ACLs

                                  sudo chmod -RN /path/to/folder

                                  Hide Folder in Finder

                                  chflags hidden /path/to/folder/

                                  Show All File Extensions

                                  defaults write -g AppleShowAllExtensions -bool true

                                  Show Hidden Files

                                  # Show All
                                  defaults write com.apple.finder AppleShowAllFiles true
                                  
                                  # Restore Default File Visibility
                                  defaults write com.apple.finder AppleShowAllFiles false

                                  Remove Protected Flag

                                  sudo chflags -R nouchg /path/to/file/or/folder

                                  Show Full Path in Finder Title

                                  defaults write com.apple.finder _FXShowPosixPathInTitle -bool true

                                  Unhide User Library Folder

                                  chflags nohidden ~/Library

                                  Increase Number of Recent Places

                                  defaults write -g NSNavRecentPlacesLimit -int 10 && \
                                  killall Finder

                                  Layout

                                  Show "Quit Finder" Menu Item

                                  Makes possible to see Finder menu item "Quit Finder" with default shortcut Cmd + Q

                                  # Enable
                                  defaults write com.apple.finder QuitMenuItem -bool true && \
                                  killall Finder
                                  
                                  # Disable (Default)
                                  defaults write com.apple.finder QuitMenuItem -bool false && \
                                  killall Finder

                                  Smooth Scrolling

                                  Useful if you’re on an older Mac that messes up the animation.

                                  # Disable
                                  defaults write -g NSScrollAnimationEnabled -bool false
                                  
                                  # Enable (Default)
                                  defaults write -g NSScrollAnimationEnabled -bool true

                                  Rubberband Scrolling

                                  # Disable
                                  defaults write -g NSScrollViewRubberbanding -bool false
                                  
                                  # Enable (Default)
                                  defaults write -g NSScrollViewRubberbanding -bool true

                                  Expand Save Panel by Default

                                  defaults write -g NSNavPanelExpandedStateForSaveMode -bool true && \
                                  defaults write -g NSNavPanelExpandedStateForSaveMode2 -bool true

                                  Desktop Icon Visibility

                                  # Hide Icons
                                  defaults write com.apple.finder CreateDesktop -bool false && \
                                  killall Finder
                                  
                                  # Show Icons (Default)
                                  defaults write com.apple.finder CreateDesktop -bool true && \
                                  killall Finder

                                  Path Bar

                                  # Show
                                  defaults write com.apple.finder ShowPathbar -bool true
                                  
                                  # Hide (Default)
                                  defaults write com.apple.finder ShowPathbar -bool false

                                  Scrollbar Visibility

                                  Possible values: WhenScrollingAutomatic and Always.

                                  defaults write -g AppleShowScrollBars -string "Always"

                                  Status Bar

                                  # Show
                                  defaults write com.apple.finder ShowStatusBar -bool true
                                  
                                  # Hide (Default)
                                  defaults write com.apple.finder ShowStatusBar -bool false

                                  Save to Disk by Default

                                  Sets default save target to be a local disk, not iCloud.

                                  defaults write -g NSDocumentSaveNewDocumentsToCloud -bool false

                                  Set Current Folder as Default Search Scope

                                  defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"

                                  Set Default Finder Location to Home Folder

                                  defaults write com.apple.finder NewWindowTarget -string "PfLo" && \
                                  defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}"

                                  Set Sidebar Icon Size

                                  Sets size to 'medium'.

                                  defaults write -g NSTableViewDefaultSizeMode -int 2

                                  Metadata Files

                                  Disable Creation of Metadata Files on Network Volumes

                                  Avoids creation of .DS_Store and AppleDouble files.

                                  defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

                                  Disable Creation of Metadata Files on USB Volumes

                                  Avoids creation of .DS_Store and AppleDouble files.

                                  defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

                                  Opening Things

                                  Change Working Directory to Finder Path

                                  If multiple windows are open, it chooses the top-most one.

                                  cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')"

                                  Open URL

                                  open https://github.com

                                  Open File

                                  open README.md

                                  Open Applications

                                  You can open applications using -a.

                                  open -a "Google Chrome" https://github.com

                                  Open Folder

                                  open /path/to/folder/

                                  Open Current Folder

                                  open .

                                  Fonts

                                  Clear Font Cache for Current User

                                  To clear font caches for all users, put sudo in front of this command.

                                  atsutil databases -removeUser && \
                                  atsutil server -shutdown && \
                                  atsutil server -ping

                                  Get SF Mono Fonts

                                  You need to download and install Xcode 8 beta for this to work. Afterwards they should be available in all applications.

                                  cp -v /Applications/Xcode-beta.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources/Fonts/SFMono-* ~/Library/Fonts

                                  From Sierra onward, they are included in Terminal.app.

                                  cp -v /Applications/Utilities/Terminal.app/Contents/Resources/Fonts/SFMono-* ~/Library/Fonts

                                  Starting in Catalina, the Utilities apps (including Terminal.app) are now found in the /System folder.

                                  cp -v /System/Applications/Utilities/Terminal.app/Contents/Resources/Fonts/SFMono-* ~/Library/Fonts

                                  Functions

                                  Please see this file.

                                  Hardware

                                  Bluetooth

                                  # Status
                                  defaults read /Library/Preferences/com.apple.Bluetooth ControllerPowerState
                                  
                                  # Enable (Default)
                                  sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 1
                                  
                                  # Disable
                                  sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0 && \
                                  sudo killall -HUP blued

                                  Harddisks

                                  Force Enable Trim

                                  Enable Trim for non-Apple SSDs. This command is available since Yosemite.

                                  forcetrim

                                  Hardware Information

                                  List All Hardware Ports

                                  networksetup -listallhardwareports

                                  Remaining Battery Percentage

                                  pmset -g batt | egrep "([0-9]+\%).*" -o --colour=auto | cut -f1 -d';'

                                  Remaining Battery Time

                                  pmset -g batt | egrep "([0-9]+\%).*" -o --colour=auto | cut -f3 -d';'

                                  Show Connected Device's UDID

                                  system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p'

                                  Show Current Screen Resolution

                                  system_profiler SPDisplaysDataType | grep Resolution

                                  Show CPU Brand String

                                  sysctl -n machdep.cpu.brand_string

                                  Infrared Receiver

                                  # Status
                                  defaults read /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled
                                  
                                  # Enable (Default)
                                  defaults write /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled -int 1
                                  
                                  # Disable
                                  defaults write /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled -int 0

                                  Power Management

                                  Prevent System Sleep

                                  Prevent sleep for 1 hour:

                                  caffeinate -u -t 3600

                                  Show All Power Management Settings

                                  sudo pmset -g

                                  Put Display to Sleep after 15 Minutes of Inactivity

                                  sudo pmset displaysleep 15

                                  Put Computer to Sleep after 30 Minutes of Inactivity

                                  sudo pmset sleep 30

                                  Check System Sleep Idle Time

                                  sudo systemsetup -getcomputersleep

                                  Set System Sleep Idle Time to 60 Minutes

                                  sudo systemsetup -setcomputersleep 60

                                  Turn Off System Sleep Completely

                                  sudo systemsetup -setcomputersleep Never

                                  Automatic Restart on System Freeze

                                  sudo systemsetup -setrestartfreeze on

                                  Chime When Charging

                                  Play iOS charging sound when MagSafe is connected.

                                  # Enable
                                  defaults write com.apple.PowerChime ChimeOnAllHardware -bool true && \
                                  open /System/Library/CoreServices/PowerChime.app
                                  
                                  # Disable (Default)
                                  defaults write com.apple.PowerChime ChimeOnAllHardware -bool false && \
                                  killall PowerChime

                                  Input Devices

                                  Keyboard

                                  Auto-Correct

                                  # Disable
                                  defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false
                                  
                                  # Enable (Default)
                                  defaults write -g NSAutomaticSpellingCorrectionEnabled -bool true
                                  
                                  # Show Status
                                  defaults read -g NSAutomaticSpellingCorrectionEnabled

                                  Full Keyboard Access

                                  Enable Tab in modal dialogs.

                                  # Text boxes and lists only (Default)
                                  defaults write NSGlobalDomain AppleKeyboardUIMode -int 0
                                  
                                  # All controls
                                  defaults write NSGlobalDomain AppleKeyboardUIMode -int 3

                                  Key Repeat

                                  Disable the default "press and hold" behavior.

                                  # Enable Key Repeat
                                  defaults write -g ApplePressAndHoldEnabled -bool false
                                  
                                  # Disable Key Repeat
                                  defaults write -g ApplePressAndHoldEnabled -bool true

                                  Key Repeat Rate

                                  Sets a very fast repeat rate, adjust to taste.

                                  defaults write -g KeyRepeat -int 0.02

                                  Launchpad

                                  Reset Launchpad Layout

                                  You need to restart Dock because Launchpad is tied to it.

                                  # Up to Yosemite
                                  rm ~/Library/Application\ Support/Dock/*.db && \
                                  killall Dock
                                  
                                  # From El Capitan
                                  defaults write com.apple.dock ResetLaunchPad -bool true && \
                                  killall Dock

                                  Media

                                  Audio

                                  Convert Audio File to iPhone Ringtone

                                  afconvert input.mp3 ringtone.m4r -f m4af

                                  Create Audiobook From Text

                                  Uses "Alex" voice, a plain UTF-8 encoded text file for input and AAC output.

                                  say -v Alex -f file.txt -o "output.m4a"

                                  Disable Sound Effects on Boot

                                  sudo nvram SystemAudioVolume=" "

                                  Mute Audio Output

                                  osascript -e 'set volume output muted true'

                                  Set Audio Volume

                                  osascript -e 'set volume 4'

                                  Play Audio File

                                  You can play all audio formats that are natively supported by QuickTime.

                                  afplay -q 1 filename.mp3

                                  Speak Text with System Default Voice

                                  say 'All your base are belong to us!'

                                  Startup Chime

                                  Older Macs:

                                  # Enable (Default)
                                  sudo nvram BootAudio=%01
                                  
                                  # Disable
                                  sudo nvram BootAudio=%00

                                  From 2016 models onwards:

                                  # Enable
                                  sudo nvram StartupMute=%00
                                  
                                  # Disable (Default)
                                  sudo nvram StartupMute=%01

                                  Video

                                  Auto-Play Videos in QuickTime Player

                                  defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen 1

                                  Networking

                                  Bonjour

                                  Bonjour Service

                                  # Disable
                                  sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array-add "-NoMulticastAdvertisements"
                                  
                                  # Enable (Default)
                                  sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array "/usr/sbin/mDNSResponder" "-launchd"

                                  DHCP

                                  Renew DHCP Lease

                                  sudo ipconfig set en0 DHCP

                                  Show DHCP Info

                                  ipconfig getpacket en0

                                  DNS

                                  Clear DNS Cache

                                  sudo dscacheutil -flushcache && \
                                  sudo killall -HUP mDNSResponder

                                  Hostname

                                  Set Computer Name/Host Name

                                  sudo scutil --set ComputerName "newhostname" && \
                                  sudo scutil --set HostName "newhostname" && \
                                  sudo scutil --set LocalHostName "newhostname" && \
                                  sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "newhostname"

                                  Network Preferences

                                  Network Locations

                                  Switch between network locations created in the Network preference pane.

                                  # Status
                                  scselect
                                  
                                  # Switch Network Location
                                  scselect LocationNameFromStatus

                                  Set Static IP Address

                                  networksetup -setmanual "Ethernet" 192.168.2.100 255.255.255.0 192.168.2.1

                                  Networking Tools

                                  Ping a Host to See Whether It’s Available

                                  ping -o github.com

                                  Troubleshoot Routing Problems

                                  traceroute github.com

                                  SSH

                                  Permanently Add Private Key Passphrase to SSH Agent

                                  Prior to macOS Sierra, ssh would present a dialog asking for your passphrase and would offer the option to store it into the keychain. This UI was deprecated some time ago and has been removed.

                                  Instead, a new UseKeychain option was introduced in macOS Sierra allowing users to specify whether they would like for the passphrase to be stored in the keychain. This option was enabled by default on macOS Sierra, which caused all passphrases to be stored in the keychain.

                                  This was not the intended default behavior, so this has been changed in macOS 10.12.2. (Source)

                                  ssh-add -K /path/to/private_key

                                  Then add to ~/.ssh/config:

                                  Host server.example.com
                                      IdentityFile /path/to/private_key
                                      UseKeychain yes

                                  Remote Login

                                  # Enable remote login
                                  sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
                                  
                                  # Disable remote login
                                  sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist

                                  TCP/IP

                                  Show Application Using a Certain Port

                                  This outputs all applications currently using port 80.

                                  sudo lsof -i :80

                                  Show External IP Address

                                  Works if your ISP doesn't replace DNS requests (which it shouldn't).

                                  dig +short myip.opendns.com @resolver1.opendns.com

                                  Alternative that works on all networks.

                                  curl -s https://api.ipify.org && echo

                                  Show Network Interface Information

                                  Undocumented flag of the scutil command.

                                  scutil --nwi

                                  TFTP

                                  Start Native TFTP Daemon

                                  Files will be served from /private/tftpboot.

                                  sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist && \
                                  sudo launchctl start com.apple.tftpd

                                  Wi-Fi

                                  Join a Wi-Fi Network

                                  networksetup -setairportnetwork en0 WIFI_SSID WIFI_PASSWORD

                                  Scan Available Access Points

                                  Create a symbolic link to the airport command for easy access:

                                  sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport

                                  Run a wireless scan:

                                  airport -s

                                  Show Current SSID

                                  /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'

                                  Show Local IP Address

                                  ipconfig getifaddr en0

                                  Show Wi-Fi Connection History

                                  defaults read /Library/Preferences/SystemConfiguration/com.apple.airport.preferences | grep LastConnected -A 7

                                  Show Wi-Fi Network Passwords

                                  Exchange SSID with the SSID of the access point you wish to query the password from.

                                  security find-generic-password -D "AirPort network password" -a "SSID" -gw

                                  Turn on Wi-Fi Adapter

                                  networksetup -setairportpower en0 on

                                  Package Managers

                                  • Fink - The full world of Unix Open Source software for Darwin. A little outdated.
                                  • Homebrew - The missing package manager for OS X. The most popular choice.
                                  • MacPorts - Compile, install and upgrade either command-line, X11 or Aqua based open-source software. Very clean, it's what I use.

                                  Homebrew

                                  Full Uninstall

                                  ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

                                  Printing

                                  Clear Print Queue

                                  cancel -a -

                                  Expand Print Panel by Default

                                  defaults write -g PMPrintingExpandedStateForPrint -bool true && \
                                  defaults write -g PMPrintingExpandedStateForPrint2 -bool true

                                  Quit Printer App After Print Jobs Complete

                                  defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true

                                  Security

                                  Application Firewall

                                  Firewall Service

                                  # Show Status
                                  sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
                                  
                                  # Enable
                                  sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
                                  
                                  # Disable (Default)
                                  sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

                                  Add Application to Firewall

                                  sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /path/to/file

                                  Gatekeeper

                                  Add Gatekeeper Exception

                                  spctl --add /path/to/Application.app

                                  Remove Gatekeeper Exception

                                  spctl --remove /path/to/Application.app

                                  Manage Gatekeeper

                                  Especially helpful with the annoying Catalina system popup blocking execution of non-signed apps.

                                  # Status
                                  spctl --status
                                  
                                  # Enable (Default)
                                  sudo spctl --master-enable
                                  
                                  # Disable
                                  sudo spctl --master-disable

                                  Passwords

                                  Generate Secure Password and Copy to Clipboard

                                  LC_ALL=C tr -dc "[:alnum:]" < /dev/urandom | head -c 20 | pbcopy

                                  Physical Access

                                  Launch Screen Saver

                                  # Up to Sierra
                                  open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
                                  
                                  # From High Sierra
                                  /System/Library/CoreServices/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

                                  Lock Screen

                                  /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

                                  Screensaver Immediate Lock

                                  # Status
                                  defaults read com.apple.screensaver askForPasswordDelay
                                  
                                  # Enable (Default)
                                  defaults write com.apple.screensaver askForPasswordDelay -int 0
                                  
                                  # Disable (Integer = lock delay in seconds)
                                  defaults write com.apple.screensaver askForPasswordDelay -int 10

                                  Screensaver Password

                                  # Status
                                  defaults read com.apple.screensaver askForPassword
                                  
                                  # Enable
                                  defaults write com.apple.screensaver askForPassword -int 1
                                  
                                  # Disable (Default)
                                  defaults write com.apple.screensaver askForPassword -int 0

                                  Wiping Data

                                  Note: The srm command appears to have been removed on MacOS after 10.9. There is a note on an Apple support page hinting as to why:

                                  With an SSD drive, Secure Erase and Erasing Free Space are not available in Disk Utility. These options are not needed for an SSD drive because a standard erase makes it difficult to recover data from an SSD.

                                  Securely Remove File

                                  srm /path/to/file

                                  Securely Remove Folder

                                  srm -r /path/to/folder/

                                  Securely Remove Path (Force)

                                  srm -rf /path/to/complete/destruction

                                  Find

                                  Recursively Delete .DS_Store Files

                                  find . -type f -name '*.DS_Store' -ls -delete

                                  Locate

                                  Build Locate Database

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

                                  Search via Locate

                                  The -i modifier makes the search case insensitive.

                                  locate -i *.jpg

                                  System

                                  AirDrop

                                  # Enable AirDrop over Ethernet and on Unsupported Macs
                                  defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true
                                  
                                  # Enable (Default)
                                  defaults remove com.apple.NetworkBrowser DisableAirDrop
                                  
                                  # Disable
                                  defaults write com.apple.NetworkBrowser DisableAirDrop -bool YES

                                  AppleScript

                                  Execute AppleScript

                                  osascript /path/to/script.scpt

                                  Basics

                                  Compare Two Folders

                                  diff -qr /path/to/folder1 /path/to/folder2

                                  Copy Large File with Progress

                                  Make sure you have pv installed and replace /dev/rdisk2 with the appropriate write device or file.

                                  FILE=/path/to/file.iso pv -s $(du -h $FILE | awk '/.*/ {print $1}') $FILE | sudo dd of=/dev/rdisk2 bs=1m

                                  Restore Sane Shell

                                  In case your shell session went insane (some script or application turned it into a garbled mess).

                                  stty sane

                                  Restart

                                  sudo reboot

                                  Shutdown

                                  sudo poweroff

                                  Show Build Number of OS

                                  sw_vers

                                  Uptime

                                  How long since your last restart.

                                  uptime

                                  Clipboard

                                  Copy data to Clipboard

                                  cat whatever.txt | pbcopy

                                  Convert Clipboard to Plain Text

                                  pbpaste | textutil -convert txt -stdin -stdout -encoding 30 | pbcopy

                                  Convert Tabs to Spaces for Clipboard Content

                                  pbpaste | expand | pbcopy

                                  Copy data from Clipboard

                                  pbpaste > whatever.txt

                                  Sort and Strip Duplicate Lines from Clipboard Content

                                  pbpaste | sort | uniq | pbcopy

                                  FileVault

                                  Automatically Unlock FileVault on Restart

                                  If FileVault is enabled on the current volume, it restarts the system, bypassing the initial unlock. The command may not work on all systems.

                                  sudo fdesetup authrestart

                                  FileVault Service

                                  # Status
                                  sudo fdesetup status
                                  
                                  # Enable
                                  sudo fdesetup enable
                                  
                                  # Disable (Default)
                                  sudo fdesetup disable

                                  Information/Reports

                                  Generate Advanced System and Performance Report

                                  sudo sysdiagnose -f ~/Desktop/

                                  Install OS

                                  Create Bootable Installer

                                  # Mojave
                                  sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --nointeraction --downloadassets
                                  
                                  # High Sierra
                                  sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ High\ Sierra.app
                                  
                                  # Sierra
                                  sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ Sierra.app
                                  
                                  # El Capitan
                                  sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app
                                  
                                  # Yosemite
                                  sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ Yosemite.app
                                  • For confirmation before erasing the drive, remove –-nointeraction from the command.
                                  • The optional –-downloadassets flag is new in Mojave. It downloads assets which may be required during installation, like updates.
                                  • The –-applicationpath flag is deprecated since Mojave and will throw an error if used.

                                  Kernel Extensions

                                  Display Status of Loaded Kernel Extensions

                                  sudo kextstat -l

                                  Load Kernel Extension

                                  sudo kextload -b com.apple.driver.ExampleBundle

                                  Unload Kernel Extensions

                                  sudo kextunload -b com.apple.driver.ExampleBundle

                                  LaunchAgents

                                  Please see this file.

                                  LaunchServices

                                  Rebuild LaunchServices Database

                                  To be independent of OS X version, this relies on locate to find lsregister. If you do not have your locate database built yet, do it.

                                  sudo $(locate lsregister) -kill -seed -r

                                  Login Window

                                  Set Login Window Text

                                  sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Your text"

                                  Memory Management

                                  Purge memory cache

                                  sudo purge

                                  Show Memory Statistics

                                  # One time
                                  vm_stat
                                  
                                  # Table of data, repeat 10 times total, 1 second wait between each poll
                                  vm_stat -c 10 1

                                  Notification Center

                                  Notification Center Service

                                  # Disable
                                  launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist && \
                                  killall -9 NotificationCenter
                                  
                                  # Enable (Default)
                                  launchctl load -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist

                                  QuickLook

                                  Preview via QuickLook

                                  qlmanage -p /path/to/file

                                  Remote Apple Events

                                  # Status
                                  sudo systemsetup -getremoteappleevents
                                  
                                  # Enable
                                  sudo systemsetup -setremoteappleevents on
                                  
                                  # Disable (Default)
                                  sudo systemsetup -setremoteappleevents off

                                  Root User

                                  # Enable
                                  dsenableroot
                                  
                                  # Disable
                                  dsenableroot -d

                                  Safe Mode Boot

                                  # Status
                                  nvram boot-args
                                  
                                  # Enable
                                  sudo nvram boot-args="-x"
                                  
                                  # Disable
                                  sudo nvram boot-args=""

                                  Save Dialogs

                                  Significantly improve the now rather slow animation in save dialogs.

                                  defaults write NSGlobalDomain NSWindowResizeTime .001

                                  Screenshots

                                  Take Delayed Screenshot

                                  Takes a screenshot as JPEG after 3 seconds and displays in Preview.

                                  screencapture -T 3 -t jpg -P delayedpic.jpg

                                  Save Screenshots to Given Location

                                  Sets location to ~/Desktop.

                                  defaults write com.apple.screencapture location ~/Desktop && \
                                  killall SystemUIServer

                                  Save Screenshots in Given Format

                                  Sets format to png. Other options are bmpgifjpgjpegpdftiff.

                                  defaults write com.apple.screencapture type -string "png"

                                  Disable Shadow in Screenshots

                                  defaults write com.apple.screencapture disable-shadow -bool true && \
                                  killall SystemUIServer

                                  Set Default Screenshot Name

                                  Date and time remain unchanged.

                                  defaults write com.apple.screencapture name "Example name" && \
                                  killall SystemUIServer

                                  Software Installation

                                  Install PKG

                                  installer -pkg /path/to/installer.pkg -target /

                                  Sidecar

                                  Use on Incompatible Macs

                                  This may or may not work, depending on the age of the machine.

                                  # Enable
                                  defaults write com.apple.sidecar.display AllowAllDevices -bool true && \
                                  defaults write com.apple.sidecar.display hasShownPref -bool true
                                  
                                  # Disable (Default)
                                  defaults delete com.apple.sidecar.display

                                  Software Update

                                  Ignore Specific Software Update

                                  The identifier can be found via softwareupdate --list. In the example below, being on Mojave, will ignore all update prompts to Catalina, since the latter removes 32-bit support.

                                  sudo /usr/sbin/softwareupdate --ignore "macOS Catalina"

                                  Install All Available Software Updates

                                  sudo softwareupdate -ia

                                  Set Software Update Check Interval

                                  Set to check daily instead of weekly.

                                  defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1

                                  Show Available Software Updates

                                  sudo softwareupdate --list

                                  Set Software Update Server

                                  This should only be done for testing purposes or unmanaged clients. To use network-wide, either correctly set up DNS along with Apple SUS service and bind your clients via OpenDirectory. Alternatively, use Reposado together with correct network DNS settings to make resolution transparent. Margarita looks nice to have as well.

                                  # Use own SUS
                                  sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL http://su.example.com:8088/index.sucatalog
                                  
                                  # Reset to Apple SUS
                                  sudo defaults delete /Library/Preferences/com.apple.SoftwareUpdate CatalogURL

                                  Software Version

                                  Show System Software Version

                                  sw_vers -productVersion

                                  Spotlight

                                  Spotlight Indexing

                                  # Disable
                                  mdutil -i off -d /path/to/volume
                                  
                                  # Enable (Default)
                                  mdutil -i on /path/to/volume

                                  Erase Spotlight Index and Rebuild

                                  mdutil -E /path/to/volume

                                  Search via Spotlight

                                  mdfind -name 'searchterm'

                                  Show Spotlight Indexed Metadata

                                  mdls /path/to/file

                                  System Integrity Protection

                                  Disable System Integrity Protection

                                  Reboot while holding Cmd + R, open the Terminal application and enter:

                                  csrutil disable && reboot

                                  Enable System Integrity Protection

                                  Reboot while holding Cmd + R, open the Terminal application and enter:

                                  csrutil enable && reboot

                                  Date and Time

                                  List Available Timezones

                                  sudo systemsetup -listtimezones

                                  Set Timezone

                                  sudo systemsetup -settimezone Europe/Berlin

                                  Set Clock Using Network Time

                                  # Status
                                  sudo systemsetup getusingnetworktime
                                  
                                  # Enable (Default)
                                  sudo systemsetup setusingnetworktime on
                                  
                                  # Disable
                                  sudo systemsetup setusingnetworktime off

                                  Terminal

                                  Ring Terminal Bell

                                  Rings the terminal bell (if enabled) and puts a badge on it.

                                  tput bel

                                  Alternative Terminals

                                  • Alacritty - Cross-platform, GPU-accelerated terminal emulator.
                                  • iTerm2 - A better Terminal.app.
                                  • kitty - Modern, GPU-accelerated terminal emulator.

                                  Shells

                                  Bash

                                  Install the latest version and set as current user's default shell:

                                  brew install bash && \
                                  echo $(brew --prefix)/bin/bash | sudo tee -a /etc/shells && \
                                  chsh -s $(brew --prefix)/bin/bash
                                  • Homepage - The default shell for OS X and most other Unix-based operating systems.
                                  • Bash-it - Community Bash framework, like Oh My Zsh for Bash.

                                  fish

                                  Install the latest version and set as current user's default shell:

                                  brew install fish && \
                                  echo $(brew --prefix)/bin/fish | sudo tee -a /etc/shells && \
                                  chsh -s $(brew --prefix)/bin/fish
                                  • Homepage - A smart and user-friendly command line shell for OS X, Linux, and the rest of the family.
                                  • The Fishshell Framework - Provides core infrastructure to allow you to install packages which extend or modify the look of your shell.
                                  • Installation & Configuration Tutorial - How to Setup Fish Shell with Fisherman, Powerline Fonts, iTerm2 and Budspencer Theme on OS X.

                                  Zsh

                                  Install the latest version and set as current user's default shell:

                                  brew install zsh && \
                                  sudo sh -c 'echo $(brew --prefix)/bin/zsh >> /etc/shells' && \
                                  chsh -s $(brew --prefix)/bin/zsh
                                  • Homepage - Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
                                  • Oh My Zsh - An open source, community-driven framework for managing your Zsh configuration.
                                  • Prezto - A speedy Zsh framework. Enriches the command line interface environment with sane defaults, aliases, functions, auto completion, and prompt themes.
                                  • zgen - Another open source framework for managing your zsh configuration. Zgen will load oh-my-zsh compatible plugins and themes and has the advantage of both being faster and automatically cloning any plugins used in your configuration for you.

                                  Terminal Fonts

                                  • Anonymous Pro - A family of four fixed-width fonts designed with coding in mind.
                                  • Codeface - A gallery and repository of monospaced fonts for developers.
                                  • DejaVu Sans Mono - A font family based on the Vera Fonts.
                                  • Hack - Hack is hand groomed and optically balanced to be your go-to code face.
                                  • Inconsolata - A monospace font, designed for code listings and the like.
                                  • Input - A flexible system of fonts designed specifically for code.
                                  • Meslo - Customized version of Apple's Menlo font.
                                  • Operator Mono - A surprisingly usable alternative take on a monospace font (commercial).
                                  • Powerline Fonts - Repo of patched fonts for the Powerline plugin.
                                  • Source Code Pro - A monospaced font family for user interfaces and coding environments.

                                  Glossary

                                  Mac OS X, OS X, and macOS Version Information

                                  Version Codename Release Date Most Recent Version
                                  Rhapsody Developer Release Grail1Z4 / Titan1U August 31, 1997 DR2 (May 14, 1998)
                                  Mac OS X Server 1.0 Hera March 16, 1999 1.2v3 (October 27, 2000)
                                  Mac OS X Developer Preview n/a March 16, 1999 DP4 (April 5, 2000)
                                  Mac OS X Public Beta Kodiak September 13, 2000 n/a
                                  Mac OS X 10.0 Cheetah March 24, 2001 10.0.4 (June 22, 2001)
                                  Mac OS X 10.1 Puma September 25, 2001 10.1.5 (June 6, 2002)
                                  Mac OS X 10.2 Jaguar August 24, 2002 10.2.8 (October 3, 2003)
                                  Mac OS X 10.3 Panther October 24, 2003 10.3.9 (April 15, 2005)
                                  Mac OS X 10.4 Tiger April 29, 2005 10.4.11 (November 14, 2007)
                                  Mac OS X 10.5 Leopard October 26, 2007 10.5.8 (August 5, 2009)
                                  Mac OS X 10.6 Snow Leopard August 28, 2009 10.6.8 v1.1 (July 25, 2011)
                                  Mac OS X 10.7 Lion July 20, 2011 10.7.5 (September 19, 2012)
                                  OS X 10.8 Mountain Lion July 25, 2012 10.8.5 (12F45) (October 3, 2013)
                                  OS X 10.9 Mavericks October 22, 2013 10.9.5 (13F1112) (September 18, 2014)
                                  OS X 10.10 Yosemite October 16, 2014 10.10.5 (14F27) (August 13, 2015)
                                  OS X 10.11 El Capitan September 30, 2015 10.11.6 (15G31) (July 18, 2016)
                                  macOS 10.12 Sierra September 20, 2016 10.12.6 (16G29) (July 19, 2017)
                                  macOS 10.13 High Sierra September 25, 2017 10.13.6 (17G65) (July 9, 2018)
                                  macOS 10.14 Mojave September 24, 2018 10.14.6 (18G3020) (January 28, 2020)
                                  macOS 10.15 Catalina October 7, 2019 10.15.3 (19D76) (January 28, 2020)

                                  License

                                  Creative Commons License
                                  This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.