+1 500 000 produtos na nossa oferta
7000 encomendas enviadas diariamente
+300 000 clientes de 150 países
Data de publicação: 07-05-2025 🕒 23 min de leitura
O início do trabalho com o console Linux não é fácil - os comandos parecem misteriosos, não intuitivos, muitas vezes até deliberadamente confusos... Mas isso é apenas uma aparência. Apresentamos nossa pequena introdução ao uso do Raspberry Pi e Linux com o terminal.
Entre os leigos, persiste a ideia de que o Linux é muito difícil de usar. Muitas vezes, e de forma errada, isso se torna uma razão para a relutância em começar a trabalhar com Raspberry Pi. Portanto, vamos responder imediatamente a três perguntas:
Para usar o Linux, é preciso conhecer mil comandos, certo?
Errado, para realizar a maioria das tarefas, basta algumas dezenas de comandos descritos abaixo.
Os comandos do Linux são confusos e ilegíveis, certo?
Errado, na maioria das vezes, são apenas abreviações, não mais complicadas do que KFC ou USD.
O Linux requer conhecimento avançado sobre computadores, certo?
Errado, o sistema possui um manual embutido detalhado e uma comunidade prestativa.
O mito da inacessibilidade do Linux decorre do fato de que este sistema foi excepcionalmente otimizado, mas com foco em desempenho, acesso remoto e operação em dispositivos minimalistas. Isso contrasta com a filosofia que orienta os sistemas Windows, Android ou MacOS, com os quais interagimos diariamente. Lá, a potência de processamento do CPU e os recursos de memória são consumidos de forma bastante livre (até mesmo desperdiçados), para fornecer ao usuário uma interface gráfica impressionante, que (pelo menos em teoria) se traduz em uma operação intuitiva do sistema.
O Linux possui a mesma funcionalidade que seus irmãos comerciais, mas, por definição, pode operar em dispositivos cuja construção não prevê a conexão de um monitor ou teclado. Para operar o Linux, basta uma porta de comunicação, como uma porta Ethernet ou uma interface serial UART, e um programa de terminal executado em um hardware externo (pode ser um laptop, smartphone, tablet, etc.). Analogamente, a interação com o sistema será semelhante no caso da versão Lite do sistema Raspberry Pi OS. Após iniciar o computador, na tela veremos apenas uma linha de comando. Também podemos chamá-la em um ambiente gráfico do Linux, selecionando o programa de console no menu de inicialização.
Então: diante de nós, uma tela preta do console, um sinal de prompt e um cursor piscando impacientemente... o que fazer a seguir?
Neste artigo, respondemos a perguntas como:
Comecemos com um comando que não requer conhecimento adicional sobre o Linux.
O comando date retorna a data e hora atuais do sistema.
No entanto, além de sua função básica, como a maioria dos comandos do console, oferece possibilidades muito mais amplas. Por exemplo, fornece a hora em uma localização específica. Para isso, colocamos um parâmetro que indica o fuso horário (time zone), região e cidade (por exemplo, TZ=Europe/Kyiv date).
Temos também a escolha do formato de data e hora. Isso é imposto adicionando ao comando um sinal de mais e uma sequência de caracteres preenchidos com placeholders. Existem várias, por exemplo, %H significa hora, %M minuto, %S segundo.
Como podemos ver, toda a arte consiste em conhecer os comandos e se acostumar a trabalhar em modo texto. Mas já no início, vamos facilitar nossa vida.
O comando clear serve para limpar o terminal, que às vezes se enche de centenas de linhas de texto e é difícil de navegar (mesmo com o uso da barra lateral, que nem sempre estará disponível). Alguns usuários iniciantes temem "perder" o progresso de seu trabalho, mas isso é um estresse completamente desnecessário, pois...
Não precisamos lembrar de todos os comandos que digitamos recentemente no terminal. Nem precisamos digitá-los novamente em caso de erro de digitação. Ao pressionar a seta para cima, chamamos o último comando usado. Pressionando a seta novamente, chamamos o anterior, ainda mais antigo, etc. Se precisarmos procurar um comando usado algum tempo atrás, sempre podemos usar o comando history, que exibirá uma lista de todos os comandos da sessão:
Outra abreviação útil, que se mostra útil ao realizar operações complexas, é o alias, ou seja, criar seu próprio comando, que esconde uma operação mais complexa. Basta fornecer um nome substituto e (entre aspas) a sequência de comandos que será chamada. Por exemplo, alias kyiv="TZ=Europe/Kyiv date" fará com que sempre que digitarmos "kyiv", o console reaja como se tivesse recebido o comando completo.
Já mencionamos que até os comandos mais simples do Linux, como date, possuem funcionalidades avançadas. O acesso a todas as possibilidades é obtido usando switches/opções e parâmetros.
Surge a pergunta: como saber quais opções um determinado comando oferece e como usá-las? Precisamos pesquisar informações sobre comandos na Internet toda vez? Calma. Todos os comandos no Linux estão documentados, e a documentação está contida no sistema. O método mais simples de obter informações é adicionar o switch --help após o nome do comando.
Como podemos ver, dessa forma saberemos para que serve e qual é a sintaxe de um determinado comando, quais opções/parâmetros ele aceita, etc.
Informações ainda mais detalhadas sobre os comandos do Linux estão disponíveis na base de instruções embutida (manuals). Exibimos isso digitando man e o nome do comando que nos interessa, por exemplo, man date.
Para sair do programa (que por padrão ocupa toda a janela do terminal), pressionamos q. Vale ressaltar que a maioria dos programas que funcionam no console é interrompida e fechada pressionando q, a combinação Ctrl+C ou Ctrl+X.
Deve-se também enfatizar que a base de conhecimento contida nas instruções do Linux vai muito além da descrição de alguns comandos, também contém informações sobre funções da linguagem C, convenções de nomenclatura, etc. Se pedirmos, literalmente, por instruções para as instruções (digitando man man), veremos, entre outras coisas, uma lista de seções nas quais os recursos de ajuda estão divididos:
Se quisermos pesquisar a base de informações sobre um tópico específico, podemos usar o comando apropos (da frase francesa á propos). O sistema nos fornecerá uma lista de todas as entradas relacionadas encontradas na base de dados (o número entre parênteses indica o número da seção):
Se acessamos o dispositivo remotamente, por exemplo, através de uma rede LAN, e sabemos pouco sobre sua construção ou versão do sistema, podemos obter informações usando o comando uname. Na forma sem opções adicionais, ele nos mostrará apenas o nome do sistema (Linux), mas ao digitar uname -a (de all) saberemos sobre: nome do kernel, nome do recurso de rede, versão do kernel e data de lançamento, processador (no caso do Raspberry Pi, será uma das versões ARM) e nome do sistema operacional (GNU/Linux).
Não teremos espaço aqui para descrever completamente o sistema de arquivos do Linux - especialmente porque um arquivo pode ser, por exemplo, uma representação simbólica de um componente do computador, interface, etc. No entanto, antes de passarmos para os comandos relacionados a operações em arquivos e pastas, devemos pelo menos dar uma olhada nessa estrutura. Na ramificação básica do sistema de arquivos, encontramos as seguintes pastas:
Navegar pelo sistema de arquivos é uma habilidade básica cuja maestria nos permitirá nos sentirmos mais confiantes no ambiente Linux. Embora existam várias ferramentas que facilitam a exploração, cópia e outras operações em arquivos, o conhecimento dos comandos muitas vezes se mostra indispensável, especialmente ao criar nossos próprios scripts.
Ao navegar no sistema de arquivos, movemo-nos entre pastas - o local onde estamos atualmente é chamado de diretório de trabalho. Para relembrar nossa localização atual, usamos o comando pwd.
O comando ls serve para exibir uma lista de arquivos e diretórios na localização atual. As opções dessa função oferecem várias maneiras de formatar a saída, por exemplo, ls -1 resulta em uma lista apresentada em uma coluna, e o switch -s (size) adiciona o tamanho de cada arquivo (em kB, o que também pode ser alterado). Uma informação ainda mais completa sobre o conteúdo do diretório pode ser obtida digitando ls -l (long).
Para mover entre pastas, usamos o comando cd, seguido pelo nome da pasta para a qual queremos ir. Se for uma subpasta do diretório de trabalho, basta fornecer seu nome. Também é possível mover-se para qualquer lugar do sistema de arquivos. Nesse caso, deve-se fornecer o caminho completo, por exemplo, cd /home/pi/. Se quisermos voltar um nível na hierarquia, por exemplo, de /home/pi para /home, devemos digitar cd .. - é importante deixar um espaço entre o comando e os dois pontos.
Para obter informações sobre sistemas de arquivos montados, podemos usar a ferramenta df. Ela indicará em qual localização teremos acesso às memórias conectadas (cartões SD, memórias USB, discos rígidos, etc.), bem como fornecerá a quantidade de espaço disponível e ocupado em cada um dos dispositivos.
O comando find serve para buscar arquivos e pastas. É o método mais simples para localizar recursos. Após o comando, podemos fornecer o caminho inicial (o sistema também considerará pastas subordinadas). Em seguida, usamos o switch -name, após o qual digitamos a sequência de caracteres procurada no nome do elemento. Usando asterisco, indicamos qualquer parte do nome. Portanto, se estivermos interessados na lista de todos os PDFs na pasta home, usaremos o comando *find /home -name .pdf**.
Neste ponto, estamos prontos para passar para operações mais complexas, ou seja, combinar comandos. Para facilitar, vamos começar com algumas funções úteis, que depois uniremos em um único comando mais longo.
O comando cat copia (concatenate) o conteúdo de um arquivo e o exibe como texto no terminal. Portanto, se quisermos dar uma olhada no arquivo names.txt, basta digitar cat names.txt.
Como o próprio nome indica, este comando ordena os dados (por padrão, em ordem alfabética). Podemos fazer isso indicando ao programa um arquivo específico, por exemplo, sort names.txt. Notemos que o conteúdo é idêntico ao acima, apenas a ordem muda:
Expressões regulares (regular expression) são uma ferramenta poderosa que ajuda a domar grandes volumes de dados. Na informática, permitem buscar frases específicas, estruturas generalizadas, etc. No caso do console Linux, expressões regulares são mais frequentemente usadas para tarefas triviais, como filtragem de listas. Para isso, fornecemos ao comando a sequência de caracteres desejada e um conjunto de dados a serem pesquisados (aqui será o arquivo names.txt). Se quisermos encontrar todas as entradas da lista onde aparece a combinação de letras "an", digitaremos: grep an names.txt. Também podemos usar outras expressões mais complexas (expression), que nos permitirão buscar casos que contenham, por exemplo, uma das duas frases. Para buscar as sequências "an" OU "ly", o comando seria: grep -E "an|in" names.txt.
Uma grande facilidade ao trabalhar no console do Linux é o pipe (o chamado pipe), simbolizado pelo caractere |. Isso faz com que a saída de um comando seja passada como parâmetro para o próximo. As operações podem ser encadeadas em um único comando.
Vamos usar o seguinte exemplo: usando cat names.txt, lemos o arquivo de texto, filtramos seu conteúdo com o comando grep y, deixando apenas as linhas que contêm a letra minúscula y; organizamos os resultados em ordem alfabética com a função sort. O todo ficará assim: cat names.txt | grep y | sort.
Comandos como ls ou cat tentarão exibir no console cada lista ou conteúdo de arquivo, independentemente de seu tamanho. Isso faz com que, em caso de longas sequências de dados, vejamos apenas as últimas linhas:
Se quisermos revisar o conteúdo "tela por tela", basta usar a função more. Ela interromperá a transmissão de caracteres quando nossa janela do terminal estiver cheia. Para continuar, pressionamos enter (a próxima linha será carregada) ou espaço (carregará toda a próxima tela). Portanto, seguindo o exemplo ilustrado acima, em vez de cat numbers.txt, usaríamos o comando cat numbers.txt | more. Da mesma forma, procederemos com outras listas longas, textos, etc.
O comando diff indica as diferenças entre dois arquivos/listas - fornece o local da discrepância e seu conteúdo:
É hora de dar uma olhada nos comandos básicos usados para criar, copiar e excluir arquivos e pastas.
Criamos um diretório com o comando mkdir. Ele pode ser criado na pasta de trabalho, mas também em qualquer outra localização (para a qual temos permissões), se fornecermos seu caminho completo.
A exclusão de uma pasta vazia é feita usando o comando rmdir. Se quisermos excluir uma pasta junto com seu conteúdo...
...usamos o comando rm. Ele serve para excluir tanto arquivos quanto pastas. Se estamos excluindo um diretório e queremos apagar todo o seu conteúdo junto, devemos usar o switch rm -r (recursive), que excluirá a pasta junto com os arquivos, subpastas, etc. contidos nela.
A operação do comando cp, ou seja, copiar, é intuitiva: o primeiro parâmetro indica a origem, o segundo é o elemento de destino.
Mover arquivos com o comando mv funciona de forma análoga à cópia, sendo que, se o diretório de origem e o de destino forem os mesmos (por exemplo, em ambos os casos usarmos o diretório de trabalho), não ocorrerá a movimentação, mas a mudança do nome do arquivo.
O comando touch serve para criar um novo arquivo vazio. Se usarmos como parâmetro o nome de um arquivo já existente, seu conteúdo permanecerá inalterado, enquanto a data de modificação e o último acesso serão atualizados (daí o nome "toque", em inglês touch).
Usando o comando file, verificamos o tipo do arquivo indicado no parâmetro.
Para observar um arquivo ou outro objeto em tempo real, usamos o comando watch. Na tela, aparecerá um emulador de terminal que é periodicamente atualizado. Dessa forma, podemos monitorar as mudanças que ocorrem no recurso (por exemplo, watch test.txt), no conteúdo de uma pasta (watch ls), etc. Uma alternativa seria chamar manualmente o comando em ciclos.
Agora que já temos conhecimento sobre manipulação de arquivos e pastas, vamos abordar a questão dos usuários e permissões. Comecemos por um dos comandos "mais famosos" do Linux:
Superuser, ou superusuário, é o administrador ou root, que possui praticamente permissões ilimitadas. É importante ressaltar: elas são de fato ilimitadas e as permissões administrativas devem ser usadas com a máxima cautela, não apenas por razões de segurança, mas também devido à possibilidade de causar falhas. O primeiro usuário que criarmos em nosso Raspberry Pi automaticamente recebe permissões para executar comandos com permissões de administrador. Isso é feito precedendo o comando com sudo.
Um exemplo de comando ao qual apenas o administrador tem acesso é shutdown, que é o comando que encerra o sistema de forma segura e desliga a máquina. Por padrão, ele serve para agendar o desligamento em um horário específico. Para desligar o computador imediatamente, usamos a opção -h (de hour) e especificamos o tempo como now.
Portanto, nosso comando completo ficará assim: sudo shutdown -h now.
Atenção: se estivermos usando um terminal remoto, imediatamente após aceitar o comando, a conexão será encerrada.
A função su é usada para executar um comando como outro usuário. É um método útil, especialmente para o administrador, por exemplo, para testar as permissões concedidas a determinados usuários.
Para criar uma conta de novo usuário, usamos o comando useradd.
A conta de usuário recém-criada está completamente vazia, não possui senha nem diretório home. A senha é atribuída usando o comando passwd, após o qual digitamos o nome da conta. Seremos solicitados a inserir a senha e a repeti-la nos passos seguintes. Se quisermos mudar nossa própria senha, basta digitar o comando passwd.
A exclusão de uma conta de usuário é feita usando o comando userdel. Claro: para funcionar conforme o esperado, deve ser executado com permissões de administrador.
Grupos de usuários no Linux são uma funcionalidade útil. Graças a isso, não precisamos lidar com permissões concedidas a indivíduos que usam o sistema (o que seria problemático em casos como compartilhamentos de rede, escolares, de escritório, etc.). Em vez disso, basta agrupar usuários, o que permite controlar simultaneamente as permissões concedidas a todos os seus membros.
Digitando o comando groups, receberemos uma lista de todos os grupos aos quais nossa conta pertence. Se quisermos conhecer todos os grupos atualmente disponíveis no sistema, basta olhar o arquivo /etc/group.
Vale ressaltar que o primeiro usuário criado no sistema Raspberry Pi OS não apenas recebe permissões para ações administrativas, mas também acesso a saídas de hardware, como GPIO, interface I2C e SPI.
Outros comandos relacionados a grupos, como groupadd, groupdel (group delete), groupmod (group modify), permitem criar, modificar e excluir grupos e suas permissões. No entanto, essas são tarefas administrativas mais complexas, que não abordaremos aqui. Na prática de uso do Raspberry Pi e na realização de projetos com ele, raramente há necessidade de lidar com grupos.
As permissões no Linux são muito importantes, pois constituem a base para proteger os recursos do sistema. Cada arquivo e pasta possui um conjunto de permissões para três tipos de usuários:
Se executarmos o comando ls com o parâmetro -l (long), veremos uma descrição detalhada das permissões para todos os elementos na pasta:
A lista é dividida em 9 colunas. A primeira será discutida em breve. As seguintes são: número de links (isso se refere, por exemplo, ao número de subpastas); proprietário do arquivo; grupo que possui o objeto; tamanho em bytes; mês, dia e hora da última modificação; nome do objeto.
Vamos analisar a informação colocada no início de cada linha. O primeiro caractere indica o tipo de elemento: - é um arquivo comum, d é um diretório (directory), l indica um link simbólico (symbolic link).
Os próximos 9 caracteres são divididos em três grupos e descrevem as permissões para: (1) o proprietário; (2) membros do grupo que possui o objeto; (3) outros usuários. Em cada bloco, podemos encontrar as letras: r (read) indica permissão de leitura; w (write) permissão de edição. A letra x (executable) será encontrada apenas em diretórios/programas/scripts e indica executabilidade, ou seja, a possibilidade de executar ou explorar o objeto.
Para entender melhor essa forma de registro, vamos analisar as permissões do arquivo test2.txt (-rw-r--r--). Na tabela, essas permissões podem ser apresentadas da seguinte forma:
| Nr do caractere | Valor | ||
|---|---|---|---|
| 1 | Tipo | arquivo/diretório/link | - (ou seja, arquivo) |
| 2 | Direitos do proprietário | leitura | r |
| 3 | escrita | w | |
| 4 | execução | - | |
| 5 | Direitos dos membros do grupo | leitura | r |
| 6 | escrita | - | |
| 7 | execução | - | |
| 8 | Direitos de outros usuários | leitura | r |
| 9 | escrita | - | |
| 10 | execução | - | |
Assim, vemos que o arquivo pode ser lido por qualquer um. Apenas o proprietário (neste caso, root/admin) tem o direito de editá-lo. O arquivo não pode ser executado (pois não é um programa).
Alternativamente, em vez de três letras, as permissões são registradas numericamente, em sistema octal:
| Número | Leitura | Escrita | Execução |
|---|---|---|---|
| 0 | sem permissões (---) | ||
| 1 | - | - | sim |
| 2 | - | sim | - |
| 3 | - | sim | sim |
| 4 | sim | - | - |
| 5 | sim | - | sim |
| 6 | sim | sim | - |
| 7 | permissões totais (rwx) | ||
Se quisermos mudar as permissões de um arquivo, podemos fazer isso usando o comando chmod. Ele aceita parâmetros na versão numérica (como na tabela acima), um para: proprietário, grupo, outros. Se quisermos que todos tenham permissões totais para o arquivo, usaremos o comando chmod 777 [nome do objeto]. Para permitir que todos os usuários editem o arquivo do exemplo anterior, seu proprietário (neste caso, o administrador) deve enviar o comando chmod 777 test2.txt (notemos como a sequência de caracteres na primeira coluna da lista mudou).
O comando chown permite mudar o proprietário do arquivo:
De forma análoga ao chown, o comando chgrp serve para mudar o grupo ao qual um determinado elemento está atribuído.
Programas e scripts executados no sistema Linux são chamados de processos. Existem muitos comandos que permitem gerenciá-los.
O comando top exibe uma lista de processos ativos no sistema. Na tabela para cada processo, encontramos informações como número de ID, nome do proprietário, quantidade de memória consumida e poder computacional utilizado.
Uma versão mais legível do comando top (escrita por Hisham H. Muhammad) é chamada de htop. Ela apresenta basicamente os mesmos dados, mas de forma mais clara. Também oferece ao usuário uma série de opções adicionais, como a possibilidade de ordenar, filtrar, etc.
O Linux nos permite desligar imediatamente qualquer programa (mesmo que isso cause uma falha no sistema). Para isso, usamos o comando kill, após o qual devemos fornecer o número de identificação (PID) do processo (os números que vemos na primeira coluna do top/htop).
O comando systemctl permite iniciar/parar processos/serviços, bem como exibir uma lista de recursos utilizados pelo sistema. É uma ferramenta útil que permite, por exemplo, reiniciar o software após modificar seus arquivos de configuração - no entanto, o uso desse comando vai muito além do escopo do nosso breve tutorial.
Como o Linux é um sistema que foi criado desde o início com foco no trabalho em rede, ele contém muitos comandos que facilitam a configuração de conexões com a Internet, Ethernet e computadores.
O comando mais básico para testar conexões: envia um pacote de controle para o endereço indicado e, em seguida, exibe o tempo de resposta (se houver). Se não especificarmos um limite, os pacotes serão enviados ciclicamente, até que seja interrompido usando a combinação Ctrl+C.
Para ver os detalhes de funcionamento de todas as interfaces de rede disponíveis em nosso computador (incluindo virtuais, como VPN), usamos o comando ifconfig.
Para exibir informações sobre conexões de rede ativas no sistema, usamos o comando netstat. É uma ferramenta de diagnóstico útil. Usando switches, podemos obter informações sobre o funcionamento das interfaces (-i), todas as portas abertas (-l), conexões TCP (-t), etc.
Outra ferramenta de diagnóstico útil. Ao fornecer o nome do servidor (por exemplo, traceroute google.com), receberemos uma lista de pontos de rede que o pacote, saindo de nosso computador, percorre até o destino. Dessa forma, podemos descobrir onde ocorrem atrasos e se eventuais problemas de comunicação foram causados em nossa infraestrutura.
O fato de estarmos trabalhando em modo texto não significa que devemos abrir mão das vantagens da Internet. Mesmo nesta versão básica, o Linux nos permite baixar arquivos da rede. Isso é feito usando o comando wget. Basta digitar o endereço específico do arquivo. Ele será baixado para a pasta de trabalho. No exemplo abaixo, é apresentado o download de um único documento do repositório github:
Um comando que nos oferece ainda mais possibilidades é o curl. Ele serve para transferir dados (incluindo arquivos) usando vários protocolos (HTTP, FTP, SMTP, etc.). O parâmetro -X permite escolher o método de envio (por exemplo, para um formulário usando o método POST).
Se estivermos transmitindo dados confidenciais pela rede, uma escolha melhor será o comando scp, que utiliza o protocolo SSH para transmissão criptografada. Essa transmissão é feita, entre outras coisas, ao criar backups de arquivos pessoais.
A Transfer Multisort Elektronik (TME) é um dos maiores distribuidores globais de componentes eletrônicos, peças eletrotécnicas, equipamentos de oficina e automação industrial. O catálogo inclui mais de 1.500.000 de produtos de 1.300 fabricantes líderes. Os modernos centros logísticos da TME em Łódź e Rzgów (Polónia), com uma área total superior a 40.000 m², enviam quase 6.000 pacotes diariamente para clientes em mais de 150 países.
A TME também investe no desenvolvimento do conhecimento e das competências de jovens engenheiros e entusiastas da eletrónica através do projeto TME Education e apoia a comunidade tecnológica organizando a série de eventos TechMasterEvent, promovendo a inovação e a troca de experiências.