Vamos usar o Shell do Ubuntu Linux ?

JUNTE-SE A MAIS DE 110.000 PESSOAS QUE JÁ TEM UMA CÓPIA

Ubuntu: Iniciando com Linux de maneira prática e rápida

Compartilhe este post

Share on facebook
Share on linkedin
Share on twitter
Share on email

O uso de um interpretador de comandos shell (normalmente chamado apenas shell ) nos retorna aos primórdios dos primeiros sistemas Unix. O shell vai muito alem da execução de comandos, características tais como as variáveis de ambiente, aliases e uma ampla variedade de funções para programação.

Aqui neste curso de linux, já estamos utilizando muitos comando, agora vamos falar de shell mesmo, sem medo de ser feliz, e sem medo do modo texto.

Embora o shell mais utilizad no Linux sistemas seja o bash, temos muitos outros disponíveis como por exemplo o sh, csh ksh, bash e outros.

No Ubuntu Linux, o sh é uma ligação simbólica para /bin/dash.

Shell na interface gráfica e Shell no modo texto

A forma mais comum de acessar um shell a partir de uma interface gráfica do Linux é utilizando uma janela de terminal. A partir de uma interface gráfica, muitas vezes você pode acessar terminais virtuais para chegar a um shell. Sem a interface gráfica, no modo texto, você vai cair diretamente em um shell após o login.

Usando o Shell na interface gráfica

Para abrir uma janela do Terminal do GNOME (o desktop padrão do Ubuntu), selecione Aplicativos ? Acessórios ? Terminal. Isso abre um terminal gnome

Comandos da Figura acima, ilustram que o shell atual é o bash (/bin/bash), o usuário atual é o usuário que inicio o desktop (pedrod), eo diretório atual é o diretório home do usuário (/home/chris). O nome de usuário (pedrod) e host (pedrod-laptop) aparece na barra de título.

O gnome-terminal janela não só permite o acesso a um shell, como também tem a possibilidade de abrir várias sessões de terminal. Por exemplo, clique em Arquivo ? Abrir nova aba, para abrir outro shell em uma guia diferente.

Você também pode usar o controle de seqüências de teclas para trabalhar com uma janela de terminal.

Exemplo:
Abra um shell em uma nova guia digitando Ctrl + Shift + T,
Abra uma nova janela de terminal com Ctrl + Shift + n,
Para fechar uma guia do shell, use o Ctrl + Shift + w, e fechar uma janela de terminal com Ctrl + Shift + q.

Lembrando, que algumas destas funcionalidades só estão disponíveis em um shell acessado via interface gráfica.

Além do gnome-terminal, há muitos outros terminais que podem ser utilizados na interface grafica, como por exemplo.

  • xterm (emulador de terminal de base que vem com o X Window System),
  • aterm emulador (terminal emulador VT102 Afterstep XVT)
  • konsole (emulador de terminal fornecido com o desktop KDE

Usando Terminais Virtuais

Aqui eu já vi muitas pessoas assustadas, até desistindo de usar sistema Linux quando se depara com esta tela

Quando usamos o runlevel 2, 3 ou 5, seis consoles virtuais (conhecido como tty1 até tty6) são criados no modo texto, já com o login em modo texto, claro.

Se um desktop X Window System está executando o X (X é o servidor de interface gráfica, isso mesmo aquela interface bonitinha do gnome é gerenciada por um servidor) provavelmente, ele estará em execução no console virtual 7.

Você pode mudar para outra consola virtual com Ctrl + Alt + F1, Ctrl + Alt + F2, e assim por diante
até 6, se estiver em uma interface gráfica.

Em modo texto, você pode alternar usando Alt + F1, Alt + F2, e assim por diante.

Agora já conhecemos as formar de acessar o shell, podemos começar a utilizar esta ótima ferramenta de sistema Linux. Aqui no curso de Linux, vamos trabalhar 99 % do nosso tempo no shell do Linux em modo texto, porque modo texto e o melhor modo. Até o próximo capitulo.

Como funciona o ambiente Shell do Ubuntu Linux ?

Depois de aprender a acessar um shell (a partir do modo texto ou uma janela de terminal), vamos ver aqui no curso Linux ubuntu, quais arquivos são responsáveis pela configuração do ambiente da shell bash.

As configurações do shell estão localizados em alguns arquivos. Você pode fazer suas próprias versões desses arquivos para substituir suas configurações.

Arquivos de inicialização.

O Bash executa arquivos os arquivos de inicialização que definem as configurações na hora do login.

O Bash procura o arquivos de inicialização em /etc/profile , este arquivo não precisam ter permissão execução.

Algumas distribuições do Linux armazenam os de arquivos de inicialização em /etc/profile e /etc/profile.d

O Bash também procura por arquivos de inicialização em /etc/bash.bashrc , ou .bashrc para configurações personalizada por usuário.

Quando uma sessão de usuário é fechada, são executados o comandos do arquivo ~/bash_logout.

Esses arquivos, são padrão para o Shell Bash. Há uma variedade de maneiras de alterar o seu ambiente shell.

Usando Bash History

O bash é o shell usado por padrão pelos sistemas Linux mais modernos e mais um punhado de outros sistemas operacionais tais como o famoso Mac OS X, isso mesmo, o sistema da Apple também tem um Shell Bash.

O bash, tem uma característica que permite rever o histórico, e fazer reutilização de comandos que foram executado no passado. Isto pode ser muito útil, pois muitos comandos Linux são longo e complicado.

Quando o bash é iniciado, ele lê o arquivo ~/.bash_history e carrega na memória o conteúdo. Este arquivo é definido pela variável de ambiente $HISTFILE, para verificar utilize o comando

echo $HISTFILE

Observação : Vamos falar muito sobre variáveis de ambiente, mais adiante no curso de Linux.

Durante uma sessão bash, os comandos são adicionados ao histórico ainda na memória, quando fazemos o logoff da sessão o histórico é gravado da memória de volta para o arquivo. bash_history.

O número de comandos que o Linux pode guardar em memória esta definido em $HISTSIZE, enquanto o número de comandos realmente armazenadas no arquivo do histórico é definido por $HISTFILESIZE

Utilize o comando abaixo, para verificar isso,

$ echo $HISTFILE $HISTSIZE $HISTFILESIZE
/home/e-tinet/.bash_history 500 500

O comando history, ajuda a listar o conteúdo do histórico de comando do Linux

Lista os 5 últimos comando

$ history 5
975 mkdir extras
976 mv *doc extras/
977 ls -CF
978 vi house.txt
979 history

Sendo assim, por hoje é só pessoal, espero que o assunto não esteja ficando meio pesado mais alguma hora isso teria que acontecer. Acesse para conhecer o curso de linux completo, e aguarde novas atualizações.

Shell do Linux, dicas para linha de comando e redirecionadores

Trabalhar no Linux em modo texto é muito fácil, mas aprender alguns truques é essencial, pois muitos comandos são bastante longos. Neste Curso de Linux com Ubuntu eu quero passar também estas dicas, para facilitar a vida na hora de usar o terminal do Linux.

Tecla tab no linux, auto completa comandos - curso linux ubuntu

Depois de aprender a acessar o shell via terminal virtual e também no modo gráfico, e entender um pouco mais sobre como o shell bash inicia o seu ambiente, vamos ver hoje dicas rápidas e valiosas.

A tecla TAB, e o seu poder de auto completar.

Você pode usar a tecla Tab para completar os diferentes tipos de informações na linha de comando. Aqui estão alguns exemplos onde você digita um nome parcial, seguido da tecla Tab, para tentar completar as informações que deseja na linha de comandos do shell.

$ cd /home/pe

Após pressionada a tela o shell vai tentar completar o comando, no meu caso existe um diretório /home/pedro, o auto complete vai funcionar.

Outro exemplo, que surge o mesmo efeito, é usar o operador “~”

$ cd ~ pe

Vamos acessar novamente o diretório home do usuário pedro, que fica claro em /home/pedro.

O pode ser utilizado em conjunto com outros comandos também.

$ echo $PA
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Vai retornar a variável de ambiente $PATH, lembrando vamos falar de variável de ambiente mais pra frente.

O comando ping, que server para enviar pacotes ICMP pela rede, pode ser utilizado com a tecla , neste caso o ping vai listar todos os hosts contidos no aquivo /etc/hosts, uma forma de facilitar e sugerir os hosts que poder ser utilizado com o comando.

$ ping
e-tinet.example.com @ @ @ pedro.example.com linux.example.com

Conclusão: a tecla é a minha tecla preferida quando estou trabalhando no shell do Linux. Com o passar do tempo voce acaba se acostumando a utilizar o em qualquer situação.

Eu sempre falo: Se voce não quiser usar a tela tudo bem, mas vai sofrer de L.E.R antes do que eu.

Redirecionando saídas do shell

Os comandos do shell são interativos, ou seja, voce digita o comando e obtêm o resultado na mesma hora, ou deveria ser assim.

Por exemplo o comando ls

$ ls /
bin dev initrd.img lost+found opt sbin sys var
boot etc initrd.img.old media proc selinux tmp vmlinuz
cdrom home lib mnt root srv usr vmlinuz.old

Temos dois tipos de saídas, saída de comando normal e saída de erro, no exemplo acima o comando ls / resultou em uma saída de comando normal, mas que o comando resultasse em um erro ?

$ ls /barra
ls: impossível acessar /barra: Arquivo ou diretório inexistente

Sim, o comando acima resultou em um erro, pois o diretório /barra não existe.

Redirecionando a saída normal do shell

Vamos usar o operador “ > ” para redirecionar a saída normal do shell

$ ls / > log.txt

O comando acima não vai retornar nada no shell, pois sua saída foi redirecionada com o operador “ > ” para o arquivo log.txt

Você acabou de criar um arquivo contendo uma lista de diretórios e arquivos da raiz do seu sistema Linux. Se voce esta se perguntando: Mas onde eu utilizo este comando ? Quando estivermos trabalhando com shell script vamos poder usar estes redirecionadores para gerar arquivos de log e outras coisas.

Verifique o arquivo log.txt com o comando cat

$ cat log.txt

O comando cat vai listar o conteúdo do arquivo.

Redirecionando a saída de erro do shell

O fluxo de erro padrão do shell pode ser redirecionado utilizando o “2>” . Aqui estão alguns exemplos:

$ ls /barra 2> erro.txt

Opa ! Agora o comando não listou nenhum erro na tela, sim pois o erro foi redirecionado para o arquivo erro.txt

Use o cat novamente para verificar

$ cat erro.txt
ls: impossível acessar /barra: Arquivo ou diretório inexistente

Agora parece besteira trabalhar com esses redirecionadores, mas pensando que voce pode criar um script para executar vários comando, será bem interessante.

Mas, se pouco importa guardar o erro de um comando, voce pode redirecionar a saida deste comando para /dev/null

$ ls /barra 2> /dev/null

Pronto, assim se o comando retornar um erro ele não será mostrado na tela e não será salvo em nenhum arquivo.

Agora é praticar um pouco no shell, lembrando que alguns comando podem parecer sem utilidade agora, mas com certeza vamos utilizar todos para gerar scripts shell e automatizar tarefas, em fim. As possibilidade são infinitas. Visite sempre a pagina do curso de linux com ubuntu, para conhecer todo o conteúdo já publicado. Até mais, qualquer duvida pode deixar um comentário ou dar uma “twitada” em @pedrodelfino.

Como usar ALIAS no Shell do Ubuntu Linux

Aqui no Curso Linux Ubuntu vamos continuar a usar o Shell Bash, e hoje o comando alias vai nos ajudar a definir APELIDOS para comando do sistema. Alguns APELIDOS já estão definidos ou podem ser especificados pelo usuário no arquivo de configuração de ambiente que discutimos anteriormente.

Antes de iniciar, vamos recapitular o que já aprendemos aqui no curso Linux Ubuntu sobre o Shell do Linux.

1) Vamos usar o Shell do Ubuntu Linux ?
2) Como funciona o ambiente Shell do Linux ?
3) Shell do Linux, dicas para linha de comando e redirecionadores

alias no linux via shell bash

Como listar os APELIDOS do sistema Linux

Para saber quais dos apelidos (alias) definidos no shell do Linux, vamos usar o comando alias, olha só que obvio.

$ alias
alias cp=’cp -i’
alias ls=’ls --color=auto’
alias mv=’mv -i’
alias rm=’rm -i’

Observe que alguns apelidos (aliases) são definidas simplesmente como uma forma de adicionar opções para um comando o padrão do sistema.

Por exemplo:

$ alias mv=’mv -i’

Estamos criando um alias chamado mv, que vai executar o comando mv -i, assim quando o usuário executar o comando mv, será a mesma coisa que executar mv -i. A opção -i do comando mv, vai solicitar uma confirmação caso seja necessário sobrescrever algum arquivo.

O Ubuntu Linux vem apenas com o alias ls definido, alias ls=’ls –color=auto’ , que coloca um poucos de cor
ao listar arquivos.

Como definir seus próprios aliases em uma sessão do shell bash

Podemos criar um alias na sessão atual do shell bash.

$ alias ls = 'ls -la'

Agora execute o comando ls

$ ls
drwxr-xr-x 21 root root 4096 2010-02-09 09:30 .
drwxr-xr-x 21 root root 4096 2010-02-09 09:30 ..
drwxr-xr-x 2 root root 4096 2010-02-09 09:29 bin
drwxr-xr-x 3 root root 4096 2010-02-09 09:30 boot
lrwxrwxrwx 1 root root 11 2009-11-04 19:03 cdrom -> media/cdrom
drwxr-xr-x 16 root root 3940 2010-02-25 19:21 dev
drwxr-xr-x 135 root root 12288 2010-02-25 19:21 etc
drwxr-xr-x 6 root root 4096 2009-04-13 06:33 home
lrwxrwxrwx 1 root root 33 2010-02-09 09:30 initrd.img -> boot/initrd.img-2.6.28-18-generic
lrwxrwxrwx 1 root root 33 2009-12-10 09:43 initrd.img.old -> boot/initrd.img-2.6.28-17-generic
drwxr-xr-x 19 root root 12288 2010-02-09 09:29 lib
drwx------ 2 root root 16384 2009-11-04 19:03 lost+found
drwxr-xr-x 3 root root 4096 2010-02-25 19:21 media
drwxr-xr-x 2 root root 4096 2009-04-13 06:33 mnt
drwxr-xr-x 5 root root 4096 2010-01-17 00:23 opt
dr-xr-xr-x 142 root root 0 2010-02-25 19:20 proc
drwx------ 18 root root 4096 2010-02-14 19:08 root
drwxr-xr-x 2 root root 4096 2010-02-09 09:29 sbin
drwxr-xr-x 2 root root 4096 2009-03-06 13:21 selinux
drwxr-xr-x 2 root root 4096 2009-04-20 10:59 srv
drwxr-xr-x 12 root root 0 2010-02-25 19:20 sys
drwxrwxrwt 14 root root 4096 2010-02-25 19:23 tmp
drwxr-xr-x 11 root root 4096 2009-04-20 11:00 usr
drwxr-xr-x 15 root root 4096 2009-04-20 11:07 var
lrwxrwxrwx 1 root root 30 2010-02-09 09:30 vmlinuz -> boot/vmlinuz-2.6.28-18-generic
lrwxrwxrwx 1 root root 30 2009-12-10 09:43 vmlinuz.old -> boot/vmlinuz-2.6.28-17-generic

Como definir alias definitivamente

Claro que vamos precisar salvar os nossos APELIDOS (aliases) para lista adicione essa linha ao seu arquivo ~/.bashrc para a definição ficar salvar.

Vamos ver um exemplo:

$ vim .bashrc

Adicione as seguintes linhas.

alias cp=’cp -i’
alias ls=’ls --color=auto’
alias l=’ls -laF’
alias mv=’mv -i’
alias rm=’rm -i’

O arquivo ~/.bashrc é mais um arquivos responsável pela configuração do ambiente shell, como já tratamos no post como funciona o ambiente Shell do Linux ?. Toda vez que uma sessão do shell for iniciada, esta arquivo vai executado, mesmo não tendo permissão de execução. (OBS: Vamos falhar bastantes sobre permissão de arquivos no Linux)

Como já estamos em um sessão do shell, podemos executar o comando abaixo, para que o bash leia novamente o ~/.bashrc.

$ source ~/.bashrc

Pessoal ótimo, por hoje é só, esse assunto é muito simples e facilita muito o uso do shell do Linux. Lembrando que o Curso Linux Ubuntu continua firme, qualquer duvida pode deixar um comentário.

Como usar os poderes do usuário root no Ubuntu Linux

Quando trabalhamos com Shell no Ubuntu Linux sempre surge uma duvida. Como executar comando que somente o usuário root tem permissão ?

O comando sudo permite que um usuário comum no sistema execute comandos com o poder do usuário root. O sudo é uma grande ferramenta para a concessão de privilégios específicos.

O sudo é executado como root. O Ubuntu usa o comando sudo para executar comandos privilegiados, ao invés de usar o comando su .

O comando sudo é configurado em /etc/sudoers

ATENÇÃO! Nunca editar este arquivo com seu editor de texto normal. Em vez disso, use sempre o comando visudo.

O arquivo /etc/sudoers é restrito, então você precisa usar o comando sudo para editar o arquivo. Por exemplo:

$ sudo visudo

O comando visudo inicia um editor, por padrão, o editor nano.

Se você olhar para o arquivo sudoers que acompanha a sua distribuição, você verá seções vazias delimitadas por comentários e uma sessão conforme abaixo.

ALL root = (ALL) ALL

Isso significa que o usuário root é permitido em todos os hosts, executar qualquer comando como qualquer usuário.

Para que todos os usuários que fazem parte do grupo admin possam adquirir privilégios de root:

% admin ALL = (ALL) ALL

No meu caso o parâmetro acima estava na ultima linha.

Quando você instalou o Ubuntu Linux, a conta de usuário que você criou foi automaticamente
adicionado a este grupo, o admin. Voce pode verificar isso com o comando.

$ id user1
uid=1000(user1) gid=1000(pedrod) grupos=1000(user1),4(adm),20(dialout),24(cdrom),46(plugdev),106(lpadmin),121(admin),122(sambashare)

Tudo bem, então a conclusão: Todo usuário que fizer parte do grupo admin, pode executar qualquer comando como usuário root usando o comando sudo. Muito cuidado ao executar o comando abaixo.

$ sudo addgoup user1 admin
Adicionando o usuário `user1' ao grupo `admin' ...
Adicionando usuário user1 ao grupo admin
Concluído.

Agora o usuário chamado user1 poderá executar comandos com os poderes de root no sistema. Por exemplo.

$ sudo apt-get install nmap

Ou qualquer comando que execute ou delete arquivos, poderá também iniciar serviços do sistema, como por exemplo.

$ sudo /etc/init.d/networking restart

Ou seja, quem estiver no grupo admin, não é o root, mas é o cara no sistema.

Nós já usamos muito o comando sudo aqui no Curso Linux Ubuntu, eu já tinha avisado que na hora certa nós iriamos falar sobre o famoso sudo. Acabamos de discutir o básico sobre o uso e configuração deste comando.

Por hoje é isso, continuamos então com a série do Curso Linux Ubuntu.

Como permitir que um usuário execute um comando determinado com poderes do root

Algum dia voce pode precisar que um determinar um comando do Linux segue executado por um usuário comum do sistema, mas este comando somente o usuário root tem permissão. O SUDO revolve este pequeno problema.


No POST Como usar os poderes do usuário root no Ubuntu Linux da série Curso Linux Ubuntu, configuramos o SUDO através do comando visudo, de forma que um usuário execute comando com os poderes do ROOT, mas isso pode ser um problema, pois qualquer comando poderá ser executado.

Como configurar o SUDO

No meu exemplo, vamos utilizar o usuário user1, este usuário não esta no grupo admin, para verificar isso execute.

$ id user1
uid=1001(user1) gid=1001(user1) grupos=1001(user1)

Agora vamos editar as configurações do SUDO

$ sudo visudo

Vamos adicionar a linha abaixo, no final do arquivo

user1 ALL= /usr/bin/less /var/log/messages

Pronto, com isso estamos dizendo para o SUDO que o comando /usr/bin/less /var/log/messages
pode ser executado pelo usuário user1 .

Para testar, podemos nos transformar no usuário user1 com o comando abaixo.

$ su user1
user1@laptop:~$

Agora podemos usar o comando less para testar.

user1@laptop:~$ /usr/bin/less /var/log/messages
/var/log/messages: Permissão negada

Ok, permissão negada. Mas se utilisar o sudo antes do comando, o sistema vai permitir que o comando seja executado.

user1@laptop:~$ sudo /usr/bin/less /var/log/messages

Outro teste interessante, é tentar executar outro comando com o usuário user1.

user1@laptop:~$ sudo apt-get install nmap
[sudo] password for user1:
Sorry, user user1 is not allowed to execute '/usr/bin/apt-get install nmap' as root on laptop.

O comando apt-get install não pode ser executado pelo usuário user1.

O SUDO é uma solução muito boa para controlar os poderes de usuários no sistema, podemos configurar usuários com poderes de root, ou apenas liberar um comando especifico para o usuário executar. Assim podemos controlar mais os usuário e suas permissões.

Então é isso, hoje terminamos este pequeno estudo do SUDO, mas ainda continuaremos falando do SHELL do Linux. Lembrando que o conteúdo completo do Curso Linux Ubuntu está disponível em /curso-linux-ubuntu

Trabalhando com Arquivos no Linux

Se você esta querendo aprender a administrar sistemas Linux, pode ter certeza, você vai trabalhar com arquivos, e tudo isso no modo texto, sim, isso mesmo, no modo console, sem mouse, sem arrastar e soltar arquivos.

Estou começando esta serie do curso Linux Ubuntu para trabalhar com arquivo, talvez esta seja a parte deste curso Linux mais esperado. Os demais posts deste curso, são especialmente para quem pretende trabalhar com o Ubuntu Linux, mas claro pode ser facilmente adaptado em outras distribuições.

Voltando ao assunto…

Tudo em um sistema de arquivos Linux pode ser visto como um arquivo. Isso inclui arquivos de dados, diretórios, dispositivos, pipes, links e outros tipos de arquivos. Associado a cada arquivo é um conjunto de informação que determina quem pode acessar o arquivo e como eles podem acessá-lo. Será uma série de posts que abrange muitos comandos para explorar e trabalhar com arquivos.

Noções básicas sobre tipos de arquivos

Há vários outros tipos de arquivos que você irá encontrar quando você usa Linux. Na linha de comando, existem muitas maneiras que você pode criar, localizar e lista diferente tipos de arquivos.

Arquivos que fornecem acesso aos componentes de hardware no seu computador são referidas como arquivos do dispositivo. Há caractere e dispositivos de bloco. Existem hard links e soft links, você pode usar para fazer o mesmo arquivo acessível a partir de locais diferentes ( Pausa para pensar: Os softs links são muitos, mas muitos utilizados).

O arquivos pipes e sockets são menos utilizados diretamente pelos usuários , que fornecem pontos de acesso para os processos de comunicação uns com os outros.

Como descobrir um tipo de arquivo

Você pode determinar o tipo de um arquivo usando o comando file. Eu sempre falo para meus alunos que no Linux, os arquivos não precisariam ter a extensão, como por arquivo.txt, claro fica muito mais fácil visualmente, porém para o Linux não faz diferença nenhuma.

Vamos fazer um exemplo, simples.


# cd /usr/share/doc/ $ file doc-base/install-docs.html doc-base/install-docs.html: XML 1.0 document text $ file doc-base/copyright doc-base/copyright: ASCII English text $ file doc-base/doc-base.html doc-base/doc-base.html/: directory $ file doc/doc-base/changelog.gz doc-base/changelog.gz: gzip compressed data, was “changelog”, from Unix, last modified: Thu Feb 22 07:29:26 2007, max compression $ file shared-mime-info/shared-mime-info-spec.pdf shared-mime-info/shared-mime-info-spec.pdf: PDF document, version 1.4

 

O comando file foi executado para mostrar os arquivos da documentação do Ubuntu, em diferentes formatos. É simples determinar qual arquivo de contém o texto, qual foi comprimido, PDF ou PostScript, ou HTML. Existe ainda um subdiretório, um nome estranho para um diretório (doc-base.html), mas tudo bem.

Criação de arquivos pode ser feito por qualquer aplicação que pode salvar seus dados. Se você apenas precisa criar alguns arquivos em branco para começar, há muitas maneiras de fazer isso. Aqui estão dois exemplos:

$ touch /tmp/meuarquivo.txt  $ > /tmp/meuarquivo2.txt

Claro que para você um arquivo em branco não serve para nada, mas vamos usar para fazer alguns teste, para isto vai servir.

Sendo assim por hoje é só, esse post foi apenas uma introdução a esta série de posts do curso Linux Ubuntu.

Compartilhe este post

Share on facebook
Share on linkedin
Share on twitter
Share on email

Artigos Recentes

Aprenda a dominar o Linux de uma vez por todas

Aprenda a dominar o Linux de uma vez por todas