`

使用scala.sys.process包和系统交互

阅读更多
在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.zip

    Scala.js与JavaScript的结合,使得开发者能够利用这些资源,同时又可以享受Scala的强大语法和类型系统。例如,你可以使用Scala.js与React、Vue或Angular等前端框架集成,实现高效、可维护的前端应用。 在实际开发中...

    scala-js-ts-importer, Scala.js的打印机导入程序.zip

    scala-js-ts-importer, Scala.js的打印机导入程序 从打字类型定义到 Scala.js的导入程序这里工具读取为 TypeScript 编写的类型定义文件,并将它们重写为可以使用 Scala.js的. scala 文件。过程不精确 100 %,因此...

    移植到 Scala.js 的 简单HTML5 Canvas游戏_Scala_代码_下载

    7. **前端开发**:移植到Scala.js的游戏开发结合了前端开发的特点,如交互性、实时反馈以及对性能的优化需求,同时也利用了Scala的静态类型检查和强大的编程特性,提高了代码质量和开发效率。 8. **调试和测试**:...

    scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar

    在压缩包中,我们只看到了"scala-2.12.14"这一条子文件名,这可能是指Scala的二进制分发包,其中包括Scala解释器、编译器和其他工具。安装这个版本的Scala通常涉及以下步骤: 1. 解压缩文件:使用`tar -zxvf scala-...

    Scala.uew UltraEdit关于Scala的wordfiles

    这个是UltraEdit编辑器中的关于Scala的高亮文件类型。

    scala-2.12.11.tgz

    虽然Hadoop不直接依赖Scala,但很多基于Hadoop的项目,如Apache Spark,都使用Scala编写,因此理解Scala对于Hadoop生态系统的学习和开发也是有益的。 总的来说,"scala-2.12.11.tgz"文件为Linux用户提供了Scala编程...

    linux上安装scala资源包 scala.zip

    以下将详细介绍如何在Linux上安装Scala资源包`scala.zip`以及进行Scala编程操作。 1. **下载Scala资源包** 首先,你需要从Scala的官方网站(https://www.scala-lang.org/download/)下载最新版本的Scala安装包。...

    大数据技术之Scala.docx

    学习Scala语言之所以重要,是因为Spark就是使用Scala编写的,因此为了更好的学习Spark,需要掌握Scala这门语言。Spark的兴起,带动Scala语言的发展。 Scala语言的特点: 1. Scala是一门多范式的编程语言,支持...

    Programming.in.Scala.pdf

    从上述内容来看,《Programming in Scala.pdf》不仅是一本介绍Scala编程语言的书籍,更是一本为读者提供深入了解和应用Scala语言的实用工具。书籍中的内容覆盖了从基础知识到高级特性的多个层面,确保读者能够在掌握...

    scala-2.12.11.zip

    - Scala解释器(scala.bat) - 文档(包括API文档和用户指南) - 示例代码 - 可能还包括用于构建Scala项目的构建工具,如sbt(Scala Build Tool) 要开始使用Scala,开发者需要解压这个压缩包,将Scala的bin目录...

    同款包包_scala.zip

    总的来说,“同款包包_scala.zip”提供的资源可以帮助用户深入理解Scala语言,通过`scala-2.12.12.tgz`学习和使用Scala的最新版本,而`同款 scala`可能提供了实践操作的机会,辅助理解博客文章中的概念和技术。...

    scala-js-example-app, 使用 Scala.js 构建的示例应用程序.zip

    scala-js-example-app, 使用 Scala.js 构建的示例应用程序 用 Scala.js 编写的应用这是用 Scala.js 编写的应用程序的实例示例。开始要开始,在这个示例项目中打开 sbt,并执行任务 fastOptJS 。 这将创建文件 target...

    scala-2.12.13.tgz

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念,为开发者提供了丰富的工具集。这个"scala-2.12.13.tgz"文件是Scala编程语言的一个版本,针对Linux操作系统提供的安装包。tgz(tar.gz)格式...

    scala库 by maven依赖

    而`scalatest_${scala.version}`则是ScalaTest的依赖,它是一个广泛使用的测试框架,可以帮助开发者编写单元测试和集成测试。 ScalaTest提供了丰富的匹配器和断言,使得测试代码更加简洁和可读。例如,可以这样编写...

    scalajs-vue, Vue.js的Scala.js 绑定和示例应用程序.zip

    scalajs-vue, Vue.js的Scala.js 绑定和示例应用程序 scalajs-vue用于 Vue.js的Scala.js-绑定和示例应用程序要作为图书馆使用,只要从https://jitpack.io/#fancellu/scalajs-vue 示例应用展示了使用 Scala.j

    scala-2.13.8 解压安装版

    安装这个解压版,开发者可以直接进入工作目录,使用SBT或Scala REPL(Read-Eval-Print Loop)开始编写和运行Scala代码,无需安装额外的环境。这使得在不同系统上快速试用或部署Scala项目成为可能。 总的来说,Scala...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成 高清扫描版

    响应式架构 消息模式Actor实现与Scala.Akka应用集成 高清扫描版

    scala-2.11.12.msi.zip

    要开始使用Scala,开发者需要安装这个.msi文件,然后可以使用Scala REPL(Read-Eval-Print Loop)进行交互式编程,或者通过IDE如IntelliJ IDEA或Eclipse的Scala插件来编写复杂的项目。Scala广泛应用于大数据处理(如...

    scala.rar软件安装包

    这个"scala.rar"软件安装包是专门为那些希望在他们的开发环境中集成Scala语言的人准备的。Scala的安装过程相对简单,下面将详细介绍如何安装以及Scala的基本知识。 首先,你需要解压"scala.rar"文件,这通常可以...

Global site tag (gtag.js) - Google Analytics