在Java中我们可以使用Runtime.getRuntime().exec();来和系统交互。这个API过于底层,exec返回一个代表进程的对象,然后从中读取执行结果或者错误信息。并且如果不关心进程的输出,而没有把输入结果重定向到/dev/null,超过输出结果的buffer就会阻塞。
scala.sys.process提供了shell的和系统交互的DSL,包括执行命令、逻辑操作、重定向、管道等操作。
使用!来执行外部命令:
"find project -name *.jar" !
如果没有参数,直接输出到标准输出或者标准错误输出
你可以传递Logger参数给!
"find project -name *.jar" ! log
如果想保存到变量中:
val result = "find project -name *.jar" !!
使用逻辑操作#&&,#||
cmd1 #&& cmd2
cmd1 #|| cmd2
使用管道:
cmd1 #| cmd2
例子:
"find src -name *.scala -exec grep null {} ;" #| "xargs test -z" #&& "echo null-free" #|| "echo null detected" !
使用重定向:
scala的重定向不仅可以从定向普通的文件,还可以把网络上的文件进行重定向到本地:
a #< url or url #> a
例子:
url("http://fuliang.iteye.com") #> file("blog.html") !
//或者
file("blog.html") #< url("http://fuliang.iteye.com") !
文件:
a #< file or file #> a
a可以是一个文件或者一个命令,比如:
file("blog.html") #> file("fuliang_blog.html") !
//或者
file("fuliang_blog.html") #< file("blog.html") !
还可以使用 #>> #<<追加操作:
a #>> file or file #<<
url("http://fuliang.iteye.com") #> "grep -i ruby" #>> file("Ruby") !
//或者
file("Ruby") #<< ( "grep ruby" #< url(http://fuliang.iteye.com") ) !
使用cat:
val spde = url("http://technically.us/spde/About")
val dispatch = url("http://databinder.net/dispatch/About")
val build = file("project/build.properties")
cat(spde, dispatch, build) #| "grep -i scala" !
当然这一切的操作时通过字符串操作和执行命令的!、!!操作符完成的。
分享到:
相关推荐
在浏览器上运行 Scala Scala.js ,Scala.js 是一个将 Scala 语言编译成 JavaScript 的工具,可以让你直接在浏览...
scala-js-ts-importer, Scala.js的打印机导入程序 从打字类型定义到 Scala.js的导入程序这里工具读取为 TypeScript 编写的类型定义文件,并将它们重写为可以使用 Scala.js的. scala 文件。过程不精确 100 %,因此...
大数据技术之Scala.docx
这个是UltraEdit编辑器中的关于Scala的高亮文件类型。
scala 英文版
Programming.in.Scala.pdf
Learning.Scala.2014.12.pdf
Programming.Scala.2nd.Edition.2014.12;Programming.Scala.2nd.Edition.2014.12
scala-js-example-app, 使用 Scala.js 构建的示例应用程序 用 Scala.js 编写的应用这是用 Scala.js 编写的应用程序的实例示例。开始要开始,在这个示例项目中打开 sbt,并执行任务 fastOptJS 。 这将创建文件 target...
Scala.for.the.Impatient.2nd.Edition 最新版,最好的scala入门教程
scalajs-vue, Vue.js的Scala.js 绑定和示例应用程序 scalajs-vue用于 Vue.js的Scala.js-绑定和示例应用程序要作为图书馆使用,只要从https://jitpack.io/#fancellu/scalajs-vue 示例应用展示了使用 Scala.j
响应式架构 消息模式Actor实现与Scala.Akka应用集成 高清扫描版
Scala.for.the.Impatient.2nd.2017.pdf
scala in depth, Manning.Scala.in.Depth.May.2012
Programming.in.Scala.2nd.Edition
play-scalajs.g8, 使用Play和 Scala.js 开始的Giter8模板 带 Scala.js的 Play Framework 这是一个 Giter8 模板,演示如何将播放项目与 Scala.js 项目集成。运行应用程序$ sbt new vmunier/play-scalajs.g8 --na
Scala.for.the.Impatient.2nd.Edition.2016.12.pdf(带书签)
Reactive.programming.with.scala.and.akka.pdf Reactive Programming with Scala and Akka
dreampie_scala 使用play框架Sbt依赖管理,集成Oauth验证,repatcha验证码,权限系统,数据库自动升级脚本,socketio通信等 bootstrap前端 可直接使用sbt run直接跑,数据库可以自动验证生成初始化数据 ...