web-dev-qa-db-ja.com

Windows、Linux、MacOS X用のクロスプラットフォームスクリプト

Windows、Linux、MacOS X用のクロスプラットフォームスクリプト(言語)を探しています。bat/bashにうんざりしています。

自動ログインで、たとえば、「ワークステーションをロックする」のようなことをしたい(私はこれをX-Windowに持っていたが、解決策はかなり醜かった;今、MS Windowsでそれをしたい醜い :-) )。
通常:タスクを自動化します。

それとも、Windows Scripting Hostの方が良いのでしょうか?
PowerShellも思い浮かびますが、私の好みではWindowsのみのようです。 Python、Ruby、(Java?)などの言語はWSHと(上品に?賢明に?)対話できますか?

また、DBUS、DCOMなどのようなものが画像の一部として思い浮かびます。

現在、私はJava、.bat、bash、Ruby、Scalaの混合物を使用しています。 Excel用のVBA。かなり醜くなります。

OS固有のものに近い、ネイティブのパーツを使用/使用したクロスプラットフォームの一般的なソリューションを希望します。たとえばRubyいくつかのWindows固有のものを駆動します(単なる推測)。
あなたは何を使うのですか?
TIA

44
KarolDepka

私はあなたが矛盾のエッジでジャグリングしていると思います:プラットフォームに依存しない(賞賛に値する)だけでなく、「OSの詳細に近い」も欲しいと思います。

ただし、プラットフォームの独立性にもう少し重点を置いている場合は、汎用スクリプトにgroovy(RubyよりもJavaに適したもの)を使用するという考えを抱いています。必要な場合は、OSシェルコマンドを呼び出してOS固有の動作を取得します。

私の動機は少し異なります。私が開発しているプロジェクトには、優れたマルチプラットフォームスクリプトツールが必要ですが、グルーヴィーなコードはbashよりも堅牢であると思います。

私は Lua の大ファンです。

  • 構文は漠然とPascalに似ており、スクリプトでうまく機能します。

  • 優れたパワーウェイトレシオ。優れたエンジニアリング。とても良いデザイン。

  • ANSI Cコンパイラを備えたあらゆるプラットフォームに非常に移植可能です。

  • WxLuaおよびその他のバインディングによるGUIサポート

  • Lua File Systemアドオンなど、一般的なタスクでOSの違いを隠すためのいくつかのサポート

  • コアシステムとライブラリは、使用しているもののallを理解できるほど単純ですが、bash/batと比較して優れたレバレッジを持っています。表現力はPythonまたはRubyに匹敵します。

  • プラスまたはマイナスのライブラリやフレームワークに圧倒されることはありません。

  • excellentの本があります:Roberto Ierusalimschy's Programming in Lua ; 前のエディションはオンラインで無料 を入手できます。

  • パフォーマンスはtcl、Perl、python、Rubyに勝る

  • X86ハードウェアでさらに高速なパフォーマンスを実現するLuaJITがあります。

  • 最後に、これが穴のエースです。プラットフォーム固有の問題に遭遇した場合、プラットフォーム固有のCコードを記述してLuaスクリプトに動的にロードするのはeasyです。 Luaはこのタスクを念頭に置いて設計されており、非常にうまく機能します。パフォーマンスのためにCに簡単に浸ることもできます(MD5チェックサムの計算など)。

過去3〜5年間、私はスクリプトをbash/ksh/awk/sed/grep/PerlからLuaに徐々に移行してきました。私はvery結果に満足しています。

20
Norman Ramsey

PerlとPythonはどちらもほとんどすべてのプラットフォームで使用できます

9
PiedPiper

あなたは試すことができます Batsh

Batshは、BashおよびWindows Batchにコンパイルされる単純なプログラミング言語です。追加の依存関係なしに、すべてのプラットフォームで一度スクリプトを実行できるようになります。

8
Simon Hartcher

スクリプトは Tcl で記述できます。

  • 構文は単純で、スクリプトに期待するものに近いです。

  • それはクロスプラットフォームであり、すべての主要なプラットフォームで実行されます。

  • tkでスクリプト用のシンプルなGUIを簡単に作成できます。これはどこでも機能し、ネイティブコントロールを使用します。

  • windows固有の関数の場合は、 Twapi (Win32 APIバインディング)を使用できます。

  • tclディストリビューション全体である単一ファイルであるTclkitをインストールできます。長いインストールプロセスや隠しファイル、神秘的なディレクトリはありません。

    • linux、Windows、Macランタイムを単一のフラッシュドライブに簡単に配置できるため、ローカルにインストールされていないインタープリターもいつでも利用できます。
4
Tiberiu Ana

たとえばRuby Windows固有のものを駆動する

それは確かに可能です そして Ruby on Windows のブログでは多くの例を見つけることができますまた、Pickaxeの本の章と hum​​ble の章もあります。

2
Jonas Elfström

MonoでC#を使用します。

1
Simeon

シェルにはUNIXとUNIXのようなプラットフォームの可能性がありますが、Windowsのため、どのスクリプト言語でもこれが可能であるとは思いません。

UNIXシステムの場合、これを使用できます。

#!/bin/sh

TYPE=`uname`;
echo 'this is ' ${TYPE};

if [ ${TYPE} = HP-UX ]
   then bdf /var;
Elif [ ${TYPE} = Linux ]
   then df -h /var;
Elif [ ${TYPE} = FreeBSD ]
   then df -k /var;
else echo "Unsupported OS - ${TYPE}"
fi

お役に立てれば幸いです。

ソース

0
vlp

それでも必要かどうかはわかりませんが、必要な場合はant( http://ant.Apache.org/ )を試してください。クロスプラットフォームの「スクリプト言語」です。基本的に、antファイルは、JVMプログラムによって解釈されるxmlファイルです。

0
Nosk