Finding files and folders on the Mac became easier when Spotlight was introduced in OS X Tiger (10.4), but locating files through the command line can be a bit tricker. Aug 05, 2006 There is no direct translation of cmd.exe on tha Mac, since cmd.exe is only a shell that allows you to enter DOS commands under Windows. It is similar to the Terminal for Mac OS X in that it's simply a shell with which to enter the command-line interface of the respective OS. The same is the case from the command line. There are two commands for moving and copying: mv and cp.The first does the same as dragging a file to a new location on the same hard disk; the second.
Calling Command-Line Tools
In AppleScript, the do shell script
command is used to execute command-line tools. This command is implemented by the Standard Additions scripting addition included with OS X.
Note
The Terminal app in /Applications/Utilities/
is scriptable and provides another way to execute command-line tools from scripts.
Executing Commands
The direct parameter of the do shell script
command is a string containing the shell code you want to execute, as demonstrated in Listing 39-1, which simply lists a directory.
APPLESCRIPT
Listing 39-1AppleScript: Executing a simple shell command that lists the contents of a directorydo shell script 'ls /Applications/'
(*
--> Result:
'App Store.app
Automator.app
Calculator.app
Calendar.app
...'
*)
Mac Os Execute .app From Command Line
Since the direct parameter of do shell script
is a string, you can concatenate it with other strings at run time. Listing 39-2, for example, concatenates a shell command to a previously defined parameter value.
APPLESCRIPT
Listing 39-2AppleScript: Concatenating a command with a valueset theHostName to 'www.apple.com'
do shell script 'ping -c1 ' & theHostName
Quoting Strings
The shell uses space characters to separate parameters and gives special meaning to certain punctuation marks, such as $
, (
, )
, and *
. To ensure that strings are treated as expected—for example, spaces aren’t seen as delimiters—it’s best to wrap strings in quotes. This process is known as quoting. If your string contains quotes, they must also be escaped (preceded by a /
character) so they are interpreted as part of the string. Listing 39-3 shows an example of an error occurring as a result of a parameter that contains a space.
APPLESCRIPT
Listing 39-3AppleScript: An error resulting from a string containing a spaceset thePath to '/Library/Application Support/'
do shell script 'ls ' & thePath
--> Result: error 'ls: /Library/Application: No such file or directoryrls: Support: No such file or directory' number 1
The easiest way to quote a string is to use the quoted form
property of the text class, as demonstrated in Listing 39-4. This property returns the string in a form that’s safe from further interpretation by the shell, regardless of its contents.
APPLESCRIPT
Listing 39-4AppleScript: Quoting a string to prevent errorsset thePath to quoted form of '/Library/Application Support/'
--> Result: '/Library/Application Support/'
do shell script 'ls ' & thePath
(*
--> Result:
'App Store
Apple
...
'
*)
More Information
Mac Os Command Line Tools
For more information about the do shell script
command, see Commands Reference in AppleScript Language Guide and Technical Note TN2065.
Command Line Mac Loop
Copyright © 2018 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2016-06-13