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)
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.
Table of Contents
- Appearance
- Applications
- Backup
- Developer
- Disks and Volumes
- Dock
- Documents
- Finder
- Fonts
- Functions
- Hardware
- Input Devices
- Media
- Networking
- Package Managers
- Printing
- Security
- Search
- System
- AirDrop
- AppleScript
- Basics
- Clipboard
- Date and Time
- FileVault
- Information/Reports
- Kernel Extensions
- LaunchAgents
- LaunchServices
- Login Window
- Memory Management
- Notification Center
- QuickLook
- Remote Apple Events
- Root User
- Safe Mode Boot
- Screenshots
- Software Installation
- Software Update
- Spotlight
- System Integrity Protection
- Terminal
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 falseWallpaper
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 DockApplications
App Store
List All Apps Downloaded from App Store
find /Applications -path '*Contents/_MASReceipt/receipt' -maxdepth 4 -print |\sed 's#.app/Contents/_MASReceipt/receipt#.app#g; s#/Applications/##'Show Debug Menu
# Enable
defaults write com.apple.appstore ShowDebugMenu -bool true
# Disable (Default)
defaults write com.apple.appstore ShowDebugMenu -bool falseApple Remote Desktop
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.RemoteDesktopContacts
Debug Mode
# Enable
defaults write com.apple.addressbook ABShowDebugMenu -bool true
# Disable (Default)
defaults write com.apple.addressbook ABShowDebugMenu -bool falseiTunes
Keyboard Media Keys
# 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.plistShow Attachments as Icons
defaults write com.apple.mail DisableInlineAttachmentViewing -bool yesVacuum 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://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
*)
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"
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 activateSafari
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 NSGlobalDomain WebKitDeveloperExtras -bool trueGet Current Page Data
Other options: get source, get text.
osascript -e 'tell application "Safari" to get URL of current tab of front window'Sketch
Export Compact SVGs
defaults write com.bohemiancoding.sketch3 exportCompactSVG -bool yesSkim
Turn Off Auto Reload Dialog
Removes the dialog and defaults to auto reload.
defaults write -app Skim SKAutoReloadFileUpdate -boolean trueTextEdit
Use Plain Text Mode as Default
defaults write com.apple.TextEdit RichText -int 0Backup
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/Launch Daemons/com.apple.backupd-auto StartInterval -int 1800Local Backups
Whether Time Machine performs local backups while the Time Machine backup volume is not available.
# Disable
sudo tmutil disablelocal
# Enable (Default)
sudo tmutil enablelocalPrevent Time Machine from Prompting to Use New Hard Drives as Backup Volume
defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool trueSet Status
# Disable Local Time Machine Backups
hash tmutil &> /dev/null && sudo tmutil disablelocal
# Enable Local Time Machine Backups (Default)
hash tmutil &> /dev/null && sudo tmutil enablelocalDeveloper
Vim
Compile Sane Vim
Compiling MacVim via Homebrew with all bells and whistles, including overriding system Vim.
brew install macvim --HEAD --with-cscope --with-lua --with-override-system-vim --with-luajit --with-pythonNeovim
Install the development version of this modern Vim drop-in alternative via Homebrew.
brew tap neovim/neovim && \
brew install neovimXcode
Install Command Line Tools without Xcode
xcode-select --installRemove All Unavailable Simulators
xcrun simctl delete unavailableDisks and Volumes
Disable Sudden Motion Sensor
Leaving this turned on is useless when you're using SSDs.
sudo pmset -a sms 0Eject 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
bless --mount "/path/to/mounted/volume" --setBootShow All Attached Disks and Partitions
diskutil listView File System Usage
A continuous stream of file system access info.
sudo fs_usageDisk Images
Create Disk Image From Folder Contents
hdiutil create -volname "Volume Name" -srcfolder /path/to/folder -ov diskimage.dmgIf you'd like to encrypt the disk image:
hdiutil create -encryption -stdinpass -volname "Volume Name" -srcfolder /path/to/folder -ov encrypted.dmgBy 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.dmgBurn Disk Images to DVD
This command applies to .iso, .img and .dmg images.
hdiutil burn /path/to/image_fileDisable 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 trueMake Volume OS X Bootable
bless --folder "/path/to/mounted/volume/System/Library/CoreServices" --bootinfo --bootefiMount Disk Image
hdiutil attach /path/to/diskimage.dmgUnmount Disk Image
hdiutil detach /dev/disk2s1Write Disk Image to Volume
Like the Disk Utility "Restore" function.
sudo asr -restore -noverify -source /path/to/diskimage.dmg -target /Volumes/VolumeToRestoreToDock
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 DockAdd a Space
defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}' && \
killall DockIcon 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 DockReset Dock
defaults delete com.apple.dock && \
killall DockScroll 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 DockSet Auto Show/Hide Delay
The float number defines the show/hide delay in ms.
defaults write com.apple.Dock autohide-delay -float 0 && \
killall DockShow Hidden App Icons
# Enable
defaults write com.apple.dock showhidden -bool true && \
killall Dock
# Disable
defaults write com.apple.dock showhidden -bool false && \
killall DockDocuments
Convert File to HTML
Supported formats are plain text, rich text (rtf) and Microsoft Word (doc/docx).
textutil -convert html file.extFinder
Files and Folders
Clear All ACLs
sudo chmod -RN /path/to/folderHide Folder in Finder
chflags hidden /path/to/folder/Show All File Extensions
defaults write NSGlobalDomain AppleShowAllExtensions -bool trueShow Hidden Files
# Show All
defaults write com.apple.finder AppleShowAllFiles true
# Restore Default File Visibility
defaults write com.apple.finder AppleShowAllFiles falseRemove Protected Flag
sudo chflags -R nouchg /path/to/file/or/folderShow Full Path in Finder Title
defaults write com.apple.finder _FXShowPosixPathInTitle -bool trueUnhide User Library Folder
chflags nohidden ~/LibraryIncrease Number of Recent Places
defaults write .GlobalPreferences NSNavRecentPlacesLimit -int 10 && \
killall FinderLayout
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 FinderSmooth Scrolling
Useful if you’re on an older Mac that messes up the animation.
# Disable
defaults write NSGlobalDomain NSScrollAnimationEnabled -bool false
# Enable (Default)
defaults write NSGlobalDomain NSScrollAnimationEnabled -bool trueRubberband Scrolling
# Disable
defaults write -g NSScrollViewRubberbanding -bool false
# Enable (Default)
defaults write -g NSScrollViewRubberbanding -bool trueExpand Save Panel by Default
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true && \
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool trueDesktop 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 FinderPath Bar
# Show
defaults write com.apple.finder ShowPathbar -bool true
# Hide (Default)
defaults write com.apple.finder ShowPathbar -bool falseScrollbar Visibility
Possible values: WhenScrolling, Automatic and Always.
defaults write NSGlobalDomain AppleShowScrollBars -string "Always"Status Bar
# Show
defaults write com.apple.finder ShowStatusBar -bool true
# Hide (Default)
defaults write com.apple.finder ShowStatusBar -bool falseSave to Disk by Default
Sets default save target to be a local disk, not iCloud.
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool falseSet 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 NSGlobalDomain NSTableViewDefaultSizeMode -int 2Metadata Files
Disable Creation of Metadata Files on Network Volumes
Avoids creation of .DS_Store and AppleDouble files.
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool trueDisable Creation of Metadata Files on USB Volumes
Avoids creation of .DS_Store and AppleDouble files.
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool trueOpening 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.comOpen File
open README.mdOpen Applications
You can open applications using -a.
open -a "Google Chrome" https://github.comOpen 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 -pingFunctions
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 bluedHardware Information
List All Hardware Ports
networksetup -listallhardwareportsRemaining 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 ResolutionShow CPU Brand String
sysctl -n machdep.cpu.brand_stringInfrared 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 0Power Management
Prevent System Sleep
Prevent sleep for 1 hour:
caffeinate -u -t 3600Show All Power Management Settings
sudo pmset -gPut Display to Sleep after 15 Minutes of Inactivity
sudo pmset displaysleep 15Put Computer to Sleep after 30 Minutes of Inactivity
sudo pmset sleep 30Check System Sleep Idle Time
sudo systemsetup -getcomputersleepSet System Sleep Idle Time to 60 Minutes
sudo systemsetup -setcomputersleep 60Turn Off System Sleep Completely
sudo systemsetup -setcomputersleep NeverAutomatic Restart on System Freeze
sudo systemsetup -setrestartfreeze onChime 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 PowerChimeInput Devices
Keyboard
Auto-Correct
# Disable
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false
# Enable (Default)
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool true
# Show Status
defaults read -g NSAutomaticSpellingCorrectionEnabledKey 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 trueKey Repeat Rate
Sets a very fast repeat rate, adjust to taste.
defaults write NSGlobalDomain KeyRepeat -int 0.02Media
Audio
Convert Audio File to iPhone Ringtone
afconvert input.mp3 ringtone.m4r -f m4afCreate 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.mp3Speak Text with System Default Voice
say 'All your base are belong to us!'Video
Auto-Play Videos in QuickTime Player
defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen 1Networking
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 DHCPShow DHCP Info
ipconfig getpacket en0DNS
Clear DNS Cache
sudo dscacheutil -flushcache && \
sudo killall -HUP mDNSResponderHostname
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 LocationNameFromStatusNetworking Tools
Ping a Host to See Whether It’s Available
ping -o github.comTroubleshoot Routing Problems
traceroute github.comSSH
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.plistTCP/IP
Show Application Using a Certain Port
This outputs all applications currently using port 80.
sudo lsof -i :80Show External IP Address
dig +short myip.opendns.com @resolver1.opendns.comWi-Fi
Join a Wi-Fi Network
networksetup -setairportnetwork en0 WIFI_SSID WIFI_PASSWORDScan 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/airportRun a wireless scan:
airport -sShow 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 en0Show Wi-Fi Connection History
defaults read /Library/Preferences/SystemConfiguration/com.apple.airport.preferences | grep LastConnected -A 7Show 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" -gwTurn on Wi-Fi Adapter
networksetup -setairportpower en0 onPackage Managers
- Fink - The full world of Unix Open Source software for Darwin.
- Homebrew - The missing package manager for OS X.
- MacPorts - Compile, install and upgrade either command-line, X11 or Aqua based open-source software.
Printing
Clear Print Queue
cancel -a -Expand Print Panel by Default
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true && \
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool trueQuit Printer App After Print Jobs Complete
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool trueSecurity
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 offAdd Application to Firewall
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /path/to/fileGatekeeper
Add Gatekeeper Exception
spctl --add /path/to/Application.appRemove Gatekeeper Exception
spctl --remove /path/to/Application.appPasswords
Generate Secure Password and Copy to Clipboard
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 20 | pbcopyPhysical Access
Launch Screen Saver
open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.appLock Screen
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspendScreensaver 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 10Screensaver 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 0Wiping Data
Securely Remove File
srm /path/to/fileSecurely Remove Folder
srm -r /path/to/folder/Securely Remove Path (Force)
srm -rf /path/to/complete/destructionSearch
Find
Recursively Delete .DS_Store Files
find . -type f -name '*.DS_Store' -ls -deleteLocate
Build Locate Database
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plistSearch via Locate
The -i modifier makes the search case insensitive.
locate -i *.jpgSystem
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 YESAppleScript
Execute AppleScript
osascript /path/to/script.scptBasics
Compare Two Folders
diff -qr /path/to/folder1 /path/to/folder2Restart
sudo rebootShutdown
sudo poweroffShow Build Number of OS
sw_versUptime
How long since your last restart.
uptimeClipboard
Copy data to Clipboard
cat whatever.txt | pbcopyConvert Clipboard to Plain Text
pbpaste | textutil -convert txt -stdin -stdout -encoding 30 | pbcopyConvert Tabs to Spaces for Clipboard Content
pbpaste | expand | pbcopyCopy data from Clipboard
pbpaste > whatever.txtSort and Strip Duplicate Lines from Clipboard Content
pbpaste | sort | uniq | pbcopyFileVault
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 authrestartFileVault Service
# Status
sudo fdesetup status
# Enable
sudo fdesetup enable
# Disable (Default)
sudo fdestatus disableInformation/Reports
Generate Advanced System and Performance Report
sudo sysdiagnose -f ~/Desktop/Kernel Extensions
Display Status of Loaded Kernel Extensions
sudo kextstat -lLoad Kernel Extension
sudo kextload -b com.apple.driver.ExampleBundleUnload Kernel Extensions
sudo kextunload -b com.apple.driver.ExampleBundleLaunchAgents
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 -rLogin Window
Set Login Window Text
sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Your text"Memory Management
Purge memory cache
sudo purgeShow Memory Statistics
# One time
vm_stat
# Table of data, repeat 10 times total, 1 second wait between each poll
vm_stat -c 10 1Notification 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.plistQuickLook
Preview via QuickLook
qlmanage -p /path/to/fileRemote Apple Events
# Status
sudo systemsetup -getremoteappleevents
# Enable
sudo systemsetup -setremoteappleevents on
# Disable (Default)
sudo systemsetup -setremoteappleevents offRoot User
# Enable
dsenableroot
# Disable
dsenableroot -dSafe Mode Boot
# Status
nvram boot-args
# Enable
sudo nvram boot-args="-x"
# Disable
sudo nvram boot-args=""Screenshots
Take Delayed Screenshot
Takes a screenshot as JPEG after 3 seconds and displays in Preview.
screencapture -T 3 -t jpg -P delayedpic.jpgSave Screenshots to Given Location
Sets location to ~/Desktop.
defaults write com.apple.screencapture location ~/Desktop && \
killall SystemUIServerSave Screenshots in Given Format
Sets format to png. Other options are bmp, gif, jpg, jpeg, pdf, tiff.
defaults write com.apple.screencapture type -string "png"Disable Shadow in Screenshots
defaults write com.apple.screencapture disable-shadow -bool true && \
killall SystemUIServerSet Default Screenshot Name
Date and time remain unchanged.
defaults write com.apple.screencapture name "Example name" && \
killall SystemUIServerSoftware Installation
Install PKG
installer -pkg /path/to/installer.pkg -target /Software Update
Install All Available Software Updates
sudo softwareupdate -iaSet Software Update Check Interval
Set to check daily instead of weekly.
defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1Show Available Software Updates
sudo softwareupdate -lSet 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 CatalogURLSpotlight
Spotlight Indexing
# Disable
mdutil -i off -d /path/to/volume
# Enable (Default)
mdutil -i on /path/to/volumeErase Spotlight Index and Rebuild
mdutil -E /path/to/volumeSearch via Spotlight
mdfind -name 'searchterm'Show Spotlight Indexed Metadata
mdls /path/to/fileSystem Integrity Protection
Disable System Integrity Protection
Reboot while holding Cmd + R, open the Terminal application and enter:
csrutil disable && rebootEnable System Integrity Protection
Reboot while holding Cmd + R, open the Terminal application and enter:
csrutil enable && rebootDate and Time
List Available Timezones
sudo systemsetup -listtimezonesSet Timezone
sudo systemsetup -settimezone Europe/BerlinSet Clock Using Network Time
# Status
sudo systemsetup getusingnetworktime
# Enable (Default)
sudo systemsetup setusingnetworktime on
# Disable
sudo systemsetup setusingnetworktime offTerminal
Ring Terminal Bell
Rings the terminal bell (if enabled) and puts a badge on it.
tput belAlternative Terminals
- iTerm2 - A better Terminal.app.
Shells
Bash
Install the latest version and set as current users' default shell:
brew install bash && \
sudo echo $(brew --prefix)/bin/bash >> /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 users' 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.
- Fisherman - A blazing fast, modern plugin manager for Fish.
- 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 users' 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.
- Powerline Fonts - Repo of patched fonts for the Powerline plugin.
- Source Code Pro - A monospaced font family for user interfaces and coding environments.
License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
