awesome-osx-command-line/README.md
2015-10-18 19:03:45 +02:00

22 KiB
Raw Blame History

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

“You dont 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

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

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

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

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

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

Expand Save Panel by Default

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

Expand Print Panel by Default

defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -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

Scrollbar Visibility

Possible values: WhenScrolling, Automatic and Always.

defaults write NSGlobalDomain AppleShowScrollBars -string "Always"

Save to Disk by Default

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

defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false

Set Current Directory 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

Disables creation of .DS_Store and ._filename files.

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

Disable Creation of Metadata Files on USB Volumes

Disables creation of .DS_Store and ._filename files.

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

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

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

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 dscacheutil -flushcache && sudo killall -HUP mDNSResponder

Hostname

Set Computer Name/Host Name

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

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 Directory

srm -r /path/to/directory/

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

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 /

Software Update

Set Software Update Check Interval

Set to check daily instead of weekly.

defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1

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

Alternative Terminals

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.
  • Input - Input is a flexible system of fonts designed specifically for code.
  • Meslo - Customized version of Apple's Menlo font.

License

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