In this article I assume that you already know at least a little bit about how to use AppleScript, and just want to know how to trigger a MacOS notification. At the end of the tutorial I show how to invoke the AppleScript code using Scala and Java.
To run external shell commands in SBT, first start SBT from your operating system command line:
Then run the
After some output you’ll see this prompt:
Now you can execute shell commands by including them in double quotes, and following them by an exclamation mark, like this:
scala> "ls -al" !
For more information, see the SBT consoleProject documentation page.
This is an excerpt from the Scala Cookbook (partially modified for the internet). This is Recipe 12.20, “An index of methods available to run external system commands.”
The following tables list the methods of the scala.sys.process package that you can use when running external (system) commands.
Methods to execute external commands
Table 12-1 lists the methods that you can use to execute system commands.
Table 12-1. Methods to execute system commands
If you ever need to execute AppleScript from a Java or Scala application, this code shows how to solve the programming part of this problem.
Given an AppleScript command as a Scala multiline string, like this:
// press the `fn` key twice val asCommand = """ tell application "System Events" key code 63 key code 63 end tell """
you can execute that command by calling this
If you ever want to create a Unix shell script that you can give to someone else so they can double-click it and run it through the Mac OS X Finder, all you have to do is (a) name the file with the ".command" extension and (b) make it executable. So, just name your Mac/Unix script like this:
Then make it executable, like this:
chmod +x ShowProcesses.command
You can also leave out the usual
#!/bin/sh part on the first line.
At the time of this writing, you can't easily find the Scala Process and ProcessBuilder classes (the Scala API documentation), so in an effort to help you (and the search engines) find those classes more easily, here are direct links to them:
Scala exec FAQ: How do I execute external system commands in Scala?
When it comes to executing external system commands, Scala is a dramatic improvement over Java. The operators Scala makes available are much more like Perl or Ruby, and the operators themselves are consistent with traditional shell commands, and are therefore easy to remember. Let's take a look at a few examples.
In earlier articles I've described how to execute system commands from Java applications. A long time ago I wrote my first article on this topic (How to execute system commands from Java), and more recently I wrote an updated version of that article titled "Executing system commands from Java using the ProcessBuilder and Process classes".
SQLite script FAQ: How do I read/execute a
CREATE TABLES script from the SQLite command line? (How do I read or execute commands in a file from the
sqlite3 command line?)
Our ThreadedStreamHandler class
Based on an old-but-good article at JavaWorld, I'm developing the following Java ThreadedStreamHandler class. (It's still a work-in-progress, but as mentioned, commands that don't have to be run using
sudo seem to work just fine right now.)