Scala REPLの興味深い特徴は、%SCALA_HOME%\lib
ディレクトリに任意のjarをドロップすると、REPLからインポートできることです。私はそこにいくつかのジャーを持っています、そして、私はしばしばどのものが含まれているかを知る必要があります。ですから、私はいつも別のコマンドウィンドウを開き、そのディレクトリ内にどのjarファイルが存在するかを調べる必要があります。 REPLが私にdir
やls
のようなシステムコマンドを実行させたり、上記のlibディレクトリにあるすべてのjarを少なくともリストすることができれば嬉しいです。 REPLでシェルコマンドを呼び出す最も簡単な方法は何ですか? REPLでScalaからシェルコマンドを実行するREPL
答えて
:sh
コマンドシェル・コマンドを導入することができます:
Windows版:
scala> :sh cmd /C dir
res0: scala.tools.nsc.interpreter.ProcessResult = `cmd /C dir` (28 lines, exit 0)
scala> res0 foreach println
(残念ながら、シェルコマンドの前にcmd \C
への呼び出しを回避するための方法はありません)
UNIX系バージョン:
scala> :sh ls
res0: scala.tools.nsc.interpreter.ProcessResult = `cmd /C dir` (28 lines, exit 0)
scala> res0 foreach println
更新:Daniel's answerに触発、Windowsユーザーのためのちょっとしたトリック:
scala> implicit def stringToDosProcess(s: String) =
scala.sys.process.stringToProcess("cmd /C "+ s)
stringToDosProcess: (s: String)scala.sys.process.ProcessBuilder
scala> "dir".!
REPLのリトル知らトリック:
ようこそScalaのバージョン2.10.0-20120323-101508-45eebcf98d(Javaのホットスポットに(TM)64ビットサーバVM、Java 1.6.0_26)。 評価するには式を入力します。 タイプ:詳細については、ヘルプを参照してください。 <TAB>
は私がタブを押すことで
scala> /home/dcs/scala-2.9.1.final/<TAB>
/home/dcs/scala-2.9.1.final/misc /home/dcs/scala-2.9.1.final/bin /home/dcs/scala-2.9.1.final/man /home/dcs/scala-2.9.1.final/src /home/dcs/scala-2.9.1.final/lib
/home/dcs/scala-2.9.1.final/meta /home/dcs/scala-2.9.1.final/doc
scala> /home/dcs/scala-2.9.1.final/lib/<TAB>
/home/dcs/scala-2.9.1.final/lib/scala-dbc.jar /home/dcs/scala-2.9.1.final/lib/scala-swing.jar /home/dcs/scala-2.9.1.final/lib/jline.jar
/home/dcs/scala-2.9.1.final/lib/scala-library.jar /home/dcs/scala-2.9.1.final/lib/scala-compiler.jar /home/dcs/scala-2.9.1.final/lib/scalap.jar
scala> /home/dcs/scala-2.9.1.final/lib/scala-library.jar
res0: scala.tools.nsc.io.File = /home/dcs/scala-2.9.1.final/lib/scala-library.jar
。
非常にクールなトリックのメンバーではありません!ありがとう。 – Jus12
あなたはどこでも
オルタナティブ:
scala> import sys.process._
import sys.process._
scala> "ls /home/dcs/scala-2.9.1.final".!
bin
doc
lib
man
meta
misc
src
res1: Int = 0
UPDATE
:sh
出力は長年にわたって変更された抽出する手段:Scalaのsys.process
ライブラリを使用します。
Welcome to Scala 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_91).
Type in expressions for evaluation. Or try :help.
scala> :sh date
res0: scala.tools.nsc.interpreter.ProcessResult = `date` (1 lines, exit 0)
scala> res0 foreach println
<console>:13: error: value foreach is not a member of scala.tools.nsc.interpreter.ProcessResult
res0 foreach println
^
scala> res0.show
<console>:13: error: value show is not a member of scala.tools.nsc.interpreter.ProcessResult
res0.show
^
scala> res0.lines
res3: List[String] = List(Sat Sep 17 19:29:26 PDT 2016)
UPDATE 2018年1月15日
例:あなたは、現在の作業ディレクトリ内のファイルを見たい:
scala> :sh ls -l
res3: scala.tools.nsc.interpreter.ProcessResult = `ls -l` (13 lines, exit 0)
しかし、あなたはこれを行うことはできません。
scala> res3.foreach {println}
<console>:40: error: value foreach is not a member of scala.tools.nsc.interpreter.ProcessResult
res3.foreach {println}
^
最初に、繰り返しをサポートする別のタイプにラインを割り当てる必要があります。
scala> res3.lines
res7: List[String] = List(total 960, [email protected] 1 dave staff 11325 Jan 3 15:01 LICENSE, [email protected] 1 dave staff 8859 Jan 3 15:01 README.rst, [email protected] 3 dave staff 96 Jan 3 15:03 assembly, [email protected] 20 dave staff 640 Jan 3 15:01 bin, [email protected] 13 dave staff 416 Jan 3 15:01 doc, [email protected] 7 dave staff 224 Jan 3 15:01 docker, [email protected] 6 dave staff 192 Jan 3 15:03 examples, [email protected] 1 dave staff 826 Jan 3 15:01 gradle.properties, [email protected] 1 dave staff 128 Jan 3 15:04 h2o_drivers.txt, drwxr-xr-x 3 dave staff 96 Jan 16 00:54 h2ologs, [email protected] 5 dave staff 160 Jan 3 15:04 py, [email protected] 1 dave staff 455890 Sep 19 04:18 rsparkling.tar.gz)
次に反復して、ボイル!
scala> res7.foreach {println}
total 960
[email protected] 1 dave staff 11325 Jan 3 15:01 LICENSE
[email protected] 1 dave staff 8859 Jan 3 15:01 README.rst
[email protected] 3 dave staff 96 Jan 3 15:03 assembly
[email protected] 20 dave staff 640 Jan 3 15:01 bin
[email protected] 13 dave staff 416 Jan 3 15:01 doc
[email protected] 7 dave staff 224 Jan 3 15:01 docker
[email protected] 6 dave staff 192 Jan 3 15:03 examples
[email protected] 1 dave staff 826 Jan 3 15:01 gradle.properties
[email protected] 1 dave staff 128 Jan 3 15:04 h2o_drivers.txt
drwxr-xr-x 3 dave staff 96 Jan 16 00:54 h2ologs
[email protected] 5 dave staff 160 Jan 3 15:04 py
[email protected] 1 dave staff 455890 Sep 19 04:18 rsparkling.tar.gz
- 1. Javaからシェルコマンドを実行する
- 2. Foxxアプリケーションからシェルコマンドを実行する
- 3. コマンドラインからDjangoシェルコマンドを実行する
- 4. REPLでScala IDE(eclipse)で書かれたコードを実行
- 5. Scala REPL:リモートMavenリポジトリをScala REPLクラスパスに追加するには?
- 6. .NETアプリケーションからシェルコマンドを実行
- 7. pythonスクリプト(RaspberryPi)からシェルコマンドを実行
- 8. MySQLストアドプロシージャからシェルコマンドを実行
- 9. Scala REPL in Gradle
- 10. Scala REPL in Emacs
- 11. ScalaのREPL
- 12. シェルコマンドを実行する(c)
- 13. アプリからのシェルコマンドの実行[ルーテッド]
- 14. コマンドラインからScalaコードを実行する
- 15. 実行シェルコマンド
- 16. Bluemixでシェルコマンドを実行する方法sparkノートブックでscalaを実行していますか?
- 17. RealBasic:シェルコマンドを実行
- 18. settings.maxPrintString for Scala 2.9 REPL
- 19. Scala REPL:関数型の検索方法は? ScalaのREPLで
- 20. Java 9 REPLアプリ実行用REPL
- 21. スカラインタラクティブインタプリタ(REPL)内から外部ファイルを実行するには?
- 22. 出力をバッファリングせずにNode.jsからシェルコマンドを実行する
- 23. perlからシェルコマンドを実行して対話を許可する
- 24. phpスクリプトからシェルコマンドを実行するには
- 25. シェルコマンドをエスケープしてPHPから実行する方法
- 26. duktapeからシェルコマンドを実行する方法
- 27. Mac/MacRubyアプリケーションからシェルコマンドを実行するには?
- 28. perlからif elseシェルコマンドを実行する
- 29. Pythonと文字列連結からシェルコマンドを実行する
- 30. Unity3DからAndroidシェルコマンドを実行するには
ありがとうございます!これは私が探していたものに最も近いものです。 – Jus12
Windows上で動作しません。 Scala 2.11.8(Java HotSpot(TM)64ビットサーバーVM、Java 1.8.0_121)へようこそ。評価のために式を入力します。または、試してみてください。 'スカラ スカラ>:SH CMD/C DIR RES0:scala.tools.nsc.interpreter.ProcessResult = 'CMD/C dir'(27行、出口0) スカラ> RES0のforeachのprintln:13:エラー:値のforeachはscala.tools.nsc.interpreter.ProcessResult RES0のforeachのprintln ^ '' ' –
Hossein