また小ネタです。
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によって追加されたシステムプロパティかわからないことでしょうか…。