Eu tenho algumas tarefas simples de script de shell que eu quero fazer
Por exemplo: Selecionando um arquivo no diretório ativo de uma lista dos arquivos que correspondem a alguma expressão regular.
Eu sei que posso fazer esse tipo de coisa usando bash e grep padrão, mas seria bom poder hackear scripts rápidos que funcionem no Windows e Linux sem que eu tenha que memorizar uma pilha de programas de linha de comando e sinalizadores etc.
Tentei fazer isso, mas acabei ficando confuso sobre onde deveria obter informações, como uma referência ao diretório atual.
Portanto, a questão é quais partes das bibliotecas Ruby eu preciso saber para escrever scripts shell ruby?
Respostas:
Por padrão, você já tem acesso ao Dir e ao arquivo , que são bastante úteis por si só.
Também útil no stdlib é o FileUtils
O que é bem legal
fonte
Como os outros já disseram, sua primeira linha deve ser
E você também precisa torná-lo executável: (no shell)
Depois segue o código ruby. Se você abrir um arquivo
o arquivo é aberto no diretório atual que você obteria
pwd
no shell.O caminho para o seu script também é simples de obter. Com
$0
você, obtém o primeiro argumento do shell, que é o caminho relativo para o seu script. O caminho absoluto pode ser determinado assim:Para operações do sistema de arquivos, quase sempre uso o Pathname. Este é um invólucro para muitas das outras classes relacionadas ao sistema de arquivos. Também é útil: Dir, File ...
fonte
Aqui está algo importante que está faltando nas outras respostas: os parâmetros da linha de comando são expostos ao seu script de shell Ruby por meio da matriz ARGV (global).
Portanto, se você tivesse um script chamado my_shell_script:
... torná-lo executável (como outros já mencionaram):
E chame assim:
Você obteria isso:
Os argumentos funcionam bem com a expansão do nome do arquivo:
A maior parte disso funciona apenas no UNIX (Linux, Mac OS X), mas você pode fazer coisas semelhantes (embora menos convenientes) no Windows.
fonte
Há muitos bons conselhos aqui, então eu queria adicionar um pouquinho mais.
Os backticks (ou back-ticks) permitem fazer algumas coisas de script muito mais facilmente. Considerar
Se você tiver problemas para obter a saída dos backticks, o problema será o erro padrão, em vez de sair do padrão. Use este conselho
Os backticks fazem interpolação de string:
Você também pode entrar no Ruby . É um link para o meu blog, mas tem um link aqui, então está tudo bem :) Provavelmente existem coisas mais avançadas por aí sobre este tópico.
Como outras pessoas notaram, se você quer levar a sério, existe o Rush: não apenas como um substituto do shell (o que é um pouco doido demais para mim), mas também como uma biblioteca para seu uso em scripts e programas do shell.
No Mac, use Applescript dentro do Ruby para obter mais poder. Aqui está o meu
shell_here
script:fonte
Compre uma cópia do Everyday Scripting with Ruby . Tem muitas dicas úteis sobre como fazer os tipos de coisas que você deseja fazer.
fonte
Isso também pode ser útil: http://rush.heroku.com/
Eu não usei muito, mas parece bem legal
Do site:
fonte
digamos que você escreva seu
script.rb
script. colocar:como a primeira linha e faça um
chmod +x script.rb
fonte
Quando você deseja escrever scripts ruby mais complexos, essas ferramentas podem ajudar:
Por exemplo:
thor (uma estrutura de script)
gli (interface semelhante ao git)
metadona (para criar ferramentas simples)
Eles dão a você um começo rápido para escrever seus próprios scripts, especialmente o 'aplicativo de linha de comando'.
fonte
A resposta acima é interessante e muito útil ao usar Ruby como shell script. Para mim, eu não uso Ruby como minha linguagem diária e prefiro usar ruby apenas como controle de fluxo e ainda usar o bash para executar as tarefas.
Alguma função auxiliar pode ser usada para testar o resultado da execução
Com o helper, o script ruby pode ser semelhante ao bash:
fonte
"Como eu escrevo ruby" está um pouco além do escopo do SO.
Mas, para transformar esses scripts ruby em scripts executáveis, coloque isso como a primeira linha do seu script ruby:
Em seguida, torne o arquivo executável:
e você vai embora.
fonte
Coloque isso no início do seu script.rb
Em seguida, marque-o como executável:
fonte
A resposta do webmat é perfeita. Eu só quero te indicar uma adição. Se você precisar lidar muito com os parâmetros da linha de comando para seus scripts, use optparse . É simples e ajuda tremendamente.
fonte
Em ruby, a constante
__FILE__
sempre fornecerá o caminho do script que você está executando.No Linux,
/usr/bin/env
é seu amigo:No Windows, depende se os arquivos .rb estão ou não associados ao ruby. Se eles são:
Se não estiverem, você precisará chamar explicitamente o ruby, eu uso um arquivo .cmd intermediário:
my_script.cmd:
my_script.rb:
fonte