/awesome-osx-command-line

Use your OS X terminal shell to do awesome things.

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

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

Table of Contents

Appearance

Transparency

Disable Transparency in Menu and Windows

defaults write com.apple.universalaccess reduceTransparency -bool true

Enable Transparency in Menu and Windows

defaults write com.apple.universalaccess reduceTransparency -bool false

Wallpaper

Set Wallpaper

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/path/to/picture.jpg"'

Applications

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/##'

Apple Remote Desktop

Remove Apple Remote Desktop Settings

sudo rm -rf /var/db/RemoteManagement
sudo rm /Library/Preferences/com.apple.RemoteDesktop.plist
rm ~/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

Sketch

Export Compact SVGs

defaults write com.bohemiancoding.sketch3 exportCompactSVG -bool yes

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/Launch Daemons/com.apple.backupd-auto StartInterval -int 1800

Disable Local Time Machine Backups

hash tmutil &> /dev/null && sudo tmutil disablelocal

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

defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true

Developer

App Icons

Create App Icon

Function to quickly create an application icon from 1024px master file.

function mkicns() {
    if [[ -z "$@" ]]; then
        echo "Input file missing"
    else
        filename=${1%.*}
        mkdir $filename.iconset
        sips -z 16 16   $1 --out $filename.iconset/icon_16x16.png
        sips -z 32 32   $1 --out $filename.iconset/icon_16x16@2x.png
        sips -z 32 32   $1 --out $filename.iconset/icon_32x32.png
        sips -z 64 64   $1 --out $filename.iconset/icon_32x32@2x.png
        sips -z 128 128 $1 --out $filename.iconset/icon_128x128.png
        sips -z 256 256 $1 --out $filename.iconset/icon_128x128@2x.png
        sips -z 256 256 $1 --out $filename.iconset/icon_256x256.png
        sips -z 512 512 $1 --out $filename.iconset/icon_256x256@2x.png
        sips -z 512 512 $1 --out $filename.iconset/icon_512x512.png
        cp $1 $filename.iconset/icon_512x512@2x.png
        iconutil -c icns $filename.iconset
        rm -r $filename.iconset
    fi
}

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-python

Xcode

Install Command Line Tools Without Xcode

xcode-select --install

Remove All Unavailable Simulators

xcrun simctl delete unavailable

Disks and Volumes

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)'

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

Repair File Permissions

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

sudo diskutil repairPermissions /

Set Boot Volume

bless --mount "/path/to/mounted/volume" --setBoot

Show All Attached Disks and Partitions

diskutil list

Documents

Convert File to HTML

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

textutil -convert html file.ext

Finder

Files and Folders

Hide Folder in Finder

chflags hidden /path/to/folder/

Show All File Extensions

defaults write NSGlobalDomain AppleShowAllExtensions -bool true

Show All Hidden Files

defaults write com.apple.finder AppleShowAllFiles true

Restore Default File Visibility

defaults write com.apple.finder AppleShowAllFiles false

Unhide User Library folder

chflags nohidden ~/Library

Icons

Hide All Desktop Icons

defaults write com.apple.finder CreateDesktop -bool false && killall Finder

Show All Desktop Icons

defaults write com.apple.finder CreateDesktop -bool true && killall Finder

Opening Things

Open URL

open http://www.github.com

Open File

open README.md

Open Applications

You can open applications using -a.

open -a "Google Chrome" http://www.github.com

Open Directory

open /path/to/directory

Open Current Directory

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

Hardware

Hardware Information

List All Hardware Ports

networksetup -listallhardwareports

Show Current Screen Resolution

system_profiler SPDisplaysDataType | grep Resolution

Show CPU Brand String

sysctl -n machdep.cpu.brand_string

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

Input Devices

Keyboard

Disable Auto-Correct

defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false

Enable Auto-Correct

defaults write -g NSAutomaticSpellingCorrectionEnabled -bool true

Show Auto-Correct Setting

defaults read -g NSAutomaticSpellingCorrectionEnabled

Media

Audio

Convert Audio File to iPhone Ringtone

afconvert input.mp3 ringtone.m4r -f m4af

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!'

Networking

Bonjour

Disable Bonjour

defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder ProgramArguments -array "/usr/sbin/mDNSResponder" "-launchd"

Enable Bonjour

defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder ProgramArguments -array-add "-NoMulticastAdvertisements"

DHCP

Renew DHCP Lease

sudo ipconfig set en0 DHCP

Show DHCP Info

ipconfig getpacket en0

DNS

Clear DNS Cache

sudo dscachutil -flushcache && sudo killall -HUP mDNSResponder

Hostname

Set Hostname

You need to run all of the commands since the hostname needs to be changed in three places.

sudo scutil --set ComputerName "newhostname"
sudo scutil --set LocalHostName "newhostname"
sudo scutil --set HostName "newhostname"

Networking Tools

Ping a Host to See Whether It’s Available

ping -o github.com

Troubleshoot Routing Problems

traceroute github.com

TCP/IP

Show Application Using a Certain Port

This outputs all applications currently using port 80.

sudo lsof -i :80

Wi-Fi

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 Wi-Fi Connection History

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

Show Wi-Fi Network Passwords

security find-generic-password -ga "ROUTERNAME" | grep "password:"

Package 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 -

Security

Gatekeeper

Add Gatekeeper Exception

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

Remove Gatekeeper Exception

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

Passwords

Generate Secure Password and Copy to Clipboard

First, install pwgen via Homebrew, etc.

pwgen -Cs 20 1 | tr -d ' ' | tr -d '\n' | pbcopy

Physical Access

Lock Screen

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

Wiping Data

Securely Remove File

srm /path/to/file

Securely Remove Directory

srm -r /path/to/directory/

Securely Remove Path (Force)

srm -rf /path/to/complete/destruction

Search

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

AppleScript

Execute AppleScript

osascript /path/to/script.scpt

Basics

Restart

sudo reboot

Shutdown

sudo poweroff

Show Build Number of OS

sw_vers

Clipboard

Copy data to Clipboard

cat whatever.txt | 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

Check FileVault Status

sudo fdesetup status

Information/Reports

Generate Advanced System and Performance Report

sudo sysdiagnose -f ~/Desktop/

Kernel Extensions

Load Kernel Extension

sudo kextload -b com.apple.driver.ExampleBundle

Unload Kernel Extensions

sudo kextunload -b com.apple.driver.ExampleBundle

LaunchAgents

Periodical Job Template

Run job every 5 minutes.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.touchsomefile</string>
    <key>ProgramArguments</key>
    <array>
        <string>touch</string>
        <string>/tmp/helloworld</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

Periodical via Calendar Interval Job Template

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.touchsomefile</string>
    <key>ProgramArguments</key>
    <array>
        <string>touch</string>
        <string>/tmp/helloworld</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Minute</key>
        <integer>45</integer>
        <key>Hour</key>
        <integer>13</integer>
        <key>Day</key>
        <integer>7</integer>
    </dict>
</dict>
</plist>

Monitoring Directory Job Template

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.watchhostconfig</string>
    <key>ProgramArguments</key>
    <array>
        <string>syslog</string>
        <string>-s</string>
        <string>-l</string>
        <string>notice</string>
        <string>somebody touched /etc/hostconfig</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/etc/hostconfig</string>
    </array>
</dict>
</plist>

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

Memory Management

Purge memory cache

sudo purge

Notification Center

Disable Notification Center

launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist && killall -9 NotificationCenter

Enable Notification Center

launchctl load -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist

QuickLook

Preview via QuickLook

qlmanage -p /path/to/file

Root User

Enable Root User

dsenableroot

Disable Root User

dsenableroot -d

Safe Mode Boot

Check Safe Mode Setting

nvram boot-args

Enable Safe Mode

sudo nvram boot-args="-x"

Disable Safe Mode

sudo nvram boot-args=""

Software Installation

Install PKG

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

Spotlight

Disable Indexing

mdutil -i off -d /path/to/volume

Enable Indexing

mdutil -i on /path/to/volume

Erase Spotlight Index and Rebuild

mdutil -E /path/to/volume

Search via Spotlight

mdfind -name 'searchterm'

Terminal

Ring Terminal Bell

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

tput bel

License

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