terça-feira, 10 de novembro de 2015

TAR COMANDOS Shell BaSH

O comando tar O comando tar é muito usado para comprimir arquivos no Linux. Por definição, as extensões de arquivos gerados são o tar.gz e o tar.bz2.; Arquivos com extensão .tar não são comprimidos; apenas listados e colocados em um mesmo arquivo. Abaixo alguns exemplos de uso do comando tar; que irá facilitar seu trabalho na hora de comprimir ou extrair arquivos no Linux. O comando tar é disponível por padrão na maioria das distros Linux; e não será preciso instalá-lo, separadamente. Para extrair arquivos compactados o tar.gz, execute no terminal: tar -xvzf arquivo.tar.gz extenção = gz = xvzf x - Extrai arquivos v - verbose, exibe o nome dos arquivos extraídos (um por um) z - O formato do arquivo é "gzip" (tar.gz) f - Use the following tar archive for the operation Agora, para extrair formato tar.bz2/bzip, execute no terminal: tar -xvjf arquivo.tar.bz2 extenção bz2 = xvjf Para extrair os arquivos, alterando seu destino; apenas especifique o parâmetro ‘C': tar -xvzf apot.tar.gz -C /home/edson/File o Diretório após -C precisa existir Para extrair apenas um arquivo, execute o comando tar informando o nome do  arquivo ao final do comando, como segue: tar -xz -f abc.tar.gz → arqiuivo ficara no diretório corrente Por exemplo, para filtrar arquivos com extensão “txt”. tar -xv -f abc.tar.gz –wildcards “*.txt” Ja vimos como se faz a descompressão agora vamos comprimir. tar -cvzf abc.tar.gz /home/meufile Para comprimir, um arquivo tar.bz2; ( backup) execute o comando: tar -cvjf abc.tar.bz2 ./home/Myfile Usando a opção‘w’. é pedido a confirmação para ser comprimido,. Os arquivos só serão comprimidos se houver a confirmaçãopositiva ('y'). $ tar -czw -f Joio.tar.gz Para adicionar um arquivo a outro já comprimido : tar -rv -zf Joio.tar Trigo.txt Só podem ser adicionados arquivos no formato .tar – sem compressão. O comando tar e muito usuado para Backup. Por exemplo: tar -cvz -f docs.tar.gz ./home/Myfile

segunda-feira, 9 de novembro de 2015

Split o comando shell split

Comandos SHELL BASH O comando split divide um arquivo em arquivos menores com base em um número especificado de linhas ou partes . Cada um destes arquivos menores são iguais em tamanho desde que a divisãop dos mesmo sejaa um numero inteiro, assim com excessão do ultimo que ficará com a sobra de linhas todos os demais terão o mesmo tamanho.. O arquivo original não é alterado pela separação. e todos os arquivos serão criados no diretório corrente. O comando split pode ser útil para dividir grandes arquivos de dados em arquivos menores, mais gerenciáveis.. No caminho oposto podemos cosntruir um arquivo a partir de fragmentos com o comando CAT.. Alguns comandos não tem capacidade para trabalhar com arquivos muito grandes; portanto, dividir o arquivo em partes menores para estes comandos e esssencial. O comando split lê a entrada de um arquivo ou a entrada padrão e cria vários arquivos de saída. Formato geral:     divisão [opção] [INPUT [PREFIX]] Cada arquivo pode conter qualquer quantidade fixa de partes (-b) ou linhas (-l). Em caso de bytes, poderá utilizar sufixo "k" e "m" em tamanho. TAMANHO pode ter um sufixo multiplicador: b para 512, k para 1K, m para 1 Meg. Se você fornecer o argumento prefixo, os arquivos de destino são nomeados prefixXX. Onde XX é aa para o primeiro arquivo, ab para o segundo, e continua até que o zz arquivo. Isso é um total de 676 arquivos você pode gerar se você dividir sua entrada em tamanhos pequenos o suficiente. Ao usar o prefixo, você deve usar um nome de dois caracteres menores do que o máximo permitido para nomes de arquivos. O comprimento máximo do nome do arquivo é 100; portanto, você deverá usar no maximo nomes de 98 caracteres para prefixo. Se um argumento prefixo não for especificado, os arquivos de destino são nomeados XXX. separação utiliza os X como um prefixo., geralmente xaa xab xac etc... O formato geral do comando SPLIT segue.      split [opções] [arquivo [prefixo] Opções Os argumentos obrigatórios para as opções longas são obrigatórios para opções curtas. -a, --suffix-N = comprimento     usar sufixos de comprimento N (padrão 2) -b, --bytes = TAMANHO     colocar TAMANHO bytes por ficheiro de saída -C, --line-Bytes = TAMANHO     colocar na maioria dos bytes tamanho do arquivo de saída linhas por -d, --numeric-sufixos     usar sufixos numéricos em vez de alfabéticos -l, --lines = NÚMERO     número de linhas colocadas por arquivo de saída --verbose     imprimir um diagnóstico para o erro padrão imediatamente antes de cada arquivo de saída é aberta --help     exibir esta ajuda e sai --version     informações de versão e sai TAMANHO pode ter um sufixo multiplicador: b para 512, k para 1K, m para 1 Meg.   Argumentos A lista a seguir descreve os argumentos que podem ser passados ​​para o comando de divisão. - Causas dividir a ler a partir da entrada padrão. file O nome do arquivo de divisão lê e se divide em n ou 1000 arquivos de linha. Se nenhum arquivo for dado na linha de comando, divisão irá ler da entrada padrão. O prefixo será a base para o nome de todos arquivos de saída. Uma extensão é adicionada como prefixo para cada arquivo criado. A extensão é constituído por dois caracteres alfabéticos. A primeira extensão do arquivo é "aa", depois "ab", e assim por diante até a entrada original está completamente dividido. Se o prefixo não for especificado, a saída é gravada em um arquivo com uma parte de base de "x" e as extensões normais. Assim, os nomes de arquivo de saída padrão são xaa, xab, e assim por diante. divisão coloca sua saída em arquivos com uma extensão de dois caracteres. Os personagens começam com "aa", o próximo arquivo é "ab", e assim por diante até que toda a entrada foi dividido e armazenado em vários arquivos. Exemplos Nesta atividade, você usa o comando de divisão para dividir a entrada padrão para arquivos de saída separados. Comece no prompt shell.      split -20 - /etc/passwd bustamancio@amancio:~$ split -20 /etc/passwd bustamancio@amancio:~$ ls Área de Trabalho Documentos Imagens Público Templates xaa Documento1.bak~ Downloads Música shellus Vídeos xab bustamancio@amancio:~$ Veja no exemplo acima foram criados dois arquivos um com 20 linhas xaa e o segundo xab com as linhas restantes. veja: bustamancio@amancio:~$ cat xab messagebus:x:102:106::/var/run/dbus:/bin/false usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false ntp:x:105:110::/home/ntp:/bin/false whoopsie:x:106:114::/nonexistent:/bin/false lightdm:x:107:115:Light Display Manager:/var/lib/lightdm:/bin/false bustamancio:x:1000:1000:Bustamancio,,,:/home/bustamancio:/bin/bash postfix:x:108:120::/var/spool/postfix:/bin/false bustamancio@amancio:~$ Para xab sobaram 8 linhas.           Trabalhando no mesmo arquivo, este próximo exemplo é mais complexo: vou dividir o arquivos epartes de oito linhas cada com o arquivo tem 28 linhas a saida gerara 4 arquivos de 8 linhas cada     split -l 8 /etc/passwd bustamancio@amancio:~$ split -l 8 /etc/passwd bustamancio@amancio:~$ ls Área de Trabalho Documentos Imagens Público Templates xaa xac Documento1.bak~ Downloads Música shellus Vídeos xab xad bustamancio@amancio:~$ Gerou xaa xab xac xad, cada um com oito linhas             Agora vamos fazer uma divisão por tamanho, suponha o arquivo tem mais de 12 gigas, e você precisa salvar em um DVD sabendo que só poderá ser gravado 4.5 em cada dvd,     split -b 4500m arqiuivo iso_segment Exemplo Vou dividir o aruivo Megacubo.exe 986,7 KiB (1.010.360 bytes) bustamancio@amancio:~/Downloads$ split -b 450000 Megacubo.exe bustamancio@amancio:~/Downloads$ ls apostila-introducao-shell.pdf Linux Shell Scripting Tutorial v2.0.pdf xab Incrementando_o_Shell_com_ER(1).pdf Megacubo.exe xac Incrementando_o_Shell_com_ER.pdf sistema-operacional-1-ano-de-informatica-completa.pdf LINUX.pdf xaa bustamancio@amancio:~/Downloads$ No exemplo acima forama criados dois arquivos de 450 kb e um de 86,7 kb. Em algumas situações se torna desejável a divisão de um arquivo em vários outros menores, aplicando-se alguma restrição. O comando split possibilita a divisão de um arquivo baseando-se no número de linhas ou número de bytes que cada arquivo novo deverá conter. Por exemplo: split -l 10 /etc/passwd Este comando criará vários arquivos denominados xaa, xab, xac, etc. Nem sempre estes nomes são os mais convenientes. Neste caso podemos, com o acréscimo de mais um parâmetro, determinar o sufixo do nome dos arquivos que serão criados: split -l 10 /etc/passwd pas- ls pas-aa pas-ab pas-ac pas-ad pas-ae pas-af pas-ag pas-ah Os arquivos criados passaram a conter o prefixo pas-, permitindo identificar mais claramente os contadores dos arquivos (aa, ab, ac, etc.) Além do particionamento em linhas, o comando split, quando invocado com a opção b, irá efetuar a divisão do arquivo baseando-se no número de bytes: split -b 32k /etc/passwd pas- ou então split -b 32 /etc/passwd pas- ou ainda split -b 32m /etc/passwd pas- No primeiro exemplo, o arquivo /etc/passwd será dividido em vários arquivos de 32kbytes cada um, ao passo que no segundo exemplo, o arquivo será dividido em arquivos de 32 bytes cada. No terceiro exemplo, o arquivo /etc/passwd é dividido em arquivos de 2MB cada (pouco provável :-) Um outro exemplo, para dividir um arquivo em vários para gravação em disquetes de 1.44, o comando split é uma das opções possíveis: # split -b 1400000 O comando split irá criar vários arquivos chamados xaa, xab, xac, etc. Para restaurá-los basta usar o comando cat, como abaixo: # cat x* > original_filenamete.

sábado, 7 de novembro de 2015

O Comando grep com vários exemplos.

O que é o grep, e como posso usá-lo?

Os utilitários grep são uma família de ferramentas do Unix, incluindo grep, egrep e fgrep, que executam tarefas repetitivas de pesquisa. As ferramentas da família grep são muito semelhantes, e todos são usados ​​para pesquisar o conteúdo dos arquivos para obter informações que correspondem a critérios específicos. Para a maioria dos fins, você vai preferir usar fgrep, uma vez que é geralmente o mais rápido.
A sintaxe geral dos comandos grep é:

grep [-options] padrão [arquivo]

Você pode usar fgrep para encontrar todas as linhas de um arquivo que contêm uma determinada palavra. Por exemplo, para listar todas as linhas de um arquivo denominado ArquivoBom no diretório atual que contêm a palavra "cão", digite no prompt do Unix:


fgrep cão ArquivoBom
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # grep cão ArquivoBom
Outras pessoas preferem um cão
Mais nenhum se parece com um cão

edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # cat ArquivoBom
Muitas pessoas preferem gatos
Outras pessoas preferem um cão
Existem muitos tipos de gatos
Mais nenhum se parece com um cão
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson #

Isso também irá retornar linhas onde "cão" é incorporado em palavras maiores, como "caozão" . Você pode usar a opção -w com o comando grep para retornar somente as linhas onde o "cão" está incluído como uma palavra separada:

grep -w cão myfile

Para procurar por várias palavras separadas por espaços, coloque toda a sequência de pesquisa entre aspas, por exemplo:

fgrep ArquivoBom "cão pessoas gato"

O comando fgrep é sensível a maiúsculas; especificando "cão" não corresponderá a "Cão" ou "CAo". Você pode usar a opção -i com o comando grep para combinar ambas as letras maiúsculas e minúsculas:

grep -i ArquivoBom cão

Para listar as linhas de ArquivoBom que não contêm "cão", use a opção -v:

fgrep -v cão ArquivoBom

Se você quiser procurar por linhas que contenham qualquer uma das várias palavras diferentes, você pode criar um segundo arquivo (nomeado secondfile no exemplo a seguir) que contém essas palavras e, em seguida, use a opção -f:

fgrep -f secondfile ArquivoBom

Você também pode usar curingas para instruir fgrep para procurar os arquivos que correspondem a um padrão particular. Por exemplo, se você quisesse encontrar linhas que contêm "cão" em qualquer um dos arquivos em seu diretório com nomes que começam com "meu", você pode digitar:

fgrep cão meu *

Este comando iria procurar arquivos com nomes como meucao, meugato, e meuamor no diretório atual. Cada linha retornado será antecedido com o nome do arquivo no qual a correspondência foi encontrada.
Usando pipes e / ou redirecionamento, você pode usar a saída de qualquer um desses comandos com outras ferramentas do Unix, como o mais, classificar e corte. Por exemplo, para imprimir a quarta palavra de cada linha de ArquivoBom contendo "cão", classificar as palavras em ordem alfabética, e depois filtrar a saída através do comando more para facilitar a leitura, você deve inserir no prompt do Unix:

fgrep ArquivoBom cão | cut -d -f5 "" | sort| more



edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # cat ArquivoBom
Muitas pessoas preferem gatos
Outras pessoas preferem um cão
Existem muitos tipos de gatos
Mais nenhum se parece com um cão
PEGANDO O QUINTO ELEMENTO
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # fgrep cão ArquivoBom | cut -d" " -f5 | sort| more
cão
com


PEGANDO O TERCEIRO ELEMENTO
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # fgrep cão ArquivoBom | cut -d" " -f3 | sort| more
preferem
se


PEGANDO O SEGUNDO ELEMENTO
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # fgrep cão ArquivoBom | cut -d" " -f2 | sort| more
nenhum
pessoas
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson #


Se você deseja salvar a saída em um arquivo no diretório atual chamado newfile, digite:
Redirecione com >

fgrep cão ArquivoBom | cortar -d “” -f3 | sort> newfile

Para mais informações sobre grep, egrep e fgrep, digite:

man grep

Dialogs com Zenity Shell Scripts

Hoje vamos falar sobre o Zenity:


Zenity e um programa cross-plataform que permite a execução de box GTK+ de dialogos
em linha de comando e scripts shell.
Assim como whiptail and dialog, zenity permite facilmente a criação de GUIs, embora tenha menos recursos do que as ferramentas de criação de GUI mais complexas: "
Outras linguagens de script como Perl e Python podem ser usadas para construir aplicações GUI em grande escala, mas o programa zenity permite que um script shell possa interagir com um usuário GUI, a interface do usuário não é muito refinada quanto uma que poderia ser fornecido por um aplicativo completo GUI, mas é perfeitamente adequada para interações simples ".

Uso Básico

Quando você pode usar Zenity em seus scripts para criar diálogos simples que interagem com o usuário graficamente, como segue:
Você pode criar um diálogo para obter informações do usuário. Por exemplo, você pode solicitar que o usuário selecionar uma data de um calendário de diálogo, ou para selecionar um arquivo a partir de uma janela de seleção de arquivos.
Você pode criar uma caixa de diálogo para fornecer ao usuário informações. Por exemplo, você pode usar uma caixa de diálogo de progresso para indicar o status atual de uma operação, ou utilize uma caixa de diálogo mensagem de aviso para alertar o usuário.
Quando o usuário fecha o diálogo, Zenity imprime o texto produzido pelo diálogo para a saída padrão.

Message Box

O Zenity pode criar quatro tipos de box de menssagens:

  • Erro
  • Informação
  • Questoes
  • Alertas
Para cada tipo , use a opção –text para expecificar o texto que sera exibido na caixa de dialogo.
Examples:
Abrindo uma caixa de pergunta.

zenity --questiontitle="Edson te ajundando a entender o zenity" --text "Você quer mesmo desligar”"







Dialog entry
Use a opção -Entry para criar um diálogo de entrada de texto. Zenity retorna o conteúdo da entrada de texto para a saída padrão, ou pode armazena-la em uma variavel e processa-la mais adiante.
A caixa de diálogo de entrada de texto compatível com as seguintes opções:
-text = text
Especifica o texto que é exibido na caixa de diálogo de entrada de texto.
-Entry-text = text
Especifica o texto que é exibido no campo de entrada da caixa de diálogo de entrada de texto.
-hide-text
Esconde o texto no campo de entrada da caixa de diálogo de entrada de texto.
Exemplo


zenity --entry --title="Login do Sistema" --text="Entre sua password:" --hide-text














Dialogo de progresso
Diálogo de progresso mostra a progressão de uma rotina.
Zenity lê dados de linha de entrada padrão . Se uma linha for prefixada com #, o texto é atualizado com o texto nessa linha. Se uma linha contém apenas um número, o percentual é atualizado com esse número.
O diálogo de progresso suporta as seguintes opções:
-text = text
Especifica o texto que é exibido na caixa de diálogo de progresso.
-percentage = Percentagem
Especifica a porcentagem inicial que está definido na caixa de diálogo de progresso.
-auto-Close
Fecha o diálogo progresso quando 100% tenha sido alcançado.
-pulsate Especifica que a barra de progresso pulsa até que um caractere EOF é lido a partir da entrada padrão.




Diálogo de seleção de arquivo
Diálogo de seleção de arquivo é uma das diálogo um diálogo zenity muito útil, suporte a arquivos abertos ou salvar o arquivo.
Use a opção -file-select para criar uma janela de seleção de arquivos. Zenity retorna os arquivos selecionados ou diretórios para a saída padrão. O modo padrão da caixa de diálogo de seleção de arquivo é aberto.
A caixa de diálogo de seleção de arquivo suporta as seguintes opções:
-filename = Filename
Especifica o arquivo ou pasta que está selecionado na caixa de diálogo de seleção de arquivos quando o diálogo é exibido pela primeira vez.
-multiple
Permite a seleção de vários nomes de arquivos na janela de seleção de arquivos.
-directory
Permite apenas a seleção de diretórios no diálogo de seleção de arquivo.
-save
Defina o diálogo de seleção de arquivo em modo de economia.
-separator = separator
Especifica a cadeia que é usada para dividir a lista retornada de nomes de arquivos.


#!/bin/bash

FILE=`zenity --file-selection --title="Select a File"`
case $? in
0)
echo ""$FILE" selected.";;
1)
echo "No file selected.";;
-1)edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # zenity  --list  --checklist  --column "Buy" --column "Item" TRUE Maçãs TRUE Laranjas FALSE Peras FALSE Cambuci FALSE Pitanga FALSE Araça >> ListaCompras.txt
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # cat ListaCompras.txt
Maçãs|Laranjas|Cambuci
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson #
echo "No file selected.";;
esac
done


Caixa de Shutdown
# diga ciao pro seu PC

#usando o zenity

zenity --question --title "Confirma o Desligamento" 
--text "Tem certeza"

if [ "$?" -eq "0" ]
then
        # Do shutdown at here.
        #Ubuntu probably needs gksudo instead of sudo
        sudo init 0;
fi















Google Chrome profile selector
Google Chrome profile manager usando o zenity para o profile input. Ponha isso num shell script e então use o path pra ele como o comando field no gnome/kde shortcut. Quando você começar você será promptado por profile para usar se deixar em branco sera mantido o profile padrão
Exemplo:

/opt/google/chrome/google-chrome --user-data-dir=$HOME/.config/google-chrome/`zenity 
--entry --text="Enter a profile name:"`








Outro grande exemplo encontrado no http://www.tildehash.com/?article=advanced-application-shortcuts-with-zenity
Este exemplo mostra um arquivo de diálogo de navegação a partir da qual você pode selecionar um arquivo para editar, então ele abre uma janela de caixa de texto onde você pode digitar ou colar texto, quando você clicar em "Fechar" outro diálogo de navegação de arquivos é exibida onde você pode selecionar o arquivo onde você gostaria de salvar as modificações, ele pode ser
      Display a weekly shopping list in a check list dialog with  Apples  and
       Oranges pre selected

              zenity  --list  --checklist  --column "Buy" --column "Item" TRUE
              Apples TRUE Oranges FALSE Pears FALSE Toothpaste
o arquivo original, um arquivo diferente, ou um arquivo inexistente.

#!/bin/bash
#Author tirado da WEB
zOpenPath="$(zenity --file-selection)"
if [ "$zOpenPath" != "" ]
then
zData=$(cat "$zOpenPath")
zNewData=$(echo -n "$zData" | zenity --text-info --editable --width 650 --height 400)
zSavePath=$(echo -n "$(zenity --file-selection --filename="$zOpenPath" --save --confirm-overwrite)")
echo -n "$zNewData" > "$zSavePath"
fi

done

 Exibindo uma caixa para seleção de itens redirecionando o resultado para um arquivo texto
      Maças e Laranjas estão preselecionadas = true
 zenity  --list  --checklist  --column "Buy" --column "Item" TRUE Maçãs TRUE Laranjas FALSE 
Peras FALSE Cambuci FALSE Pitanga FALSE Araça >> ListaCompras.txt




edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # zenity  --list  --checklist  --column "Buy" --column "Item"TRUE Maçãs TRUE Laranjas FALSE Peras FALSE Cambuci FALSE Pitanga FALSE Araça >> ListaCompras.txt

EXIBINDO O ARQUIVO listaCompras.txt
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # cat ListaCompras.txt
Maçãs|Laranjas|
edson-HP-Compaq-dx7400-Brazil-SFF-PC edson # 
Dialog options


       --calendar
              Display calendar dialog

       --entry
              Display text entry dialog

       --error
              Display error dialog

       --file-selection
              Display file selection dialog

       --info Display info dialog

       --list Display list dialog

       --notification
              Display notification icon

       --progress
              Display progress indication dialog

       --question
              Display question dialog

       --text-info
              Display text information dialog

       --warning
              Display warning dialog


       General options


       --title=TITLE
              Set the dialog title

       --window-icon=ICONPATH
              Set the window icon

       --width=WIDTH
              Set the dialog width

       --height=HEIGHT
              Set the dialog height

       Calendar options


       --text=STRING
              Set the dialog text

       --day=INT
              Set the calendar day

       --month=INT
              Set the calendar month

       --year=INT
              Set the calendar year

       --date-format=STRING
              Set the format for the returned date


       Text entry options


       --text=STRING
              Set the dialog text

       --entry-text=STRING
              Set the entry text

       --hide-text
              Hide the entry text


       Error options

       --text=STRING
              Set the dialog text


       File selection options

       --filename=FILENAME
              Set the filename

       --multiple
              Allow selection of multiple filenames in file selection dialog

       --separator=SEPARATOR
              Specify separator character when returning multiple filenames


       Info options

       --text=STRING
              Set the dialog text


       List options


       --text=STRING
              Set the dialog text

       --column=STRING
              Set the column header

       --checklist
              Use check boxes for first column

       --radiolist
              Use radio buttons for first column

       --separator=STRING
              Set output separator character

       --editable
              Allow changes to text

       --print-column=STRING
              Specify what column to print to standard output. The default  is
              to  return  the  first  column.  ’ALL’  may be used to print all
              columns.


       Notification options


       --text=STRING
              Set the notification text


       Progress options


       --text=STRING
              Set the dialog text

       --percentage=INT
              Set initial percentage

       --auto-close
              Close dialog when 100% has been reached

       --pulsate
              Pulsate progress bar

              Question options

       --text=STRING
              Set the dialog text


       Text options


       --filename=FILENAME
              Open file

       --editable
              Allow changes to text


       Warning options


       --text=STRING
              Set the dialog text


       Miscellaneous options


       -?, --help
              Show summary of options.

       --about
              Display an about dialog.

       --version
              Show version of program.


       Also the standard GTK+ options are accepted.



Megacubo par Linux e Wnidows - Assistir TV no Computador

                            MEGACUBO PARA LINUX Ola!! Neste  post vamos falar  um pouquinho sobre o  Megacubo, um tradicional programa ...