« Desenvolvimento remoto e opensource | Home | Gravar imagem iso no mac os »

May 18, 2010

Em busca do Shell perfeito

Shell:  Original (1 of 3)

Image by cobalt123 via Flickr

Há algum tempo atrás no meu antigo blog, na época do fre.eti.br eu fiz alguns posts entitulados "em busca da distro perfeita", que era um frankstein de varias distros que existiam na época.  Passado quase 3 anos no desktop eu uso mac os e ele é o mais proximo do que eu tinha descrito.  Mas ainda tem um grande buraco que é quando eu uso o console, shell iterativo. 

O shell iterativo padrão das distros e dos unix em geral é muito cru, as unicas boas excessões que eu lembrom era o zsh do GoboLinux e o bash do archlinux.  Mesmo assim elas eram mais ou menos o que os principais desenvolvedores das distros gostavam e não o que eu queria :). Depois de alguns test-drives puramente subjetivos eu escolhi o zsh como padrão pessoal. No fundo no fundo o que eu quero não existe mas o zsh é o que se mostrou mais proximo do que eu queria e também pareceu o mais facil de configurar no que eu queria.

Ok, zsh é o meu padrão, cool, e agora, o que eu quero exatamente?

Primeiro um prompt legal, que mostre onde eu estou, e se eu estiver usando git mostre o branch, e eventualmente outra informação.  Nesse sentido eu copiei e colei de varios "ponto zsh" que eu vi por ai e cheguei nessa coisa joiada e melosa:

Screen shot 2010-05-18 at 11.34.17 AM.png

Ela mostra meu usuario, o host, o diretorio atual, o resultado do ultimo comando, e o git branch que eu estou atualmente.  Tem mais coisas que eu gostaria de adicionar mas por hora isso está ok. 

Depois eu realmente uso muito cd, e também digito um bocado e evito atalhos mneumonicos, como colocar na variavel $work um diretorio ou arquivo aleatorio. Isso porque eu uso muito o history e gosto dele bem claro. No caso cd  ~/Code/zsh_config  é muito mais claro que cd $zsh_work ou etc.

Nesse sentido eu uso uma variavel chamada cdpath. ela basicamente contem alguns diretorios para a busca padrão do cd, assim com:

cdpath=~/Code 

Sempre que eu digitar cd<tab>, o meu amado diretorio de codigos fontes estarão la.

Isso na verdade é só o começo, ainda na todo list tenho preprocessamento e postprocessamento do comando. Gostaria que quando eu digitasse cd Module::Build ele caisse no diretorio do modulo perl correspondente. E que o resultado de alguns comandos especificos fossem parseados diretamente.  Como em:

>comando bla:
foo bar bla bla

>comando2 $1 $3

Fosse traduzido como 'comando2 foo bla'.   Eventualmente talvez já exista algo pronto mas eu não descobri como fazer ainda. Antes que alguem fale do xargs, ele não é exatamente o que eu quero, pos eu gostaria que fosse magico, sem precisar explicitar o comando xargs.


Reblog this post [with Zemanta]

No TrackBacks

TrackBack URL: http://fred.eti.br/engine/mt-tb.cgi/489

Leave a comment