Apple Pro Training Series: OS X Lion Support Essentials: Supporting and Troubleshooting OS X Lion: Data Management
- Understanding the System File Structure
- Managing Font Resources
- Managing Hidden Items
- Using Aliases and Links
- Understanding File System Metadata
- Managing Launch Services
- Using Spotlight and Quick Look
- Using File Archives and Disk Images
- Managing Time Machine
- What You've Learned
- Review Quiz
Managing Hidden Items
Lion is a fully UNIX compliant operating system, and as such requires a number of files that the average user will never touch. The root level of the Mac’s system volume is littered with resources that UNIX processes require and UNIX administrators expect. Apple made the wise choice of configuring the Finder to hide these items from the average user. On a daily basis, the average user—and even most administrative users—does not need to access any of these items from the graphical interface. Realistically, the only people who even care about these normally hidden resources are going to be using Terminal to do their work anyway. In other words, keeping these system items hidden in the Finder not only provides a tidier work environment but also prevents average users from poking around in places they don’t need to go.
As a hybrid of UNIX and Mac OS technologies, Lion uses two methods to hide files and folders. The first is a UNIX tradition; simply using a period at the beginning of the item’s name will hide the item in both the Finder and while using the default options to list items with ls in Terminal. The second method is a Mac OS tradition; enable an item’s hidden file flag. This method, however, will only hide the item in the Finder.
Opening Hidden Items in the Finder
Should you want or need to open normally hidden items in the Finder, there are two methods. The first involves use of the Finder’s Go menu to open any folder; the second involves using the open command from Terminal to open any file or folder.
Using the Go Menu
To reveal hidden folders in the Finder:
From the Finder, choose Go > Go to Folder from the menu bar, or you can use the Command-Shift-G keyboard shortcut.
This will reveal a dialog allowing you to enter an absolute path to any folder on the Mac. A good starting place is a user’s Library folder, ~/Library; as covered previously, many system resources are found in this folder.
- Click the Go button once you have entered the path.
The Finder will reveal the hidden folder in a window. Note the dimmed folder icon representing the normally hidden folder. To save time for when you return to the Go dialog, the previous path you entered will be there.
Using the open Command
The open command is a rather unique command that spans Terminal’s command line and the graphical interface. The open command can be used to open files, folders, and URLs from Terminal to an application in the graphical interface. Folders are opened in a Finder window, the default web browser opens URLs, and files are opened by the default application for the specified file type. Again, because Terminal doesn’t respect the hidden file flag, you can use the open command to open any hidden item as well.
The following example will use the open command to open the user’s current working folder from Terminal to a Finder window. The period used in the command is command-line shorthand for “this folder,” thus this example literally translates to “open this folder.”
The next example will open the /private folder, which is normally hidden, in a Finder window:
This next example will open a file on Michelle’s desktop called Proof.pdf with the default PDF reader, most likely the Preview application:
This final example will open Apple’s main website in the default web browser, most likely the Safari application:
Revealing Hidden Items via Terminal
From Terminal’s command line, you can easily override both types of hidden items. Again, by default, the ls command ignores the hidden file flag used by the Finder; thus it will simply show these items in the list. However, in its default mode the ls command doesn’t show items whose names begin with a period. You can modify this behavior by using the –a option to list all items.
In the following Terminal example, Michelle will use the ls command with the -a option to reveal all items at the root of a system volume:
ls -a /total 36669 . Users .. Volumes .DS_Store bin .Spotlight-V100 cores .Trashes dev .com.apple.timemachine.supported etc .file home .fseventsd mach_kernel .hotfiles.btree net .vol private Applications sbin Developer tmp Library usr Network var System
Of the nearly 30 items at the root of the system volume shown in this example, only 5 are shown in the Finder: Applications, Developer, Library, System, and Users. All of these additional items are created and used by the operating system, so they should generally be left alone. Again, for this reason they are hidden to most users by the Finder.
Hiding or “Unhiding” Items
The easiest way to hide an item is to simply name it with a period at the beginning of the filename. However, to prevent novice users from accidentally hiding their items, the Finder will not let you save a file with a period at the beginning of its name. Therefore, you must use Terminal. Simply use the mv command to rename the item, as covered in Appendix B, “Command-Line Essentials.”
If you need to hide an item from the Finder, but you can’t change its name to start with a period, then you can enable the hidden file flag. This is also only possible from Terminal. You can use the chflags command with the hidden option to hide any item from the Finder. Conversely, you can use the chflags command with the nohidden option to permanently reveal an item in the Finder. Finally, you can use the -O option, along with the long list option -l, to show any file system flags, verifying which items have the hidden file flag enabled.
In the following example, Michelle uses the chflags command to permanently reveal her home Library folder. She also uses the ls command before and after to show the file flags, verifying that the folder is no longer hidden after the change. In this example, the output of the ls command has been truncated to show only the results of the ~/Library folder.
ls -lOtotal 0 ... drwx------@ 48 michelle staff hidden 1632 Aug 3 18:35 Library ... MyMac:~ michelle$
chflags nohidden Library/MyMac:~ michelle$
ls -lOtotal 0 ... drwx------+ 48 michelle staff - 1632 Aug 3 18:35 Library ...