Alias (Mac OS)

Last updated
Mac OS Alias
Type code alis
Uniform Type Identifier (UTI) com.apple.alias-file
Magic number 'book\0\0\0\0mark\0\0\0\0'
Developed byApple, Inc.
Type of format shortcut

In classic Mac OS System 7 and later, and in macOS, an alias is a small file that represents another object in a local, remote, or removable [1] file system and provides a dynamic link to it; the target object may be moved or renamed, and the alias will still link to it (unless the original file is recreated; such an alias is ambiguous and how it is resolved depends on the version of macOS). In Windows, a "shortcut", a file with a .lnk extension, performs a similar function.

Contents

It is similar to the Unix symbolic link, but with the distinction of working even if the target file moves to another location on the same disk (in this case it acts like a hard link, but the source and target of the link may be on different filesystems, and the target of the link may be a directory). As a descendant of BSD, macOS supports Unix symbolic (and hard) links as well.

Function

An alias acts as a stand-in for any object in the file system, such as a document, an application, a folder, a hard disk, a network share or removable medium or a printer. When double-clicked, the computer will act the same way as if the original file had been double-clicked. Likewise, choosing an alias file from within a 'File Open' dialog box would open the original file. The purpose of an alias is to assist the user in managing large numbers of files by providing alternative ways to access them without having to copy the files themselves. While a typical alias under the classic Mac OS was small, between 1 and 5 KB, under macOS it can be fairly large, more than 5 MB (5000 KB) for the alias to a folder.

Preventing alias failure

An alias is a dynamic reference to an object. The original may be moved to another place within the same filesystem, without breaking the link. The operating system stores several pieces of information about the original in the resource fork of the alias file. Examples of the information used to locate the original are:

Since any of these properties can change without the computer's knowledge, as a result of user activity, various search algorithms are used to find the most plausible target. This fault-tolerance sets the alias apart from similar functions in some other operating systems, such as the Unix symbolic link or the Microsoft Windows shortcut, at the expense of increased complexity and unpredictability. For example, an application can be moved from one directory to another within the same filesystem, but an existing alias would still launch the same application when double-clicked.

The question can arise of how an alias should work if a file is moved, and then a file is created with the same name as the original moved file, since the alias can be used to locate both the original name and the new location of the original file. With symbolic links the reference is unambiguous (soft links refer to the new file, hard links to the original). Before Mac OS X 10.2, however, such an ambiguous alias would consistently find the original moved file, rather than the recreated file. In Mac OS X 10.2 and later releases, the new file is found, matching the behaviour of symbolic links . macOS applications can programmatically use the old behavior if required.

Aliases are similar in operation to shadows in the graphical Workplace Shell of the OS/2 operating system.

Distinguishing marks

In System 7 through Mac OS 9, aliases distinguished themselves visually to the user by the fact that their file names were in italics. To accommodate languages that don't have italics (such as Japanese), in Mac OS 8.5 another distinguishing mark was added, badging with an "alias arrow"—a black arrow with a small white border—similar to that used for shortcuts in Microsoft Windows.

In macOS, the filenames of aliases are not italicized, but the arrow badge remains.

File structure

The alias files in macOS start by the magic number 62 6F 6F 6B 00 00 00 00 6D 61 72 6B 00 00 00 00 which is in ASCII book␀␀␀␀mark␀␀␀␀ ( representing the Null character).

Following the magic number, it has been reported that an alias has a set of records inside it, each record is 150 bytes long and consists of the fields shown below (all integers are big endian). [2] However, alias files are far larger than this would explain, and include other information at least including icons. [3] [4]

  1. 4 bytes user type name/app creator code = long ASCII text string (none = 0)
  2. 2 bytes record size = short unsigned total length
  3. 2 bytes record version = short integer version (current version = 2)
  4. 2 bytes alias kind = short integer value (file = 0; directory = 1)
  5. 1 byte volume name string length = byte unsigned length
  6. 27 bytes volume name string (if volume name string < 27 chars then pad with zeros)
  7. 4 bytes volume created mac date = long unsigned value in seconds since beginning 1904 to 2040
  8. 2 bytes volume signature = short unsigned HFS value
  9. 2 bytes volume type = short integer mac os value (types are Fixed HD = 0; Network Disk = 1; 400kB FD = 2;800kB FD = 3; 1.4MB FD = 4; Other Ejectable Media = 5 )
  10. 4 bytes parent directory id = long unsigned HFS value
  11. 1 bytes file name string length = byte unsigned length
  12. 63 bytes file name string (if file name string < 63 chars then pad with zeros)
  13. 4 bytes file number = long unsigned HFS value
  14. 4 bytes file created mac date = long unsigned value in seconds since beginning 1904 to 2040
  15. 4 bytes file type name = long ASCII text string
  16. 4 bytes file creator name = long ASCII text string
  17. 2 bytes nlvl From (directories from alias thru to root) = short integer range
  18. 2 bytes nlvl To (directories from root thru to source) = short integer range (if alias on different volume then set above to -1)
  19. 4 bytes volume attributes = long hex flags
  20. 2 bytes volume file system id = short integer HFS value
  21. 10 bytes reserved = 80-bit value set to zero
  22. 4+ bytes optional extra data strings = short integer type + short unsigned string length (types are Extended Info End = -1; Directory Name = 0; Directory IDs = 1; Absolute Path = 2; AppleShare Zone Name = 3; AppleShare Server Name = 4; AppleShare User Name = 5; Driver Name = 6; Revised AppleShare info = 9; AppleRemoteAccess dialup info = 10)
  23. string data = hex dump
  24. odd lengths have a 1 byte odd string length pad = byte value set to zero

Alias record structure outside of size length

The following is for use with the Apple's Alias Resource Manager.

  1. 4 bytes resource type name = long ASCII text string
  2. 2 bytes resource ID = short integer value
  3. 2 bytes resource end pad = short value set to zero

Java code to flag an alias file

// This function checks whether a file matches the alias magic number.publicstaticbooleancheckForMacAliasFile(FileinputFile)throwsFileNotFoundException,IOException{// Only files can be aliases.// Do not test directories; they will be false.if(inputFile.isFile()){byte[]bookmark=newbyte[]{0x62,0x6F,0x6F,0x6B,0x00,0x00,0x00,0x00,0x6D,0x61,0x72,0x6B,0x00,0x00,0x00,0x00};longlength=inputFile.length();if(length>16){byte[]result=newbyte[16];FileInputStreamfis=newFileInputStream(inputFile);fis.read(result);fis.close();returnArrays.equals(result,bookmark);}}returnfalse;}

There is a github repo with working C++ code here.

Managing aliases

User interface

In System 7, the only way to create an alias was to select the original and choose "Make Alias" from the "File" menu. An alias, with the same name and " alias" appended would then be created in the same folder. In later versions, it became possible to create aliases by drag-and-drop, while holding down the command and option modifier keys.

Mac OS 8.5 added a feature for re-connecting aliases that had been broken for one reason or another (when the simple search algorithms failed to find a reliable replacement). This was done by selecting a new target through the standard Open File dialog.

In Mac OS 8.5 options were added for command-option dragging an object in the Finder to create an alias at that location. This is where the alias cursor was added to the system. The cursor mirrors the appearance of the "create shortcut" cursor on Windows systems.

Programming API

The Alias Manager API is part of Carbon that allows developers to create aliases and access the aliased file. [5]

Mac OS X 10.6 introduced the Bookmarks API to Cocoa as a set of methods on NSURL and functions for CFURL. [6] [7] In Mac OS X 10.7.3, the API was enhanced for the App Sandbox with security-scoped bookmarks, which add security permissions to aliases on a per-application or per-document basis. [8]

In Mac OS X 10.8 the Alias Manager API was officially deprecated in favor of the Bookmarks API. [5]

Unix and similar operating systems provide 2 features very similar to macOS aliases: symbolic links and hard links. When using the macOS Finder, links are displayed and treated largely like macOS aliases, and even carry an identical "Kind" attribute. However, when using the shell command line, macOS aliases are not recognized: for example, you cannot use the cd command with the name of an alias file. This is because an alias is implemented as a file on the disk that must be interpreted by an API while links are implemented within the filesystem and are thus functional at any level of the OS.

There is currently no pre-installed command to resolve an alias to the path of the file or directory it refers to. However, a freely available C program makes use of the Mac Carbon APIs to perform this task. [9] Given that, commands such as cd can be set up to check for aliases and treat them just like symbolic or hard links.

Related Research Articles

<span class="mw-page-title-main">ISO 9660</span> File system for CD-R and CD-ROM optical discs

ISO 9660 is a file system for optical disc media. The file system is an international standard available from the International Organization for Standardization (ISO). Since the specification is available for anybody to purchase, implementations have been written for many operating systems.

UTF-8 is a variable-length character encoding standard used for electronic communication. Defined by the Unicode Standard, the name is derived from Unicode Transformation Format – 8-bit.

Hierarchical File System (HFS) is a proprietary file system developed by Apple Inc. for use in computer systems running Mac OS. Originally designed for use on floppy and hard disks, it can also be found on read-only media such as CD-ROMs. HFS is also referred to as Mac OS Standard, while its successor, HFS Plus, is also called Mac OS Extended.

A resource fork is a fork of a file on Apple's classic Mac OS operating system that is used to store structured data. It is one of the two forks of a file, along with the data fork, which stores data that the operating system treats as unstructured. Resource fork capability has been carried over to the modern macOS for compatibility.

In computer programming, Base64 is a group of binary-to-text encoding schemes that transforms binary data into a sequence of printable characters, limited to a set of 64 unique characters. More specifically, the source binary data is taken 6 bits at a time, then this group of 6 bits is mapped to one of 64 unique characters.

<span class="mw-page-title-main">Filename</span> Text string used to uniquely identify a computer file

A filename or file name is a name used to uniquely identify a computer file in a file system. Different file systems impose different restrictions on filename lengths.

uuencoding is a form of binary-to-text encoding that originated in the Unix programs uuencode and uudecode written by Mary Ann Horton at the University of California, Berkeley in 1980, for encoding binary data for transmission in email systems.

The Macintosh Toolbox implements many of the high-level features of the Classic Mac OS, including a set of application programming interfaces for software development on the platform. The Toolbox consists of a number of "managers," software components such as QuickDraw, responsible for drawing onscreen graphics, and the Menu Manager, which maintain data structures describing the menu bar. As the original Macintosh was designed without virtual memory or memory protection, it was important to classify code according to when it should be loaded into memory or kept on disk, and how it should be accessed. The Toolbox consists of subroutines essential enough to be permanently kept in memory and accessible by a two-byte machine instruction; however it excludes core "kernel" functionality such as memory management and the file system. Note that the Toolbox does not draw the menu onscreen: menus were designed to have a customizable appearance, so the drawing code was stored in a resource, which could be on a disk.

HFS Plus or HFS+ is a journaling file system developed by Apple Inc. It replaced the Hierarchical File System (HFS) as the primary file system of Apple computers with the 1998 release of Mac OS 8.1. HFS+ continued as the primary Mac OS X file system until it was itself replaced with the Apple File System (APFS), released with macOS High Sierra in 2017. HFS+ is also one of the formats supported by the iPod digital music player.

A FourCC is a sequence of four bytes used to uniquely identify data formats. It originated from the OSType or ResType metadata system used in classic Mac OS and was adopted for the Amiga/Electronic Arts Interchange File Format and derivatives. The idea was later reused to identify compressed data types in QuickTime and DirectShow.

<span class="mw-page-title-main">File system</span> Computer filing system

In computing, a file system or filesystem governs file organization and access. A local file system is a capability of an operating system that services the applications running on the same computer. A distributed file system is a protocol that provides file access between networked computers.

In the macOS, iOS, NeXTSTEP, and GNUstep programming frameworks, property list files are files that store serialized objects. Property list files use the filename extension .plist, and thus are often referred to as p-list files.

Extended file attributes are file system features that enable users to associate computer files with metadata not interpreted by the filesystem, whereas regular attributes have a purpose strictly defined by the filesystem. Unlike forks, which can usually be as large as the maximum file size, extended attributes are usually limited in size to a value significantly smaller than the maximum file size. Typical uses include storing the author of a document, the character encoding of a plain-text document, or a checksum, cryptographic hash or digital certificate, and discretionary access control information.

The following tables compare general and technical information for a number of file systems.

<span class="mw-page-title-main">Time Machine (macOS)</span> Backup software application developed by Apple and distributed as part of macOS

Time Machine is the backup mechanism of macOS, the desktop operating system developed by Apple. The software is designed to work with both local storage devices and network-attached disks, and is commonly used with external disk drives connected using either USB or Thunderbolt. It was first introduced in Mac OS X 10.5 Leopard, which appeared in October 2007 and incrementally refined in subsequent releases of macOS. Time Machine was revamped in macOS 11 Big Sur to support APFS, thereby enabling "faster, more compact, and more reliable backups" than were possible previously.

Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives. The Actionscript 3 language provides classes for encoding and decoding from the AMF format.

In computer science, data type limitations and software bugs can cause errors in time and date calculation or display. These are most commonly manifestations of arithmetic overflow, but can also be the result of other issues. The most well-known consequence of this type is the Y2K problem, but many other milestone dates or times exist that have caused or will cause problems depending on various programming deficiencies.

A file format is a standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium. File formats may be either proprietary or free.

LEB128 or Little Endian Base 128 is a variable-length code compression used to store arbitrarily large integers in a small number of bytes. LEB128 is used in the DWARF debug file format and the WebAssembly binary encoding for all integer literals.

Apple File System (APFS) is a proprietary file system developed and deployed by Apple Inc. for macOS Sierra (10.12.4) and later, iOS 10.3, tvOS 10.2, watchOS 3.2, and all versions of iPadOS. It aims to fix core problems of HFS+, APFS's predecessor on these operating systems. APFS is optimized for solid-state drive storage and supports encryption, snapshots, and increased data integrity, among other capabilities.

References

  1. "Chapter 4 - Alias Manager / About the Alias Manager - Search Strategies". Inside Macintosh: Files. Archived from the original on October 7, 2008.
  2. "Some information about MacOS aliases collected from the web". Archived from the original on 2010-01-20.
  3. "Why are Finder alias files so huge lately?". Apple Support Communities. Archived from the original on 2021-05-07.
  4. "Further details, including changes with various Mac OS versions". Archived from the original on 2013-04-30. Retrieved 2018-10-11.
  5. 1 2 "Alias Manager". Apple Developer Documentation. Archived from the original on 2020-08-11.
  6. "NSURL and CFURL Release Notes". Mac OS X Reference Library. 2008-06-05. Archived from the original on 2018-10-26.
  7. "File System Programming Guide". Mac OS X Developer Library. 2011-06-06. Archived from the original on 2011-10-06.
  8. "App Sandbox in Depth". Mac OS X Developer Library. 2016-09-13. Archived from the original on 2012-07-11.
  9. Davis, Thos. "getTrueName.c". Mac OS X Hints. IDG. Archived from the original on 2014-11-13. Retrieved 24 October 2016.