Posts Tagged: Linux


30
jun 11

Personalizando o bash

Há dias eu ando criando coragem para modificar o prompt de comando do meu terminal.

O terminal, para quem não sabe, é aquela tela preta intimidadora, praticamente uma entidade do mundo antigo que faz piscar um cursor, aguardando por verbos arcanos. Sabendo conjuras apropriadas ele é dócil e prestativo.

Você poderá achar informações mais detalhadas no Bash Reference Manual e no Prompt HOW-TO.

As variáveis do prompt

O prompt de comando possui quatro variáveis, uma para cada finalidade. São elas:

  • PS1 é o prompt principal e tem como valor padrão ‘\s-\v\$ ‘
  • PS2 é o prompt utilizado nos comandos multi-linha, e tem como valor padrão ‘> ‘
  • PS3 é o prompt para o comando select, e tem como valor padrão ‘#? ‘
  • PS4 é o prompt utilizado quando executando com a opção -x (debug). Ele será repetido várias vezes para indicar os níveis de identação do código em execução. Tem como padrão o valor ‘+’
  • PROMPT_COMMAND é interpretado como comando antes de cada exibição do seu prompt primário (sabe, o $PS1)

Os parâmetros do prompt

Podemos colocar no prompt de comando uma série de valores para serem exibidos.

São eles:

  • \a aquele barulho irritante do terminal (quem usa meu Deus???) o caractere ASCII 7
  • \d a data no formato “dia da semana, mês e dia”, algo como “Tue May 26
  • \D{format} a data formatada no formato indicado (conforme strftime(3)). Caso não seja passado nada usa as configurações locais. Ambos { e } são obrigatórios
  • \e o caractere de escape ASCII (033)
  • \h o nome do host (até o primeiro .)
  • \H o nome completo do host
  • \j o número atual de tarefas sendo gerenciadas por este terminal
  • \l o nome do dispositivo do terminal do shell
  • \n nova linha
  • \r retorno de carro
  • \s o nome deste shell (o nome base em $0)
  • \t a hora atual no formato 24-hour HH:MM:SS
  • \T a hora atual no formato12-hour HH:MM:SS
  • \@ a hora atual no formato12-hour am/pm
  • \A a hora atual no formato24-hour HH:MM
  • \u o nome do usuário atual
  • \v a versão do bash
  • \V o release do bash, incluindo a versão e o patch level
  • \w o diretório atualmente selecionado, com o $HOME abreviado com um ~
  • \W o nome base do diretório atualmente selecionado, com o $HOME abreviado com um ~
  • \! o número deste comando no histórico de comandos (a.k.a. .bash_history)
  • \# o número de comando deste comando
  • \$ se o valor do UID é zero, um #, senão um $
  • \nnn o caractere respresentado pelo número octal nnn
  • \\ a própria ‘\’
  • \[ inicia uma seqüência de caracteres não imprimíveis (como cores e outros controles de terminal)
  • \] encerra uma seqüência de caracteres não imprimíveis

Ser monocromático é chique (bem, foi, nos anos 50)

Para adicionar cores você precisa adicionar seqüências escapadas no seu prompt.

Para começar você deve iniciar com o marcador de início, que é \e[ ou \[\033[, seguido pelo código da cor e encerrado com o caractere m.

Os códigos de cores são compostos por dois números. O primeiro indica se a cor será clara (0) ou escura (1) e o segundo é propriamente o código da cor.

São elas:

  • Sem cor 00m
  • Black 0;30
  • Dark Gray 1;30
  • Blue 0;34
  • Light Blue 1;34
  • Green 0;32
  • Light Green 1;32
  • Cyan 0;36
  • Light Cyan 1;36
  • Red 0;31
  • Light Red 1;31
  • Purple 0;35
  • Light Purple 1;35
  • Brown 0;33
  • Yellow 1;33
  • Light Gray 0;37
  • White 1;37

Para montar um código de cor é só fazer a composição. Digamos que estamos querendo o texto em verde escuro, a seqüência é \e[0;32m.

Para remover a configuração de cor lembre-se de usar \e[00m

Como testar o meu prompt até achar o ideal?

Antes de mais nada, para você ver o código do seu prompt atual é só digitar echo $PS1

Para ir testando o seu prompt é só digitar export PS1='my prompt escape codes here'

O lado bom é que se você realmente estragar com ele, ele voltará ao normal quando você abrir um novo terminal.

Quando você encontrar o prompt dos seus sonhos, edite (ou crie) o arquivo ~/.bash_profile e adicione a linha acima dentro do arquivo.

O meu terminal

Eu gosto de ter sempre à mão o caminho completo de onde estou no file system, com uma generosa linha para digitar meus comandos.

Para obter este efeito aqui ...

Meu Terminal

... eu uso este prompt aqui ...

export PS1='\n\[\033[0;36m\]\u@\h\[\033[00m\] :: \[\033[0;32m\]\w \[\033[01;33m\]\[\033[00m\]\n\$’

Uma última coisa

Eu também uso git de monte, e é bom saber em qual branch e se ele tem alterações pendentes ou não.

Mas isto mostro em outro post.


17
ago 10

Debian Day 2010

Dia 16 de agosto é internacionalmente o dia do Debian, uma das mais famosas distros de Linux.

No Brasil, a comemoração ganhou o nome de DebianDayBrasil2010 e acontecerá em diversas cidades.

Aqui em Curitiba, quem promove a comemoração é a FESP.

O evento ocorrerá na sede da faculdade, dia 21 de agosto, das 13h às 18h

Se puder, apareça por lá!


26
jul 10

Como instalar o git no windows?

Há coisas que poderiam ser simples em todos os lugares, e não só no linux.

Mas instalar o git no windows não é um bicho de sete cabeças (tem no máximo umas três) :)

Para windows você tem basicamente duas opções (outras para outros sistemas operacionais você pode pegar aqui):

Eu aqui vou utilizar o msysGit, que eu uso e gosto muito. Não que o Cygwin não seja bom. É meramente uma opção pessoal.

O primeiro passo

Como não podia deixar de ser, é fazer o download do git. Ele pode ser encontrado na página de downloads.

Eu recomendo a instalação do Git-1.7.0.2-preview20100309.exe por ser (até o presente momento) a versão estável mais atualizada.

Cuidado com as versões fullinstall que são para desenvolvimento e que para o uso do dia-a-dia trazem algumas complicações extras que talvez você não queira ter.

Uma delas é a necessidade do Perl estar instalado na máquina. Nada de mais, se você está interessado em ir além do arroz-com-feijão, vá fundo.

Após baixá-lo, vamos partir para a instalação.

A instalação do msysgit

O instalador, à boa moda windows, é basicamente next, next, finish, contudo você deve atentar para os seguintes detalhes:

As opções a serem instaladas

Aqui são dois pontos importantes a serem vistos:

Deixe ambos, o Bash e o GUI disponíveis no menu de contexto do explorer do windows.

Com o bash você poderá interagir com o git em linha de comando, podendo usar alguns comandos do linux como grep, ls, entre outros.

Deixando o GUI disponível, com um clique você poderá invocar a interface gráfica para te proteger da tão temida linha de comando. :)

A escolha do SSH

Utilize de preferência o SSH que vem junto com o msysGit.

Ele é mais compatível com o SSH do linux, e na hora que algo der errado, a documentação disponível para consulta é muito maior.

Tive algumas experiências frustradas com as chaves e o SSH do puTTY. Se você sabe usá-lo bem, estou aceitando uma aula.

Escolhendo como vai ser a linha de comando

O git traz consigo uma série de aplicativos do mundo unix, que são importantes para o seu correto funcionamento.

Eu prefiro optar por deixar o git somente disponível no seu shell para evitar que coisas do mundo windows e coisas do mundo linux começem a se misturar.

Convenção das quebras de linha

Malditos sejam, não os padrões, mas a miríade deles.

O git pode servir de conversor trocando sempre as quebras de linha pelo padrão que você escolheu e outro qualquer.

Por mim, ele que somente se atenha a versionar, e bem, para isso deixo selecionado que ele não deve interferir nas quebras de linha.

Após tudo instalado, onde acho meu git?


Selecione qualquer pasta e clique com o botão direito e devem aparecer as opções de consumo do git (bash ou gui)


25
jul 10

Como instalar o git no ubuntu?

Existem poucas coisas mais simples do que instalar o git no Ubuntu.

Para instalar o git no Ubuntu tudo que você precisa é da seguinte linha de comando:

sudo apt-get install git-core git-doc git-gui gitk

Após o apt-get fazer toda sua mágica você digitando o comando

git --version

Você deve ver uma mensagem como

git version 1.7.0.4

25
jul 10

O que é um sudoer?

Antigamente (leia-se muito antigamente) a gente logava em nossas caixas linux diretamente como root para as tarefas administrativas (alguns sequer tinham outro usuário além do root).

Esse comportamento expunha o sistema a uma série de riscos, visto que o root não conhece limites de poder e autoridade.

Tem uma história (verídica) de um rapaz que administrava um sistema linux e veio correndo perguntar para uns colegas como que fazia para restaurar o diretório /bin que ele acidentalmente apagou com um rm -f.

Não preciso nem falar que o rapaz estava no modo camaleão psicodélico, pois o rosto de trocava de cor a cada 15 segundos. Quando falaram que só restaurando o backup, àquele que por sinal ele não tinha, ele finalmente assumiu uma cor cadavérica.

Deve ser de situações como esta que surgiu a grande máxima do linux na atualidade

Amigos não deixam amigos entrarem como root.

OK, mas as tarefas administrativas estão ai. Como resolver então? Dando ao usuário uma forma de rodar um processo momentâneamente com todo o esplendor e glória do root.

Mas para isto o usuário precisa ser um sudoer.

Um sudoer é um usuário que pode momentâneamente ganhar privilégios administrativos para efetuar algumas tarefas.

É o mesmo conceito adotado desde o Windows Vista, quando ele abre aquela janela pedindo sua confirmação para efetuar algo com privilégios administrativos. É o linux doando bons conceitos para todos.

Mas como adicionar um usuário à lista de sudoers? É só clicar e ver.


25
jul 10

Como adicionar um usuário a lista de sudoers no linux?

Para que o usuário possa iniciar processos como se fosse o root, ele precisa estar na lista de sudoers.

Para adicionar um usuário nesta lista utilizamos o comando visudo.

Em um prompt de comando digite o comando abixo:

sudo visudo

Isto abrirá um arquivo para edição, onde você deverá conceder este privilégio para o usuário procure pela seguinte linha:

root ALL=(ALL) ALL

Logo abaixo dela adicione o usuário com uma linha como esta:

usuário ALL=(ALL) ALL

Sendo que usuário é o nome do usuário que passa a contar com a permissão para dar sudo.

Aqui tem uma tela que mostra eu me dando o privilégio de ser um sudoer:

Para encerrar, após editar pressione ^X e então Y.

Job done!


25
jul 10

Como instalar o SSH server no Ubuntu?

O serviço SSH permite que você efetue conexões seguras com uma máquina linux sem que exista o perigo de interceptação de informações como pode ocorrer quando usando um serviço telnet.

Instalar um servidor ssh é fácil. Basta digitar no prompt do console:

sudo apt-get install openssh-server openssh-client

Isto instalará ambos, o servidor e o cliente. Você pode ver qual versão está instalada digitando:

ssh -V

Algumas coisas importantes para se saber:

Os arquivos de configuração ficam em /etc/ssh

  • Arquivo de configuração do cliente:
    /etc/ssh/ssh_config
  • Arquivo de configuração do servidor:
  • /etc/ssh/sshd_config

E ainda…

O script de serviço é o

 /etc/init.d/ssh
  • Para iniciar o servidor:
  • sudo /etc/init.d/ssh start
  • Para parar o servidor:
  • sudo /etc/init.d/ssh stop
  • Para reiniciar o servidor:
  • sudo /etc/init.d/ssh restart
  • Para verificar o estado do servidor:
  • /etc/init.d/ssh status

Um último comentário:

Sempre que quiser chamar o script de serviço, que interage como  sshd, utilize o caminho completo até ele, pois o cliente do serviço também se chama ssh e ele aparece no path antes, o que fará com que ele sempre seja chamado primeiro.

Me toquei disto depois de muitas vezes receber uma resposta não esprada para um comando ssh restart.


18
jul 10

Qual a melhor forma de criar a API da minha aplicação web?

É usar ao máximo os padrões. Você pode inventar, mas quanto mais comum for a tecnologia escolhida, mais conectável você vai ser,

Uma das características que eu mais acho fascinante no mundo web é a possibilidade de aplicações criadas em qualquer ambiente se comunicar com quaisquer outras. Isto é fantástico.

Tem muita gente que acha que para ser um aplicativo web só precisa estar na nevem e rodar em um browser. Ledo engano.

Tem muito site por ai que para mim ainda está na era do stand alone, sendo que ao invés de estar sendo executado local, roda em um servidor remoto, mas só isso.

A facilidade de conectividade do e para o aplicativo está na lista das maiores qualidades de um software da era da web.

É algo lindo de ver, e que eu sequer sonhava que existiriam enquanto ficava lá esperando 30 minutos até meu compilador Clipper Summer’86 gerar minhas poderosas aplicações… tadinhas delas.

Um bom aplicativo tem de permitir que qualquer outro possa se conectar nele e interagir com suas regras de negócio, mais ainda, as regras internas do aplicativo podem inclusive chamar um convidado externo para resolver algo que elas não vão resolver.

Recentemente vi um tweet do Fred indicando um post meio antigo, de 2008, chamado Brincando com a API do twitter. Nele o Élcio mostra como você pode criar um script em shell no linux para twittar da linha de comando.

Com o cURL para Windows e um pouco de criatividade, dá para fazer o mesmo em arquivo de lote.

Não só o Twitter tem uma boa API, mas quase todos os serviços maiores da web também possuem.

Porque você acha que eles crescem tanto? Porque são acessíveis para quaisquer consumidores, e deixam que muitos façam softwares para ele.

Eu sou um exemplo. Nunca usei o Twiter, até que encontrei o Chromed Bird. Agora como o Twitter está sempre à mão ali na barra de ferramentas do meu Google Chrome, acabo twittando o dia todo, e ele verdadeiramente me serve como meio dinâmico de comunicação.

Agora falando sobre a arquitetura destas API’s, a grande maioria delas utiliza somente requisições http, podendo sobre elas criar um padrão RESTfull. É a reinveção do PUT/GET/POST/DELETE :)

O bacana seguir um padrão que é realmente web é que você ao prover o serviço sabe que se você enviar uma resposta 307 o cliente irá entender e fazer nova consulta no endereço que você indicou.

Praticamente tudo dos meios já existe e é amplamente suportado. Cabe a você criar a aplicação :)

Importante: a API do Twitter em 16 de agosto de 2010 passará a exigir outra forma de autenticação, data da qual os exemplos do post do Élcio vão parar de fucionar.