CLOVER🍀

That was when it all began.

GroovyのOne Linerで、システムプロパティの値を出力する

また小ネタです。

Groovyは、groovyコマンドの「-e」スイッチでOne Linerを実行することが可能ですが、これを使って現在のシステムプロパティを出力するコードを書いてみましょう。

んで、できたのがこちら。

$ groovy -e 'System.properties.sort().each{println(it.key + " = " + it.value.replaceAll(/\r/, "\\\\r").replaceAll(/\n/, "\\\\n"))}'

実行すると、こうなります。

awt.toolkit = sun.awt.X11.XToolkit
file.encoding = UTF-8
file.encoding.pkg = sun.io
file.separator = /
groovy.home = /usr/local/groovy/current
groovy.starter.conf = /usr/local/groovy/current/conf/groovy-starter.conf
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
java.awt.printerjob = sun.print.PSPrinterJob
java.class.path = /usr/local/groovy/current/lib/groovy-2.0.1.jar
java.class.version = 51.0
java.endorsed.dirs = /usr/lib/jvm/java-7-oracle/jre/lib/endorsed

 〜省略〜

java.version = 1.7.0_07
java.vm.info = mixed mode
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 1.7
java.vm.vendor = Oracle Corporation
java.vm.version = 23.3-b01
line.separator = \n
os.arch = amd64
os.name = Linux
os.version = 3.2.0-29-generic
path.separator = :

 〜省略〜

sun.io.unicode.encoding = UnicodeLittle
sun.java.command = org.codehaus.groovy.tools.GroovyStarter --main groovy.ui.GroovyMain --conf /usr/local/groovy/current/conf/groovy-starter.conf --classpath . -e System.properties.sort().each{println(it.key + " = " + it.value.replaceAll(/\r/, "\\\\r").replaceAll(/\n/, "\\\\n"))}
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = UTF-8
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
sun.os.patch.level = unknown
tools.jar = /usr/lib/jvm/java-7-oracle/lib/tools.jar
user.country = JP
user.dir = /home/xxxxx/yyyyy
user.home = /home/xxxxx
user.language = ja
user.name = xxxxx
user.timezone = 

一応、ソートしてあります。あと、改行は「\r」および「\n」に変換して出力するようにしています。なんとなく。

けっこうお手軽に書けますが、欠点は起動が重いことと、この方法だとどれがGroovyによって追加されたシステムプロパティかわからないことでしょうか…。