Mam kilka prostych zadań związanych ze skryptami powłoki, które chcę wykonać
Na przykład: Wybór pliku w katalogu roboczym z listy plików pasujących do jakiegoś wyrażenia regularnego.
Wiem, że mogę robić tego typu rzeczy używając standardowego basha i grepa, ale byłoby miło móc zhakować szybkie skrypty, które będą działać w systemie Windows i Linux bez konieczności zapamiętywania stosu programów wiersza poleceń i flag itp.
Próbowałem to osiągnąć, ale w końcu pomyliłem się, gdzie powinienem znaleźć informacje, takie jak odniesienie do bieżącego katalogu
Zatem pytanie brzmi, jakie części bibliotek Ruby muszę wiedzieć, aby pisać skrypty powłoki Ruby?
Odpowiedzi:
Domyślnie masz już dostęp do katalogu i pliku , które same w sobie są całkiem przydatne.
Przydatne ze standardowej biblioteki jest również FileUtils
Co jest całkiem miłe
źródło
Jak już powiedzieli inni, twoja pierwsza linia powinna być
Musisz także uczynić go wykonywalnym: (w powłoce)
Następnie następuje kod ruby. Jeśli otworzysz plik
plik jest otwierany w bieżącym katalogu, który otrzymałeś
pwd
w powłoce.Ścieżka do skryptu jest również łatwa do zdobycia. Otrzymasz
$0
pierwszy argument powłoki, który jest względną ścieżką do twojego skryptu. Ścieżkę bezwzględną można określić w następujący sposób:Do operacji na systemie plików prawie zawsze używam Pathname. Jest to opakowanie dla wielu innych klas związanych z systemem plików. Przydatne również: Dir, File ...
źródło
Oto coś ważnego, czego brakuje w innych odpowiedziach: parametry wiersza poleceń są widoczne dla twojego skryptu powłoki Ruby poprzez tablicę ARGV (globalną).
Więc jeśli masz skrypt o nazwie my_shell_script:
... uczyń go wykonywalnym (jak wspominali inni):
I nazwij to tak:
Otrzymasz to:
Argumenty działają dobrze z rozwijaniem nazw plików:
Większość z nich działa tylko w systemie UNIX (Linux, Mac OS X), ale możesz zrobić podobne (choć mniej wygodne) rzeczy w systemie Windows.
źródło
Jest tu wiele dobrych rad, więc chciałem dodać trochę więcej.
Backticks (lub back-ticks) pozwalają znacznie łatwiej wykonać pewne czynności związane ze skryptami. Rozważać
Jeśli napotkasz problemy z pobieraniem danych wyjściowych z odwrotnych znaków, zawartość zostanie zwrócona do standardowego błędu zamiast standardowego wyjścia. Skorzystaj z tej rady
Backticks wykonują interpolację ciągów:
Możesz też potokować wewnątrz Rubiego . Jest to link do mojego bloga, ale prowadzi z powrotem tutaj, więc jest w porządku :) Prawdopodobnie są tam bardziej zaawansowane rzeczy na ten temat.
Jak zauważyli inni, jeśli chcesz podejść na poważnie, jest Rush: nie tylko jako zamiennik powłoki (co jest dla mnie trochę zbyt szalone), ale także jako biblioteka do użytku w skryptach powłoki i programach.
Na Macu użyj Applescript w Rubim, aby uzyskać więcej mocy. Oto mój
shell_here
skrypt:źródło
Zdobądź kopię Everyday Scripting with Ruby . Zawiera wiele przydatnych wskazówek, jak robić rzeczy, które chcesz robić.
źródło
Może to być również pomocne: http://rush.heroku.com/
Nie używałem go zbyt często, ale wygląda całkiem fajnie
Ze strony:
źródło
powiedzmy, że piszesz swój
script.rb
scenariusz. położyć:jako pierwszą linię i wykonaj
chmod +x script.rb
źródło
Jeśli chcesz pisać bardziej złożone skrypty ruby, pomocne mogą być te narzędzia:
Na przykład:
thor (framework skryptowy)
gli (interfejs podobny do git)
metadon (do tworzenia prostych narzędzi)
Umożliwiają one szybkie rozpoczęcie pisania własnych skryptów, zwłaszcza „aplikacji wiersza poleceń”.
źródło
Powyższa odpowiedź jest interesująca i bardzo pomocna podczas używania Rubiego jako skryptu powłoki. Dla mnie nie używam Ruby jako mojego codziennego języka i wolę używać Ruby tylko jako kontroli przepływu i nadal używam basha do wykonywania zadań.
Do testowania wyniku wykonania można użyć funkcji pomocniczych
Z pomocnikiem skrypt ruby mógłby być podobny do basha:
źródło
„Jak napisać ruby” jest trochę poza zakresem SO.
Ale aby zamienić te skrypty ruby w skrypty wykonywalne, umieść to jako pierwszą linię skryptu ruby:
Następnie ustaw plik wykonywalny:
i odejdź.
źródło
Umieść to na początku swojego script.rb
Następnie oznacz go jako wykonywalny:
źródło
Odpowiedź dostarczona przez webmat jest doskonała. Chcę tylko wskazać dodatek. Jeśli masz dużo do czynienia z parametrami wiersza poleceń dla swoich skryptów, powinieneś użyć optparse . Jest to proste i niezwykle pomocne.
źródło
W ruby, stała
__FILE__
zawsze podaje ścieżkę do uruchomionego skryptu.W Linuksie
/usr/bin/env
jest twoim przyjacielem:W systemie Windows zależy to od tego, czy pliki .rb są powiązane z ruby. Jeśli są:
Jeśli tak nie jest, musisz jawnie wywołać na nich ruby, używam pośredniego pliku .cmd:
my_script.cmd:
my_script.rb:
źródło