Is the built-in Terminal.app the best command line interface, or are better choices available? I took an in depth look at Terminal.app and two popular native third-party applications, iTerm (freeware), and GLTerm (shareware) to see if there was sufficient reason to seek a replacement.
While there are many more choices for a command line replacement of Terminal.app than iTerm and GLTerm, I wanted to stick with native OS X freeware or shareware applications. If money is no object, there may be better choices available.
First up is GLTerm, a terminal program written to render text using the OpenGL interface, often used by game programmers. It requires an accelerated video card, not an issue on most modern Macs.
There are roughly 20 fixed width fonts available. GLTerm doesn't support variable width fonts, anti-aliasing, or transparency. Transparency is not available because the screen is drawn without the help of the Quartz subsystem. If those features are important to you, it's best to look elsewhere.
The default color scheme is white text on a black background, and a cool looking blue block cursor that fades in an out instead of simply blinking. Colors can be changed in the preferences.
GLTerm uses the default shell specified for the user in NetInfo. The key mappings can be changed by editing the Keys.txt and Keymap.txt files in the application directory. You will need to know what keycodes to enter in the files if you want to change them.
The GLTerm web site suggests that some text based applications may work better than in the standard Terminal.app, but I have not experienced problems with typical command line apps.
The next third party application I looked at was iTerm. It gets many recommendations on Apple oriented forums.
iTerm is a true carbon application, and offers a tabbed interface (like Firefox). You can open new terminals in separate windows or new tabs. This can be a space saver if you need a lot of terminals open, but don't need to see the contents at the same time.
There is a Bookmarks icon that opens a drawer to the right, showing nearby machines (via bonjoir) and any bookmarks you have created. A bookmark can be an SSH session, SFTP, FTP, or Telnet. You open a connection by double clicking a bookmark.
iTerm supports all available system fonts, anti-aliasing, and transparency. It also AppleScript support.
The default configuration tells iTerm to only zoom vertically, but that can be changed.
One feature that is either great or annoying depending on your temperament is the auto update. When iTerm starts, it checks to see if there is a new version available. If so, it prompts you to update. If you agree to the update, it downloads the new version, installs it, and starts up again with the new version.
The default layout of iTerm includes an execute bar at the top of the window to run commands. I can't figure out why I would want to type a command there instead of directly at the command prompt.
From the menu, "Shell / Send Input to All Tabs" can be used to run the exact same command in multiple tabs. If you have an SSH connection to different machines in each tab, you could run the same command on multiple machines. This feature could be very powerful or very dangerous.
Some settings, like keyboard settings are strangely tucked under the "Bookmarks / Manage Profiles..." menu. The menu "Shell / Log" lets you create a text file to log everything you enter -- handy if you expect output to get lost in the scrollback buffer.
The anti-idle function, unique to iTerm in this comparison, avoids disconnection because of no activity. It is set under "Bookmarks / Manage Profiles..." menu, then click the triangle by Terminal Options and select Default. One of the choices is a checkbox named "When idle, send ASCII code:". When the value is 0, nothing is sent and an SSH session times out after a while. If you enter a value, it is sent every 30 seconds to keep the session alive. I set the value to 20 (an ASCII space) and this works as expected, keeping idle sessions alive for hours.
A big plus for Terminal is that it ships with OS X so you don't have to worry about installing or updating it. It also turns out to be very powerful.
Terminal supports all available system fonts, anti-aliasing, and transparency. It also has AppleScript support.
Bookmarks are offered for SSH, SFTP, FTP or Telnet connections to a remote server. They are saved and retrieved from the "File / Connect to Server..." menu option.
The "Terminal / Window Settings" menu lets you change most of the default settings, keyboard settings, display options, etc.
Terminal is the only application of the three that has a split screen option. If you click on the broken rectangle just above the scroll bar, it splits the current screen and allows you to move the bar to display part of the of the screen above and part below. This is nice if you want to view part of a large file while editing another part.
For the paranoid, Terminal has a unique feature called secure keyboard entry. It is activated (and deactivated) by choosing the "File / Secure keyboard entry" menu option. When on, it prevents other applications on your computer or the network from detecting and recording what you type. Others have written deeper explanations than what you will find in the Help menu.
While iTerm and the standard Terminal are close in features and functions, I didn't find much to recommend GLTerm. If there are command line programs that work better in GLTerm, and you run those programs, then it may be worth the price. The logging option in iTerm is nice, but the killer feature in is the keep alive. My main machine is physicaly secure, and I do a lot of work on remote computers with SSH. It is frustrating to have to reconnect if I leave a window for 30 minutes. On the other hand, I like the secure keyboard feature in Terminal, and it has everything else I want except the keep alive. Both iTerm and Terminal are well documented, and easy to maintain and for that reason, I'll call it a tie.