BBEdit's Command Line Functions

With BBEdit 9.3, a new terminal command has been added: bbfind. That's in addition to the previously available commands: bbedit and bbdiff. Here's a brief introduction on how to use these commands.

Programmers and sysadmins often use BBEdit to write code or scripts. As a result, it's often handy to have a helpful integration between a GUI text editor and the UNIX shell. That kind of elegant pairing is what makes working with the Mac so much fun.

Here are the the three commands that BBEdit can install into the underlying UNIX system, if requested:

  1. bbfind - a multi file search function that displays the files and their paths a search terms appear in.
  2. bbedit - launch the BBEdit editor from the command line and edit files.
  3. bbdiff - find the differences between two similar files.

You install these commands by using the menu item "Install Command Line Tools..." under the main BBEdit menu. An admin password is required, so you'll need to be an administrator of the Mac to install them.

The installation of the commands also results in entries inserted into the UNIX man pages. I find the use of 'man' on the command line cumbersome, so I use the Mac OS X Universal app called "Man Viewer.app" by Peter Kendall. It has a nice filter function that allows you to home in on just what you need.

Man Viewer

Man Viewer

1. bbedit: This one is as simple as typing: "bbedit filename". Here's an example of editing the plist file that determines whether Snow Leopard will boot into a 64-bit kernel. (I've rearranged the windows a bit for clarity and space.)

bbedit filename 2

$ bbedit com.apple.Boot.plist

You can edit system files this way, so long as you are an administrator because BBEdit will ask for your admin password to edit files owned by root. (Note, this  command is more just another way to use the Darwin "open" command, as in, $ open -a /path/to/app/appname.app). For example, for example, you can make it the target of a pipe:

$ find /var/log -name "*.log" -print | bbedit

2. bbdiff: This one can be as simple as typing: "bbdiff filename1 filename2". The command will open three BBEdit windows, one showing each file and a third that lists all those lines on which a difference was found.

bbdiff 2

$ bbdiff com.apple.Boot.plist com.apple.Boot-copy.plist

bbdiff result 2

Result in red - in bottom window - lists differences

3. bbfind: This is new in BBEdit 9.3. It can be duplicated, more or less, mostly less, with the Finder's CMD+F find function, but not as elegantly, and not as fine tuned with specialized arguments.

For example, you can do finds of strings that only occur on word boundaries, search as case-sensitive, search invisible folders. There's a whole slew of other commands the can help winnow the search. An abbreviated list of the command line arguments is in the link to the release notes above. The man page has even more detail. Here's an example of a find I did on the term "rosetta" in Users/john.

bbfind result

$ bbfind --gui rosetta /Users/john

BBEdit is a terrific text editor that just keeps getting better and better. For example, BBEdit 8.6 introduced the ability to edit property lists that have been saved as binary files. For those programmers and sysadmins who work on the command line, these supplemental command line functions provide them even more power when it comes to building scripts and managing a Mac OS X system.