有没有办法以这样的方式设置别名,以便我可以输入命令,然后在一行中输入参数?
例如,而不是
javac Program.java && java Program
我可以去
newcommand Program.java //or "newcommand Program", whichever is easier
将执行与上面一行相同的命令。
答案 0 :(得分:10)
alias
不接受参数,定义如下函数:
jcar() { javac $1.java && java $1 ; }
然后使用它:
jcar Program
(jcar
旨在作为java-compile-and-run的首字母缩写)
答案 1 :(得分:5)
答案 2 :(得分:4)
添加到enrico.bacis'回答,我个人不想让Program.class文件混乱我的工作区,如果我只是测试一个程序,那我就
jcar() { javac $1.java && java $1 && rm $1.class}
此外,我发现陷阱ctrl-c
很有帮助,即使我中途结束该计划,它仍会删除.class
jcar() {
trap "rm $1.class" SIGINT SIGTERM
javac $1.java
java $1
rm $1.class
}
答案 3 :(得分:2)
我喜欢传递完整的Program.java文件名作为输入参数,允许轻松自动完成。
以下是notcompletelyrational脚本的编辑版本,该脚本需要jcar Program.java
而不是jcar Program
等命令:
jcar() {
f=$1
f2=${f%.*}
trap "rm $f2.class" SIGINT SIGTERM
javac $1
java $f2
rm $f2.class
}
答案 4 :(得分:1)
我打算给你一块Makefile,但它不够通用。无论何时你想编译一个更复杂的程序(假设有2个文件),你也需要编译第二个程序。它可能在一个包中,在这种情况下你所要求的东西不再起作用。如果你必须处理库,也一样。
出于所有这些原因,我强烈建议您选择您选择的建筑工具,make
,scons
,ant
,然后让我们提及它maven
。我找到了后来为小项目复杂的方法。但是ant
是我最好的java程序候选者。最后,您只需ant run
即可运行您的程序并在需要时重新编译它。使用ant查看hello world tutorial。
答案 5 :(得分:0)
添加到enrico.bacis'和notcompleterationrational的答案,如何在包下运行它并清理包编译文件:
jcar() {
javac -d . $1.java && java ${PWD##*/}.$1 && rm -rf ${PWD##*/}/
}
顺便说一句,这个函数应该分别添加到Mac OS的〜/ .bash_profile和Linux的〜/ .bashrc。
运行它:
jcar ProgramName
答案 6 :(得分:0)
我最喜欢的解决方案如下:
function jcar { javac ${1%.*}.java && java ${1%.*}; }
它可以处理各种输入,例如
jcar myfile
jcar myfile.
jcar myfile.java
jcar myfile.class
它可以让您更快地使用Tab:)