ipereziriarte / awesome-osx-command-line

Use your OS X terminal shell to do awesome things.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 Gitter

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

Table of Contents

Appearance

Transparency

Reduce Transparency in Menu and Windows

defaults write com.apple.universalaccess reduceTransparency -bool true

Restore Default Transparency in Menu and Windows

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

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

iTunes

Stop Responding to the Keyboard Media Keys

launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist

Safari

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 true

Sketch

Export Compact SVGs

defaults write com.bohemiancoding.sketch3 exportCompactSVG -bool yes

TextEdit

Use Plain Text Mode as Default

defaults write com.apple.TextEdit RichText -int 0

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

NeoVim

Install the development version of this modern Vim drop-in alternative via Homebrew.

brew tap neovim/neovim && \
brew install --HEAD neovim

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

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" --setBoot

Show All Attached Disks and Partitions

diskutil list

View File System Usage

A contiuous stream of file system access info.

sudo fs_usage

Disk Images

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

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

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

Clear All ACLs

sudo chmod -RN /path/to/folder

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

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

Layout

Disable Smooth Scrolling

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

defaults write NSGlobalDomain NSScrollAnimationEnabled -bool false

Enable Smooth Scrolling

Revert back to standard behavior.

defaults write NSGlobalDomain NSScrollAnimationEnabled -bool true

Disable Rubberband Scrolling

defaults write -g NSScrollViewRubberbanding -bool false

Enable Rubberband Scrolling

Revert to default behavior.

defaults write -g NSScrollViewRubberbanding -bool true

Expand Save Panel by Default

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

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

Show Path Bar

defaults write com.apple.finder ShowPathbar -bool true

Scrollbar Visibility

Possible values: WhenScrolling, Automatic and Always.

defaults write NSGlobalDomain AppleShowScrollBars -string "Always"

Show Status Bar

defaults write com.apple.finder ShowStatusBar -bool true

Save to Disk by Default

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

defaults write NSGlobalDomain 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 NSGlobalDomain 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 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 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

Hardware

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

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

Enable Chime when Charging

Play iOS charging sound when MagSafe is connected.

defaults write com.apple.PowerChime ChimeOnAllHardware -bool true && \
open /System/Library/CoreServices/PowerChime.app

Disable Chime when Charging

defaults write com.apple.PowerChime ChimeOnAllHardware -bool false && \
open /System/Library/CoreServices/PowerChime.app

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

Enable Key Repeat

Disable the default "press and hold" behavior.

defaults write -g ApplePressAndHoldEnabled -bool false

Set Key Repeat Rate

Sets a very fast repeat rate, adjust to taste.

defaults write NSGlobalDomain KeyRepeat -int 0.02

Media

Audio

Convert Audio File to iPhone Ringtone

afconvert input.mp3 ringtone.m4r -f m4af

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

Video

Auto-Play Videos in QuickTime Player

defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen 1

Networking

Bonjour

Disable Bonjour

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

Enable Bonjour

sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder 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"

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

Show External IP Address

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

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

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 -

Expand Print Panel by Default

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

Quit Printer App After Print Jobs Complete

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

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 Folder

srm -r /path/to/folder/

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

AirDrop

Enable AirDrop over Ethernet and on Unsupported Macs

defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true

AppleScript

Execute AppleScript

osascript /path/to/script.scpt

Basics

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

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 Folder 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=""

Screenshots

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

Software Installation

Install PKG

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

Software Update

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

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'

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

Terminal

Ring Terminal Bell

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

tput bel

Alternative Terminals

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.

fish

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

brew install fish && \
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.

Zsh

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

brew install zsh && \
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.

Terminal Fonts

  • Anonymous Pro - A family of four fixed-width fonts designed with coding in mind.
  • 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.
  • Source Code Pro - A monospaced font family for user interfaces and coding environments.

License

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

About

Use your OS X terminal shell to do awesome things.