У меня есть несколько простых задач сценариев оболочки, которые я хочу сделать
Например: выбор файла в рабочем каталоге из списка файлов, соответствующих некоторому регулярному выражению.
Я знаю, что могу делать такие вещи, используя стандартные bash и grep, но было бы неплохо иметь возможность взламывать быстрые сценарии, которые будут работать в Windows и Linux, без необходимости запоминать кучу программ командной строки и флагов и т. Д.
Я попытался это сделать, но в итоге запутался в том, откуда мне брать информацию, такую как ссылка на текущий каталог
Итак, вопрос в том, какие части библиотек Ruby мне нужно знать, чтобы писать сценарии оболочки ruby?
Ответы:
По умолчанию у вас уже есть доступ к Dir и File , которые сами по себе довольно полезны.
Также полезным из stdlib является FileUtils
Что довольно мило
источник
Как уже говорили другие, ваша первая строка должна быть
И вы также должны сделать его исполняемым: (в оболочке)
Затем следует код рубина. Если вы откроете файл
файл открывается в текущем каталоге, с которым вы получите
pwd
в оболочке.Путь к вашему сценарию также прост. С ним
$0
вы получите первый аргумент оболочки, который является относительным путем к вашему скрипту. Абсолютный путь можно определить так:Для операций с файловой системой я почти всегда использую Pathname. Это оболочка для многих других классов, связанных с файловой системой. Также полезно: Dir, File ...
источник
Вот кое-что важное, чего не хватает в других ответах: параметры командной строки предоставляются вашему сценарию оболочки Ruby через массив ARGV (глобальный).
Итак, если у вас есть скрипт с именем my_shell_script:
... сделать его исполняемым (как уже упоминали другие):
И назовите это так:
Вы получите это:
Аргументы хорошо работают с расширением имени файла:
Большая часть этого работает только в UNIX (Linux, Mac OS X), но вы можете делать подобные (хотя и менее удобные) вещи в Windows.
источник
Здесь много полезных советов, поэтому я хотел бы добавить еще немного.
Обратные галочки (или обратные галочки) позволяют вам делать некоторые вещи сценариев намного проще. Рассматривать
Если вы столкнетесь с проблемами при получении выводов обратного тона, то все идет к стандартным ошибкам вместо стандартных. Используйте этот совет
Обратные галочки делают интерполяцию строк:
Вы также можете пускать трубку в Ruby . Это ссылка на мой блог, но здесь есть ссылки, так что все в порядке :) Возможно, в этой теме есть более продвинутые вещи.
Как отмечали другие люди, если вы хотите стать серьезным, есть Rush: не просто как замена оболочки (что для меня слишком сложно), но и как библиотека для использования в скриптах и программах оболочки.
На Mac используйте Applescript внутри Ruby для большей мощности. Вот мой
shell_here
сценарий:источник
Принесите себе копию Everyday Scripting с Ruby . В нем много полезных советов о том, как делать то, что вы хотите сделать.
источник
Это также может быть полезно: http://rush.heroku.com/
Я не использовал это много, но выглядит довольно круто
С сайта:
источник
допустим, вы пишете свой
script.rb
сценарий. ставить:в качестве первой строки и сделать
chmod +x script.rb
источник
Если вы хотите написать более сложные сценарии ruby, эти инструменты могут помочь:
Например:
thor (среда сценариев)
gli (git like interface)
метадон (для создания простых инструментов)
Они дают вам быстрый старт для написания ваших собственных скриптов, особенно «приложения командной строки».
источник
Приведенный выше ответ интересен и очень полезен при использовании Ruby в качестве сценария оболочки. Для меня я не использую Ruby в качестве своего повседневного языка, и я предпочитаю использовать ruby только для управления потоком и все еще использую bash для выполнения задач.
Некоторая вспомогательная функция может быть использована для проверки результатов выполнения.
С помощью помощника скрипт ruby может быть похож на bash:
источник
«Как мне написать ruby» немного выходит за рамки SO.
Но чтобы превратить эти скрипты ruby в исполняемые скрипты, поместите это в качестве первой строки вашего скрипта ruby:
Затем сделайте файл исполняемым:
и понеслось.
источник
Поместите это в начале вашего script.rb
Затем пометьте его как исполняемый:
источник
Ответ от webmat идеален. Я просто хочу указать вам на дополнение. Если вам приходится иметь дело с параметрами командной строки для ваших сценариев, вы должны использовать optparse . Это просто и очень помогает вам.
источник
В ruby константа
__FILE__
всегда будет указывать путь к скрипту, который вы запускаете.В Linux
/usr/bin/env
твой друг:В Windows это зависит от того, связаны ли файлы .rb с ruby. Если они:
Если это не так, вы должны явно вызывать для них ruby, я использую промежуточный файл .cmd:
my_script.cmd:
my_script.rb:
источник