2010-04-14 13 views
36

Szukam skryptów międzyplatformowych (język) dla systemu Windows, Linux, MacOS X. Jestem zmęczony .bat/bash.

Chciałbym zrobić na przykład "blokadę stacji roboczej" przy automatycznym logowaniu (miałem to w X-Window, ale rozwiązanie było dość brzydkie, teraz, chciałbym to na MS Windows, a nie takie brzydkie: -)).
Ogólnie: automatyzacja zadań.

A może lepiej byłoby mi z Hostem skryptów systemu Windows?
Przypomina mi się także PowerShell, ale wydaje mi się, że jest to tylko Windows dla mojego gustu. Czy języki takie jak Python, Ruby, (Java?) Mogą wchodzić w interakcję (elegancko? Rozsądnie?) Z WSH?

Również rzeczy takie jak DBUS, DCOM itp. Przychodzą na myśl jako część obrazu.

Obecnie używam mieszaniny Java, .bat, bash, Ruby, Scala; trochę VBA dla Excela. Co czasem robi się dość brzydkie.

Chciałbym ogólne rozwiązanie wieloplatformowe z/używając ,, natywnych "części w pobliżu specyfiki systemu operacyjnego. Jak np. Ruby napędza niektóre specyficzne dla Windowsa rzeczy (tylko domysły).
Czego używasz?
TIASkrypty międzyplatformowe dla systemu Windows, Linux, MacOS X

Odpowiedz

2

Myślę, że żonglujesz na granicy sprzeczności: chciałbyś być niezależny od platformy (godnej polecenia), ale także "blisko specyfiki systemu operacyjnego".

Jeśli jednak położysz większy nacisk na niezależność od platformy, wpadłem na pomysł wykorzystania groovy (bardziej przyjaznego dla java krewnego ruby) do skryptowania ogólnego. Gdy jest to potrzebne, uzyskujesz specyficzne dla systemu operacyjnego zachowanie poprzez wywoływanie poleceń powłoki systemu operacyjnego.

Moja motywacja jest nieco inna: uważam, że groovy kod jest bardziej solidny niż bash, chociaż ja też potrzebuję dobrego narzędzia do tworzenia skryptów wieloplatformowych dla projektu, który rozwijam.

+0

Dzięki. O rzekomej "sprzeczności": "Ogólnie rzecz biorąc, wieloplatformowość, ale zdolna do integracji (wzywania) specyfiki dla systemu operacyjnego, dobrze. To nie jest takie rzadkie. – KarolDepka

+0

Mam wrażenie, że pochyliłeś się nad czymś lepszym od kombinacji poleceń ruby ​​i powłoki, o której wspomniałeś: o to mi chodziło. Powiedziałem tylko, że prawdopodobnie nie znajdziesz czegoś lepszego. –

+0

Groovy jest dobry, ale powolne uruchamianie jvm powoduje, że java nie jest uruchamiany dla krótkich scenariuszy IMO. –

-1

Chciałbym używać C# z Mono.

+7

To wydaje mi się dziwnym wyborem do pisania scenariuszy. W bashu np. Wyświetlasz zawartość pliku z 'cat file.txt'; w groovy z 'println new File (" file.txt "). text': ile kodu (+ kompilacja) musiałbyś zrobić z C#? C# może być dobrym językiem ogólnego przeznaczenia, ale jedną z rzeczy, które nie radzi sobie dobrze jest obsługa skryptów. –

+2

Tylko w celach informacyjnych (bez sugerowania, że ​​C# jest dobre dla skryptów) w języku C#, należy napisać: File.ReadAllText ("file.txt") w środowisku repliki (zawartym w mono: http: //www.mono- project .com/CsharpRepl) – Cohen

4

Możesz pisać swoje skrypty w Tcl.

  • składnia jest prosta i bliżej czego można oczekiwać od skryptu;

  • jest wieloplatformowy i będzie działał na wszystkich głównych platformach;

  • można łatwo tworzyć proste GUI dla skryptów w Tk, który będzie również działać wszędzie i używać natywnych kontroli;

  • dla funkcji specyficznych dla systemu Windows, można użyć Twapi (Wiązania Win32 API ).

  • można zainstalować plik Tclkit, który jest pojedynczym plikiem, który jest całą dystrybucją Tcl.Nie ma długiego procesu instalacji lub ukrytych plików lub tajemniczych katalogów;

    • można łatwo umieścić Linux, Windows i Mac czas pracy na pojedynczym dysku flash więc zawsze masz tłumacza przydać, nawet jeśli nie jest to jedno zainstalowane lokalnie.
+1

Tcl również wygrywa, ponieważ można zainstalować Tclkit, który jest pojedynczym plikiem, który jest całą dystrybucją Tcl. Nie ma długiego procesu instalacji lub ukrytych plików lub tajemniczych katalogów. Co więcej, możesz łatwo umieścić środowisko uruchomieniowe Linux, Windows i Mac na jednym dysku flash, dzięki czemu zawsze będziesz mieć tłumacza pod ręką, nawet jeśli nie ma go zainstalowanego lokalnie. I, oczywiście, dla programowania GUI otrzymujesz natywne widżety. –

5

Perl i Python są zarówno dostępne na niemal każdej platformie

15

Jestem wielkim fanem Lua:

  • Składnia jest niejasno Pascal-jak i działa dobrze w skryptach .

  • Doskonały stosunek mocy do masy. Znakomita inżynieria. Bardzo dobry design.

  • Niezwykle przenośny do każdej platformy z kompilatorem ANSI C.

  • GUI wsparcie poprzez wxLua i inne oprawy

  • Niektóre wsparcie dla ukrywanie różnic OS w typowych zadań, na przykład, system plików Lua dodatek

  • systemu podstawowego i bibliotek są na tyle proste możesz zrozumieć, że korzystasz z tego, czego używasz, ale wciąż masz doskonałą dźwignię w porównaniu do basha/bat. Moc ekspresyjna jest porównywalna do Pythona lub Ruby.

  • Nie jesteś przytłoczony bibliotekami i frameworkami, co może być plusem lub minusem.

  • Istnieje doskonała książka: Roberto Ierusalimschy's Programming in Lua; możesz uzyskać previous edition free online.

  • Wydajność bije TCL, Perl, Python, Ruby

  • uzyskać jeszcze wyższą wydajność na sprzęcie x86, jest LuaJIT.

  • Wreszcie, i to jest asem w rękawie: jeżeli napotkasz jakiegokolwiek problemu platformy specyficzne, to łatwy napisać danej platformy kod C i załadować go do skryptu Lua dynamicznie. Lua została zaprojektowana z myślą o tym zadaniu i robi to bardzo dobrze. Możesz także łatwo zanurzyć się w C dla wydajności (np. Obliczyć sumę kontrolną MD5).

ciągu ostatnich 3 do 5 lat, zostały stopniowo migracji skryptów bash/ksh/awk/sed/grep/Perl w Lua. Byłem bardzo szczęśliwy, z wynikami.

0

Istnieje możliwość korzystania z platform UNIX i UNIX w powłoce, ale nie sądzę, że to, o co prosisz, jest możliwe w każdym języku skryptowym z powodu okien.

W systemach UNIX można użyć to:

#!/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 

Mam nadzieję, że to pomoże!

source

1

Nie jestem pewien, czy nadal go potrzebujemy, ale jeśli tak, spróbuj mrówka (http://ant.apache.org/). Jest to krzyżowy "język skryptowy". Zasadniczo plik ant to plik XML zinterpretowany przez program JVM.

6

można spróbować Batsh

Batsh jest prostym językiem programowania, który kompiluje do bash i Windows partii. Umożliwia napisanie skryptu po uruchomieniu na wszystkich platformach bez żadnej dodatkowej zależności.

Powiązane problemy