Skip to content

Instantly share code, notes, and snippets.

@greenantdotcom
Created April 5, 2012 15:59
Show Gist options
  • Save greenantdotcom/2312141 to your computer and use it in GitHub Desktop.
Save greenantdotcom/2312141 to your computer and use it in GitHub Desktop.
Reading and writing to plists from the command line

Why?

When working on a remote machine, or a machine that doesn't have a GUI plist editor on it, the command line may be your only or best option.

There are two options present on OS X to help you.

default

Using the default command on OS X can help you get around.

Reading a plist

-bash-3.2$ defaults read ~/.MacOSX/environment { PATH = "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"; }

Updating a value in a plist

-bash-3.2$ defaults write ~/.MacOSX/environment PATH "/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin" -bash-3.2$ defaults read ~/.MacOSX/environment { PATH = "/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin"; }

PlistBuddy

Reading a plist

[travelant:~] markhers% /usr/libexec/PlistBuddy /tmp/test.plist Command: Print Dict { PATH = /usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin }

Writing to a plist

`[travelant:] markhers% /usr/libexec/PlistBuddy /tmp/test.plist File Doesn't Exist, Will Create: /tmp/test.plist Command: Add :PATH string "/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin" Command: Print Dict { PATH = /usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin } Command: Save Saving... Command: exit [travelant:] markhers% cat /tmp/test.plist

PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin `
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment