Post anterior, versão One-Liner Ruby

One liner é o nome que se dá pros programas ou expressões que usam somente uma única linha. A diversão está em realizar uma atividade relativamente complexa com uma única linha de código.

O blog oficial do time do Windows Powershell tem como slogan "Improving the world one-liner at a time". É uma clara referência aos One-Liners.

Segundo informações da Wikipédia, o termo One-Liner tem duas referências no livro The AWK Programming Language. Nele, o autor explica o nascimento do paradigma One-Liner com seu trabalho do dia-a-dia na administração de antigos sistemas Unix:

The 1977 version had only a few built-in variables and predefined functions. It was designed for writing short programs [...] Our model was that an invocation would be one or two lines long, typed in and used immediately. Defaults were chosen to match this style [...] We, being the authors, knew how the language was supposed to be used, and so we only wrote one-liners.

Bom, agora, meu one-liner para o problema do post anterior, sobre como colocar espaços ou caracteres em todas as linhas de um arquivo. A diferença, nesse caso, está no uso da linguagem Ruby para fazer isso:

ruby -e "File.open('_vimrc'){|fin| File.open('_vimrc2','w'){|fout| fin.readlines.collect{|lin| '  ' + lin}.each{|linout| fout.write linout} }}"

Eu mesmo não sei se está correta a classificação dessa linha como um One-Liner. Ou talvez o one-liner do post anterior não seja um. Minha dúvida está em poder ou não utilizar redirecionamento do shell, por exemplo. Nesse caso, o trabalho maior foi abrir dois arquivos em uma única linha. No entanto, se eu utilizar o próprio shell para abrir e fechar o arquivo, o script em Ruby pode ficar ainda menor.

Até logo,

Categorias dessa postagem: ,

Comentários

Guilherme Pereira : Ola Vinicius, andei verificando seu blog e gostaria de uma ajuda sua com o seguinte problema....Preciso criar um arquivo BATCH que copia arquivos de um servidor Linux para uma máquina com Windows, ligados por rede....

Desde já, agradeço sua ajuda [23/7/07 08:51 - link]

Guilherme Pereira : Esqueci de deixar meu mail para contato. Caso algum leitor do Blog tambem se interesse pelo problema, meu mail é

pereira.guilherme@yahoo.com.br [23/7/07 10:30 - link]

Vinicius Canto : Olá,

procure por um programa chamado scp. Você pode obtê-lo juntamente com o Putty, um ótimo cliente SSH para acessar servidores *nix em geral via SSH.

[]s,


Vinicius Canto
MVP Windows Server - Admin Frameworks [28/7/07 16:43 - link]