开发者长久以来可以分为Mac/Windows操作系统下的点击用户或者UNIX操作系统下的命令行用户。随着Mac机上OS X软件的出现以及Windows平台下Cygwin程序的存在,Mac或者Wiindows用户现在可以在享受Mac/Windows的点击方便界面的同时,使用强大的UNIX命令行界面。
现在有许多命令行环境,当前用的最多的是bash、tcsh和zsh。我们将在我们的例子中使用bash命令行(shell)。
首要的是让编辑变得简单。下面的一段代码是来自于命令行:
jikes com/generationJava/example/FirstClass.java
与其要输入java com.generatioinjava.examples.FirstClass来测试这段代码,不如使用javad函数以及!:1语法。
javad !:1
其中,!:1告诉系统重复上一个命令行中从0开始的第一个变量,javad是一个简单的命令行函数如下:
# Run a file from its source filename and not just its
# fully qualified class name.
function javad( ) {
source=$1
shift 1
java `echo ${source} sed ′s/.java$//′ sed ′s///./g′` $*
}
非凡懒的程序员也许会想编译一个目录中的所有Java源代码。我们可以通过javacdir com/完成此功能,其中javacdir函数实现如下:
# Compile everything in a Directory.
# change javac to jikes if need be
function javacdir( ) {
jikes `find $1 -path ′*.java′` 2〉&1 more
}
当我们运行javacdir的时候,我们会得到一堆错误,我们将很难分辨是那些类无法编译。所以我们要列出所有还没有对应一个.class文件的源代码文件。我们使用missingc com/来完成此功能,其中missingc函数实现如下:
function missingc( ) {
for i in `findj $1`
do
if [ -e `echo $i sed ′s/java$/class/′` ]; then
echo XXXX
else
echo $I
fi
done grep -v ′XXXX′
}
这将列出所有缺少一个.class文件的源文件。可以通过将这些函数加入一个文本文件并编译运行这些文件获得这些函数。