2010-04-14 4 views
36

Я ищу кросс-платформенный скриптинг для языков Windows, Linux, MacOS X. Я устал от .bat/bash.

Я хотел бы делать такие вещи, как, например ,, lock workstation '' при автоматическом входе в систему (у меня это было в X-Window, но решение было довольно уродливым, теперь я бы хотел, чтобы это на MS Windows, а не на уродливом: -)).
Как правило: автоматизировать задачи.

Или мне лучше с Windows Scripting Host?
PowerShell также приходит на ум, но это похоже на Windows-только для моего вкуса. Могут ли языки, подобные Python, Ruby, (Java?) Взаимодействовать (элегантно? Разумно?) С WSH?

Такие вещи, как DBUS, DCOM и т. Д., Приходят на ум как часть изображения.

В настоящее время я использую смесь Java, .bat, bash, Ruby, Scala; некоторые VBA для Excel. Который иногда становится довольно уродливым.

Я хотел бы получить кросс-платформенное общее решение с использованием/родственных деталей, близких к ОС. Как, например, Ruby управляет некоторыми специфичными для Windows вещами (просто догадка).
Что вы используете?
TIAмежплатформенный скриптинг для Windows, Linux, MacOS X

ответ

2

Я думаю, вы жонглируете на грани противоречивых: вы бы хотели независимой от платформы (похвальной), но также «близкой к специфике ОС».

Если, однако, вы уделяете немного больше внимания независимости платформы, я занимаюсь идеей использования groovy (более дружественного к Java родственника ruby) для сценариев общего назначения. Когда вам это нужно, вы получаете поведение, специфичное для ОС, путем вызова команд оболочки ОС.

Мотивация немного отличается: я считаю, что код groovy более надежный, чем у bash, хотя мне тоже понадобится хороший многоплатформенный скриптовый инструмент для проекта, который я разрабатываю.

+0

Спасибо. О предполагаемой «противоречивости»: как правило, кросс-платформенный, но способный интегрировать (вызвать в) ОС-специфику, ну. Это не так редко. – KarolDepka

+0

У меня появилось ощущение, что вы склоняетесь к чему-то лучшему, чем комбинация команд ruby ​​+ shell, о которых вы упомянули: вот что я имел в виду. Я просто сказал, что вряд ли вы найдете что-то лучше этого. –

+0

Groovy хорош, но медленный запуск jvm делает java не стартером для коротких скриптов IMO. –

-1

Я бы использовал C# с Mono.

+7

Это поражает меня как странный выбор для сценариев. В bash, например, вы показываете содержимое файла с 'cat file.txt'; в groovy с 'println new File (" file.txt "). text': сколько кода (+ компиляция) вы бы сделали с C#? C# может быть хорошим языком OO общего назначения, но одно, что не очень хорошо, это поддержка скриптов. –

+2

Просто для справки (не подразумевая, что C# хорош для сценариев) в C# вы должны написать: File.ReadAllText («file.txt») в среде repl (который включен в mono: http: //www.mono-project .com/CsharpRepl) – Cohen

2

Как, например, Рубин вождения некоторые окна-конкретные вещи

It certainly can и на Ruby on Windows блоге вы можете найти много примеров, также есть глава в книге кирки и в humble один.

4

Вы можете написать свои сценарии в Tcl.

  • синтаксис прост и ближе к , что вы могли бы ожидать от сценария;

  • это кросс-платформенный и будет работать на всех основных платформах;

  • вы можете легко создавать простые графические интерфейсы для ваших скриптов в Tk, которые также будут работать повсюду и использовать собственные элементы управления;

  • для функций Windows, вы можете использовать Twapi (Win32 API ).

  • вы можете установить Tclkit, который является единственным файлом, являющимся полным распределением Tcl.Нет длительных процессов установки или скрытых файлов или таинственных каталогов;

    • Вы можете легко установить linux, windows и mac runtime на один флеш-накопитель, чтобы у вас всегда был удобный переводчик, даже если локально не установлен.
+1

Tcl также выигрывает, потому что вы можете установить Tclkit, который является единственным файлом, который является полным дистрибутивом Tcl. Нет длительных процессов установки или скрытых файлов или таинственных каталогов. Кроме того, вы можете легко установить linux, windows и mac runtime на один флеш-накопитель, чтобы у вас всегда был удобный интерпретатор, даже если он не установлен локально. И, конечно же, для программирования графического интерфейса вы получаете собственные виджеты. –

5

Perl и Python являются доступными почти на каждой платформе

15

Я огромный поклонник Lua:

  • Синтаксис неопределенно Pascal-подобный и хорошо работает в сценариях ,

  • Превосходное соотношение мощности к весу. Превосходная инженерия. Очень хороший дизайн.

  • Чрезвычайно переносимая на любую платформу с компилятором ANSI C.

  • поддержка GUI через wxLua и другие переплеты

  • Некоторая поддержка для сокрытия различий ОС в общих задач, например, файловая система Lua дополнения

  • ядро ​​системы и библиотеки достаточно, что просто вы можете понять все того, что вы используете, но по-прежнему имеют отличное плечо по сравнению с bash/bat. Выразительная сила сравнима с Python или Ruby.

  • Вы не переполнены библиотеками и фреймами, которые могут быть плюсом или минусом.

  • отличное книга: Roberto Ierusalimschy's Programming in Lua; вы можете получить previous edition free online.

  • Performance бьет Tcl, Perl, Python, Ruby

  • Для еще более высокой производительности на платформе х86, есть LuaJIT.

  • Наконец, и это туз в рукаве: если вы столкнулись с какой-либо проблемы конкретной платформы, то легко написать платформо-зависимый код C и загрузить его в сценарий Lua динамически. Lua был разработан с учетом этой задачи и делает это очень хорошо. Вы также можете легко окунуться в C для повышения производительности (например, вычислить контрольную сумму MD5).

За последние 3 до 5 лет, я постепенно мигрирующие скрипты Баш/КШ/AWK/СЭД/Grep/Perl в Lua. Я был очень доволен результатами.

0

есть возможность для UNIX и UNIX подобных платформ в оболочке, но я не думаю, что это то, о чем вы просите, возможно на любом языке сценариев из-за окон.

Для систем 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 

Я надеюсь, что это поможет!

source

1

Не уверен, что, если вам все еще нужно, но если это так, попробуйте муравей (http://ant.apache.org/). Это перекрестная платформа «язык скриптов». В принципе, файл ant - это xml-файл, интерпретируемый программой JVM.

6

Вы можете попробовать Batsh

Батш является простым языком программирования, который компилируется в Bash и Windows, Batch. Это позволяет вам писать свой сценарий, когда он запускается на всех платформах без какой-либо дополнительной зависимости.

Смежные вопросы