是否有辦法以這種方式設置別名,以便我可以輸入命令,然後在單行中輸入參數?使用單一命令行編譯和編譯Java(Linux)
例如,而不是
javac Program.java && java Program
我能去
newcommand Program.java //or "newcommand Program", whichever is easier
它會做同樣的命令,上面的線。
是否有辦法以這種方式設置別名,以便我可以輸入命令,然後在單行中輸入參數?使用單一命令行編譯和編譯Java(Linux)
例如,而不是
javac Program.java && java Program
我能去
newcommand Program.java //or "newcommand Program", whichever is easier
它會做同樣的命令,上面的線。
的alias
不進行接受參數,定義這樣的功能:
jcar() { javac $1.java && java $1 }
然後使用它:
jcar Program
(jcar
旨在作爲用於Java的編譯期的首字母縮寫並運行)
我打算回答你給出一段Makefile,但它不夠通用。無論何時你想編譯一個更復雜的程序(比如說2個文件),你都需要編譯第二個程序。它可能在一個包中,在這種情況下,你所要求的不再工作。同樣的事情,如果你必須處理圖書館。
出於所有這些原因,我強烈建議你選擇你的選擇,make
,scons
,ant
的建築工具,讓我們提到它maven
。我發現稍後複雜的小項目的方式。但是ant
是我最喜歡的java程序。最後,你可以只需要ant run
這將運行你的程序,並在需要時重新編譯它。用螞蟻看看。
添加到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
}
添加到enrico.bacis'和notcompletelyrational的答案,如何下運行一個packa GE和清理包編譯的文件:
jcar() { javac -d . $1.java && java ${PWD##*/}.$1 && rm -rf ${PWD##*/}/ }
順便說一句,這個功能應該被分別添加到〜/ .bash_profile用於Mac OS和〜/ .bashrc中爲Linux。
運行它
jcar ProgramName
我喜歡傳全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
}
你在哪裏定義函數?在.bashrc中?編輯:是的,那是在哪裏。我想到了。我很感激! – Nxt3 2014-09-13 18:04:09