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
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.
Chciałbym używać C# z Mono.
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. –
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
Np. Ruby jazdy niektórych oknach specyficzne rzeczy
It certainly can i na blogu Ruby on Windows można znaleźć wiele przykładów także istnieje rozdział w książce kilof i w jednym humble.
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.
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. –
Perl i Python są zarówno dostępne na niemal każdej platformie
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.
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!
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.
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.
- 1. Emulator Windows Mobile dla systemu Linux
- 2. 256 trybów kolorystycznych xterm dla MacOS X
- 3. Udostępniane dane dla systemu Linux i Mac OS X
- 4. Wykrywanie systemu Windows lub Linux?
- 5. Alternatywa TextMate dla systemu Linux
- 6. Emulator BlueStacks dla systemu Linux?
- 7. syslog_r dla systemu Linux?
- 8. Perfmon-like dla systemu Linux?
- 9. Linux/Mac OS X odpowiedników dla Windows Communication Foundation
- 10. Polecenie Synchronizacja systemu plików dla systemu Windows
- 11. Kompilacja krzyżowa biblioteki statycznej z systemu Linux dla Windows
- 12. DLL systemu Windows na Linux System
- 13. Interpreter JavaScript dla systemu Linux
- 14. HeapCreate, HeapAlloc w systemie Linux, prywatny przydział dla systemu Linux
- 15. Okna Beep() odpowiednik dla systemu Linux
- 16. Odpowiednik Dependency Walker dla systemu Linux?
- 17. Systrace dla systemu Windows
- 18. Regex.h dla systemu Windows
- 19. ldconfig dla systemu Mac OS X
- 20. błąd polecenia SED na MacOS X
- 21. Co byłoby getDesktopProperty() dla systemu Linux?
- 22. (międzyplatformowe) Programowanie 3D za pomocą C# (mono)
- 23. D-Bus odpowiednik dla systemu Windows
- 24. Czy Node.js dla systemu Windows jest gotowe?
- 25. Co to jest odpowiednik systemu Cygwin/Windows dla systemu Linux "notify-send
- 26. Uzyskiwanie rozmiaru terminala wc dla systemu Windows?
- 27. odpowiednik systemu Windows inet_aton
- 28. Uczenie się i tworzenie międzyplatformowe (C++)
- 29. Jak zbudować aplikację SystemTray dla systemu Windows?
- 30. Język skryptowy dla systemu Windows?
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
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. –
Groovy jest dobry, ale powolne uruchamianie jvm powoduje, że java nie jest uruchamiany dla krótkich scenariuszy IMO. –