TweetFollow Us on Twitter

Mac in the Shell: What Has Really Changed in Leopard?

Volume Number: 24 (2008)
Issue Number: 02
Column Tag: Mac in the Shell

Mac in the Shell: What Has Really Changed in Leopard?

Some differences for us Unixy scripting people

by Edward Marczak

Introduction

The dichotomy strikes me as a bit amazing: on one hand, I don't find too many end-users that can really quantify what's better about Leopard as compared to Tiger. I've upgraded some people that just had to have the latest and greatest and honestly, they haven't noticed much difference. The flip side of this is the tech perspective: take just about everything you understood in Tiger and throw it out the window. The underlying technology in Leopard is radically different in many ways from its predecessor. So, specifically, what is different for us shell-dwellers?

"Real" Unix

Leopard is the first version of OS X that is Unix 03 certified. What does that mean? To understand this requires a short trip back in time (cue Time Machine space backdrop...), though not too far.

Unix and Unix-like operating systems fall into several categories. AT&T/Bell Labs' Unix (UNICS, then UNIX System V1) is the oldest variant and often the reference implementation. "BSD Unix" was originally distributed at Berkeley University (Berkeley Software Distribution) and did things differently than AT&T Unix. Over the years, BSD and AT&T Unix have diverged significantly. In the early 1990's, we began to see the rise of GNU/Linux and yet another method of doing things.

Often, one would find tools from another Unix platform that were missing from (or just better than) the tools on your current platform. Over time, these tools would get ported, but not necessarily in a way consistent with the target platform. Standards have emerged, such as POSIX, that generally smooth over these cross-platform differences, but not everyone follows the standards.

While OS X has, from the beginning, had a BSD layer on top of its Mach kernel, and typically followed BSD semantics, Leopard changes all of this. As of OS X v10.5, OS X follows AT&T semantics for most command-line utilities.

Where Does it Hurt?

OK, Apple changed this over, so what? Well, like any target upgrade, you need to ensure that long-time scripts still work. I personally got bitten by the change as the sort utility no longer uses the GNU semantics that I had gotten used to. Let's take a look there first.

I had a script that used sort in the most simple way: to sort data on a single column. To do this I used the now-deprecated plus-notation:

generate_data | sort +4 > final_file.txt

Along comes Leopard which acted like I was insane. "Plus notation? What are you talking about? That doesn't exist." A quick trip to the man page revealed that this is true:

SYNOPSIS sort [OPTION]... [FILE]...

...with no plus signs in the man page anywhere. However, a quick trip back to Tiger showed that I wasn't crazy:

SYNOPSIS
       sort  [-cmus]  [-t  separator] [-o output-file] [-T tempdir] [-bdfiMnr]
       [+POS1 [-POS2]] [-k POS1[,POS2]] [file...]
       sort {-help,-version}

Ah ha! Of course, running under Leopard, I still needed to update my script. Naturally, there had to be a hurdle, no matter how small: the plus notation counts fields from zero like a computer, and the "-k" switch counts from 1 like a human. So, my incantation now had to read:

generate_data | sort -k 5 > final_file.txt

In any case, the issue was now fixed.

Portability

While the case I just gave was easily solved, be aware that all of these differences can cause issues when writing scripts that will deployed cross-platform -- whether the platforms in question are intra-OS X or beyond those bounds to Solaris, Linux, etc.

A command as seemingly simple as chown may trip you up if your script is to run on different OSes. Typically, if you use chown on a symlink, the symlink itself remains unmodified, while the target of the symlink is altered. This can be changed with the -P flag. In AT&T semantics, issuing the following commands alter the symlink:

ln -s file.txt test.txt
chown -RP user test.txt

In BSD, the owner of the symlink is not altered. Yes, this includes 10.4 and earlier.

Another one that has caught many is echo. To prompt for input, it has been nice to fall back on the "-n" BSDism that removes suppresses echo from printing a newline character. However, under Leopard, this seemingly broke. Frustratingly, visiting the man page for echo showed that "-n" was still valid and should do what you'd expect. What was going on?

Technically, echo is a shell built-in. Prior to 10.5, the built-in and the version in /bin happened to have the same behavior. 10.5 brings the built-in up to SUSv3 conformance using AT&T semantics, meaning, no "-n" switch. Of course, the shell executes built-in before looking along $PATH. Now, anyone who simply specified "echo" (just about everyone, myself included), and needs the "-n" switch got a surprise. There's a few ways to handle this. The easiest is to call the external echo in /bin, as it still supports "-n". This may actually be your best choice in many cases as there are many tutorials and documents that assume the availability of the "-n" switch.

Another option is to AT&T-ify it. This requires you to drop the "-n" flag and finish off the string with a "\c" character:

echo "Enter number of seconds: \c"

This is perfect, if you're going all-Leopard.

The best choice may be to drop the use of echo altogether. printf is a more robust and universal command. On all systems that I can think of, printf will not print a newline at all, and requires a '\n' character to do so. For cross-platform scripting, printf is the way to go.

In fact, printf is even more flexible than echo, mimicking some of C's formatting functionality. Of course, note that printf comes in both a built-in and external version.

Finally, keep in mind that sometimes, it's simply return codes that differ between platforms. So, while some command may do the same thing, in exactly the same way:

file_pouncer -k -d 7 -y "*txt"

success and failure (or error) may be defined differently in $?. Some programs will silently ignore errors, returning a zero. Remember to test these scenarios between destination platforms.

A final example of this: we've been accustomed to BSD-based 'cp' to copy files. Under BSD, cp will march through, despite errors and copy as much as possible. AT&T semantics have cp abort after the first error. Subtle, and something that will only crop up under a failure condition.

Conclusion

Of course, this doesn't begin to cover what has really changed in Leopard, as there is so much that has, on so many different levels. Those of us working in the shell, though, do need to be aware of what the new SUS certification means to us, and how the AT&T semantics affects our scripts. Remember: test, test, test!


Ed Marczak is a married, father-of-two technologist. Outside of learning about life, business and technology -- particularly OS X -- you can find him home with his family in New York. For a few spare hours at night, you can also occasionally find him riding through Azeroth on his Dreadsteed.

 
AAPL
$441.35
Apple Inc.
+1.69
MSFT
$34.61
Microsoft Corpora
-0.24
GOOG
$889.42
Google Inc.
-17.55

MacTech Search:
Community Search:

Software Updates via MacUpdate

SteerMouse 4.1.6 - Powerful third-party...
SteerMouse is an advanced driver for USB and Bluetooth mice. It also supports Apple Mighty Mouse very well. SteerMouse can assign various functions to buttons that Apple's software does not allow,... Read more
Google Chrome 27.0.1453.93 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Labels & Addresses 1.6.5 - Powerful...
Labels & Addresses is a home and office tool for printing all sorts of labels, envelopes, inventory labels, and price tags. Merge-printing capability makes the program a great tool for holiday... Read more
KeyCue 6.5 - Displays all menu shortcut...
KeyCue helps you to use your OS X applications more effectively. Just hold down the Command key for a while - KeyCue comes to help and shows a table of all currently available keyboard shortcuts.... Read more
HoudahSpot 3.7.8 - Advanced front-end fo...
HoudahSpot is a flexible file-search tool based on Apple's powerful Spotlight engine. Keep frequently used files within reach Retrieve the files you didn't know you still had Don't waste time... Read more
Cobook Contacts 1.2.6 - Intelligent addr...
Cobook Contacts is a better address book that makes contact management enjoyable for millions of people every day. Find contacts faster and organize them with tags. Get integrated social profiles... Read more
AppDelete 4.0.7 - Delete your unwanted a...
AppDelete is an uninstaller for Macs that will remove not only applications but also widgets, preference panes, plugins and screensavers along with their associated files. Without AppDelete these... Read more
OnyX 2.6.9 - Maintenance and optimizatio...
OnyX is a multifunctional utility for OS X. It allows you to verify the startup disk and the structure of its System files, to run miscellaneous tasks of system maintenance, to configure the hidden... Read more
Apple iTunes 11.0.3 - Manage your music,...
Apple iTunes lets you organize and play digital music and video on your computer. It can automatically download new music, app, and book purchases across all your devices and computers. And it's a... Read more
Spotify 0.9.0.133. - Stream music, creat...
Spotify is a new way to enjoy music. Simply download and install. Before you know it you'll be singing along to the genre, artist, or song of your choice. With Spotify you are never far away from... Read more

Logitech To Release Wired Keyboard With...
Logitech To Release Wired Keyboard With The Classroom In Mind Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Logitech has created a wired keyboard for the iPad which | Read more »
Pocket Informant Pro Completely Redesign...
Pocket Informant Pro Completely Redesigns Interface In Latest Update Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] | Read more »
Warhammer 40,000: Armageddon Brings The...
Warhammer 40,000: Armageddon Brings The Second War of Armageddon To iOS, Next Year Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Strategy game creator, Slitherine, unleashes Armageddon, its firs | Read more »
World of Aircraft MMO Flies Into Action
World of Aircraft MMO Flies Into Action Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
iBillionaire Compares Your Stock Market...
iBillionaire Compares Your Stock Market Portfolio To Actual Billionaire Portfolios Posted by Andrew Stevens on May 22nd, 2013 [ | Read more »
Greedy Grub Gets A Nature Filled Gamepla...
Greedy Grub Gets A Nature Filled Gameplay Trailer, Launches This Week Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Greedy Grub, a fun simulation game based on the work of comic artis | Read more »
OmniPresence Automatic Document Syncing...
OmniPresence Automatic Document Syncing Is Now Available Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] The Omni Group has released OmniPresence, bringing automatic document syncing to OmniGraffle, OmniOutliner, a | Read more »
Zoombies: Animales de la Muerte! Review
Zoombies: Animales de la Muerte! Review By Carter Dotson on May 22nd, 2013 Our Rating: :: FIESTA!iPad Only App - Designed for the iPad Yes, a game about taking on hordes of zombified animals is as good as it sounds.   | Read more »
THX tune-up™ Review
THX tune-up™ Review By Michael Carattini on May 22nd, 2013 Our Rating: :: EASY TV DISPLAY ADJUSTMENTUniversal App - Designed for iPhone and iPad THX tune-up is a fantastic utility that makes it simple and easy to adjust your TV’s... | Read more »
Earth Invasion Episode I: Eclipse Review
Earth Invasion Episode I: Eclipse Review By Campbell Bird on May 22nd, 2013 Our Rating: :: FIGHT OFF THE "BUGS"Universal App - Designed for iPhone and iPad Earth Invasion Episode I: Eclipse is a real-time strategy game that is... | Read more »

Price Scanner via MacPrices.net

Platform Wars: Tablets Triumphant, But Don’t Write...
The Register’s Paul Kunert says it’s finally official – the epic battle of legendary Apple CEO Steve Jobs is finally won, now that he has toppled the PC platform from beyond the grave, in the UK, at... Read more
Apple Tops 100 Most Valuable Global Brands 2013 Su...
MarketingWeek’s Lou Cooper reports that this years BrandZ ranking of the top 100 valuable global brands sees Apple maintain its reign as number one, ahead of Google and IBM in second and third and... Read more
How To Create A 4GB/S RAM Disk In Mac OS X
TekRevue notes that RAM Disks, as the name indicates, are logical storage volumes created using a computers memory (RAM) instead of a traditional hard drive or solid state drive. Back in the day, RAM... Read more
How To Factory Reset On An iPhone or iPad
PC Advisor’s Jim Martin notes that when you come to sell your iPhone or iPad – or even give it to a family member – you should erase all the data and restore it to factory settings to avoid handing... Read more
HGST Launches 1.5TB Capacity in Standard 2.5-inch...
HGST (formerly Hitachi Global Storage Technologies and now a Western Digital company) continues to push technology innovation by offering the highest storage density (MB/mm3) of any hard disk drive (... Read more
iPads with Retina Displays (Apple refurbished) ava...
The Apple Store has Apple Certified Refurbished 4th generation iPads with Retina Displays, Wi-Fi & Cellular, available for $50 off MSRP. Apple’s one-year warranty is included with each iPad, and... Read more
Apple MacBook Orders To Rise 20% Sequentially In 2...
Digitimes’ Aaron Lee and Joseph Tsai say that with Apple ready to release its new MacBook products in the near future, sources from the upstream supply chain have revealed that orders for MacBook... Read more
Trial Production of 5th-Generation iPad To Begin R...
Digitimes’ Max Wang and Adam Hwang report that trial production of Apple’s 5th-generation 9.7-inch iPad will begin soon with volume production to begin in July, and monthly shipments ramping up to 2-... Read more
Dell’s $100 Thumb-Sized Android PC To Ship In July...
9to5google.com says that Dell’s Project Orphelia, a thumb-sized drive that turns any display with an HDMI port into an Android PC, is to start shipping in July at a price of around $100 according to... Read more
MacBook Airs (Apple refurbished) available startin...
 The Apple Store has Apple Certified Refurbished 2012 MacBook AIrs available for up to $240 off MSRP, with models starting at $849. An Apple one-year warranty is included with each model, and... Read more

Jobs Board

Mac/ *Apple* Specialist Needed | Enterp...
Mac/ Apple Specialist Needed | Enterprise iPad Deployment A prominent Robert Half client is seeking out a Mac/ Apple Specialist to assist with an iPad deployment Read more
Class 1 District *Apple* Technician -...
QUALIFICATIONS: High School diploma Associate Degree in Technology preferred. Apple Certified Support Professional Mac OS X 10.5, 10.6, 10.7, 10.8 Apple Certified Read more
*Apple* At-Home Team Manager - Apple (U...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more than Read more
Class 1 District *Apple* Technician -...
QUALIFICATIONS: High School diploma Associate Degree in Technology preferred. Apple Certified Support Professional Mac OS X 10.5, 10.6, 10.7, 10.8 Apple Certified Read more
*Apple* Infrastructure Engineer II - Ba...
39964 Apple Infrastructure Engineer II Full Time Regular posted 04/22/2013 San Ramon, CA San Francisco, CA Requirements What sets Bank of the West apart from other banks Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.