Bash ‘must know’ tips
July 13, 2010, 1:08 am
Filed under: nerd, open source

Usually I read a lot of bash tips, codes, snippets, but some tips are hard to find, let see 2 tips:

Read Line

The ideia is, read each line of a file using bash, some people use terrible ways to do this job.

Bash has a simple way, $(< filename)

echo $(< file.txt)

Apparently the command did’n work, but the fact’s, the command worked, but printed line by line without ‘\n’.

This for show how to work with each line.

for i in $(<file); do echo $i; done

Rename only the extension

This is simple, some tasks need a in file and a out file, the two files can be different, if we need a ‘for’ we need create a good number of files.

Instead of create something like foo.txt and foo.txt.xml, you can create one foo.xml.

Let’s use ${//}  to improve your  work.

$variable =
echo ${variable/foo/bar}

Inside a for, is awesome:

for i in */*.xml; do xml2xsd $i ${i/xml/xsd}; done


Como utilizar o Mascaramento de pacotes para descobrir as causas de um downgrade.
August 25, 2008, 12:33 am
Filed under: gentoo, gentoobr, nerd, open source

Uma das coisas mais comuns no uso do gentoo, principalmente quando mistura pacotes estáveis, testings e unstables (como eu costumo fazer), é o downgrade de algum pacote para alguma versão anterior sem uma razão aparente, como o downgrade de uma versão estável para uma antiga versão.

Isso ocorreu comigo quando fui realizar um emerge -NDuav word:

hellboy ~ # emerge -NDuav world

These are the packages that would be merged, in order:

Calculating world dependencies... done!
[ebuild     UD] dev-util/bzr-1.1 [1.5] USE="bash-completion -curl -emacs -sftp -test" 3,346 kB
[ebuild     U ] app-text/poppler-0.8.6 [0.8.5] USE="jpeg zlib -cjk" 1,435 kB
[ebuild     U ] app-text/poppler-bindings-0.8.6 [0.8.5] USE="cairo gtk -qt3 -qt4 -test" 0 kB

Total: 3 packages (2 upgrades, 1 downgrade), Size of downloads: 4,781 kB

Would you like to merge these packages? [Yes/No]

Vejam o caso do bazaar (dev-util/bzr), mas acontece que a versão 1.5 é uma versão estável como aponta o eix:

hellboy ~ # eix dev-util/bzr
[I] dev-util/bzr
Available versions:  0.17 1.1 ~1.3 ~1.4 1.5 [M]~1.6_rc5 {bash-completion curl emacs sftp test}
Installed versions:  1.5(07:43:31 PM 08/23/2008)(bash-completion -curl -emacs -sftp -test)
Description:         Bazaar is a next generation distributed version control system.

A razão deste comportamento é sempre por causa de algum pacote já instalado ou que vai ser instalado, eu acho que a maneira abaixo a mais simples para descobrir qual o pacote esta forçando o downgrade.

Primeiro eu mascaro o todas as versões abaixo da versão já instalada do programa que esta sendo forçado o downgrade, no caso, todas as versões do bazaar abaixo do 1.5.

sudo echo '<=dev-util/bzr-1.4' >> /etc/portage/package.mask

Feito isso, refaço o comando que originou o pedido de downgrade e vejo o resultado:

hellboy ~ # emerge -NDuav world

These are the packages that would be merged, in order:

Calculating world dependencies /
!!! All ebuilds that could satisfy "=dev-util/bzr-1.1*" have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-util/bzr-1.1 (masked by: package.mask)

For more information, see MASKED PACKAGES section in the emerge man page or
refer to the Gentoo Handbook.
(dependency required by "dev-util/bzrtools-1.1.0" [installed])

!!! Problem resolving dependencies for dev-util/bzrtools
!!! Depgraph creation failed.

Dai eu observo que o responsável pelo downgrade é o pacote dev-util/bzrtools, que consta com todas as versões consideradas como instáveis:

hellboy ~ # eix bzrtools
[I] dev-util/bzrtools
Available versions:  ~0.17.1 (~)1.1.0 ~1.3.0 ~1.4.0 ~1.5.0
Installed versions:  1.1.0(02:34:38 AM 02/06/2008)
Description:         bzrtools is a useful collection of utilities for bzr.

Como é um caso de pacotes instáveis, uma maneira seria apagar o pacote instável ou utilizar a keyword, como eu estou querendo aprender mais do bazaar, prefiro arriscar utilizar o pacote instável.

sudo echo '=dev-util/bzrtools-1.5.0 ~*' >> /etc/portage/package.keywords

Com isso elimino a fonte do downgrade e refaço o meu comando sem medo de downgrades :-D.

hellboy ~ # emerge -NDuav world

These are the packages that would be merged, in order:

Calculating world dependencies... done!
[ebuild     U ] dev-util/bzrtools-1.5.0 [1.1.0] 82 kB
[ebuild     U ] app-text/poppler-0.8.6 [0.8.5] USE="jpeg zlib -cjk" 1,435 kB
[ebuild     U ] app-text/poppler-bindings-0.8.6 [0.8.5] USE="cairo gtk -qt3 -qt4 -test" 0 kB

Total: 3 packages (3 upgrades), Size of downloads: 1,517 kB

Would you like to merge these packages? [Yes/No]


batch scanning
April 21, 2008, 4:03 pm
Filed under: nerd, open source

As vezes é necessário copiar uma quantidade bizarra de arquivos, uma maneira simples de colocar em batch esta tarefa.

 1 #!/bin/bash
 3 device="hpaio:/usb/Photosmart_C3100_series?serial=BR73NGQ13X04KV";
 5 while true;
 7     do if [[ -a stop_file ]];
 8         then break ;
 9     fi;
11     echo "scanning" ;
12     name=`date +%s` ;
13     scanimage -d $device -p >$name.pnm;
15     convert $name.pnm $name.jpg;
16     rm $name.pnm;
18     echo "sleeping" ;
19     sleep 10s;
21     do if [[ -a stop_file ]];
22         then break ;
23     fi;
25 done

gtk and cedilla, a big brazillian problem
November 4, 2007, 4:00 pm
Filed under: gnome, open source

One of the mostly annoying thinks about gtk is ‘ç’, especially when you are a Portuguese speaker and use US keyboard + gtk, this is because someone on the past made this choice

at us-intl keyboards, acute+c = ć

I’m not arguing against Polish, Bosnian, Croatian or Serbian, but is a stupid choice when we compare the use of ç in the Latin World (Brazil, France, Spain, Portugal, etc) , even English has some ç.

My way to solve that is simple.

diff gtk.immodules.old /etc/gtk-2.0/gtk.immodules

< "cedilla" "Cedilla" "gtk+" "/usr/share/locale"
> "cedilla" "Cedilla" "gtk+" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"

I hope that, some day, someone will fix that or put at the gtk ebuild a flag like us_latin_cedilla

180 millions of Brazilians will  love it.

Gentoo Tools
April 19, 2007, 5:28 pm
Filed under: gentoo, open source

Gentoo is know as a hard linux distribution, in fact, only the installation is a hard process, everything else is just a piece of cake.

Ok, it’s not easy as ubuntu, but with the right tools, everyone can make magic.

IMHO, no one can have all Gentoo experience without:

  1. equery (useful when you need information, as USE flags, depends, package contents, etc)
  2. eix ( excellent search packages program )
  3. euse (USE flags )
  4. revdep-rebuild (after an emerge -NDuav world, to fix broken packages)
  5. module-rebuild rebuild -X ( after an kernel update, rebuild old modules to fit with your new kernel)

Equery, euse and revdep-rebuild are part of gentoolkit ( emerge gentoolkit), eix and module-rebuild have their own package.

And, of course, vim for everything else 😛

using zenity with emerge
April 3, 2007, 6:48 pm
Filed under: gentoo, open source

Zenity is a great tool, it creates a gtk dialog box using shell commands.

The following line shows how you can make a emerge without worry waiting for a terminal response.

emerge -NDupv world >/tmp/newpackage && zenity --text-info --filename=/tmp/newpackage && zenity --question --text="emerge?" && emerge -NDuv world

FISL 8.0
March 19, 2007, 1:20 am
Filed under: open source

Less than 25 days.