8 erros de digitação que você realmente precisa evitar no Linux

Publicados: 2023-01-15
Closeup de uma tecla de teclado rotulada "Oops!"
Redpixel.pl/Shutterstock
Verifique novamente se você digitou o comando corretamente antes de pressionar "Enter". No Linux, um erro de digitação pode ter repercussões destrutivas. Use a conclusão de tabulação para preencher automaticamente o máximo possível de entrada de linha de comando. Aliases para comandos longos e complicados também são uma ótima ideia.

A linha de comando do Linux oferece grande poder. O problema é que o uso correto desse poder depende da precisão de sua digitação. Aqui estão oito erros de digitação que você nunca quer cometer.

Índice

A linha de comando do Linux
1. Não se esqueça do -a
2. Usando o identificador de unidade errado com dd
3. Usando o identificador de unidade errado com mkfs
4. Não exclua seu arquivo crontab
5. Repetindo a história
6. A Calamidade dos Espaços
7. Usando > Em vez de >>
8. Redirecionamento na direção errada
Como evitar erros de linha de comando

A linha de comando do Linux

A linha de comando do Linux é um portal para grandes poderes, mas basta um erro de digitação para que esse poder se volte contra você. Todos nós já ouvimos sobre o comando que você nunca deve executar. O que estamos falando aqui são comandos que você deseja executar, mas onde um deslize pode significar um desastre.

Quando você pressiona “Enter”, tudo o que você digitou é processado pelo shell. Aliases e variáveis ​​são expandidos. Comandos, opções e parâmetros são identificados. Isso é chamado de análise. A próxima etapa entrega sua entrada analisada aos comandos que executarão suas instruções.

Se você cometer um erro ao digitar seus comandos, isso pode ser detectado como um erro de sintaxe. Mas se o seu erro criar outra linha de comando válida, ela será executada.

Um simples erro de digitação pode ser verdadeiramente destrutivo. O nível de destruição depende do comando e do erro. Você pode perder tempo. Você pode perder um arquivo. Você pode perder um sistema de arquivos inteiro.

RELACIONADOS: O que é o Bash Shell e por que é tão importante para o Linux?

1. Não se esqueça do -a

Você pode precisar adicionar alguém a um grupo para permitir que eles, digamos, usem um determinado software. Por exemplo, o VirtualBox requer que os usuários façam parte do grupo “vboxusers”. Podemos fazer isso com usermod .

O comando groups lista os grupos de um usuário.

 grupos 

Listando os grupos de um usuário com o comando groups

Adicionaremos o usuário dave a um novo grupo. O -a (acrescentar) adiciona o novo grupo à lista de grupos existentes em que o usuário está. A opção -G (grupos) identifica o grupo.

 sudo usermod -a -G vboxusers dave 

Adicionando um usuário a um novo grupo, usando o comando usermod

O novo grupo é visto depois que o usuário efetua login e logoff.

 grupos 

O grupo vboxusers exibido na lista de grupos em que este usuário está

Ele agora está no grupo “vboxusers”. No entanto, se você esquecer de usar a opção -a (acrescentar), todos os grupos existentes do usuário serão removidos. O único grupo em que eles estarão é o novo grupo.

Este é o comando incorreto :

 sudo usermod -G vboxusers dave 

Adicionando um usuário a um grupo sem usar a opção -a append

Da próxima vez que fizerem login, descobrirão que estão em apenas um grupo.

 grupos 

O usuário agora está em um único grupo

Se você tiver um único usuário configurado e fizer isso com ele, terá sérios problemas. Por um lado, o usuário não é mais um membro do grupo “sudo”, então você não pode usar o sudo para começar a corrigir as coisas.

RELACIONADO: Adicionar um usuário a um grupo (ou segundo grupo) no Linux

2. Usando o identificador de unidade errado com dd

O comando dd grava blocos de dados em sistemas de arquivos. É frequentemente usado para gravar imagens ISO em cartões de memória USB.

O esquema de nomenclatura do Linux para dispositivos de armazenamento usa uma única letra para identificação. O primeiro disco rígido é denominado “/dev/sda”, o segundo é “/dev/sdb”, o terceiro é “/dev/sdc” e assim por diante. As partições são identificadas por número. A primeira partição no primeiro disco rígido é “/dev/sda1”, a segunda é “/dev/sda2” e assim por diante.

Se você gravar uma imagem em um cartão de memória USB, precisará saber o identificador da unidade do cartão de memória USB. Descobriremos isso canalizando lsblk através de grep , procurando por entradas com “sd” nelas.

 lsblk | grep SD 

Usando grep para procurar linhas com "sd" nelas, na saída do comando lsblk

Podemos ver que o disco rígido “/dev/sda” é um drive de 32 GB com três partições. Uma das partições é a partição “/boot” e a partição “/dev/sda3” é montada em “/”, que é a raiz do sistema de arquivos.

O disco rígido “/dev/sdb” é relatado como uma unidade de 7,5 GB. Ele está montado em “/media/dave/Pink”. Simplesmente, a unidade “/dev/sda” é o disco rígido principal neste computador e “/dev/sdb” é o cartão de memória USB.

O comando para gravar um arquivo ISO que está no diretório “~/Downloads” em nosso pendrive é:

 sudo dd bs=4M if=Downloads/distro-image.iso of=/dev/sdb conv=fdatasync status=progress 

Gravando uma imagem em um stick de memória USB com o comando dd

Nossa senha é solicitada e, em seguida, dd entra em ação. Não há "Tem certeza?" avisos ou chances de desistir. A escrita começa imediatamente.

A exibição do progresso dd enquanto grava uma imagem em um cartão de memória USB

No entanto, se você digitar a letra errada para o identificador da unidade e ela corresponder a um disco rígido existente, você substituirá essa unidade em vez do cartão de memória.

Este é o comando incorreto :

 sudo dd bs=4M if=Downloads/distro-image.iso of=/dev/sda conv=fdatasync status=progress 

Gravar uma imagem por engano no disco rígido principal termina com uma mensagem de erro

Dissemos ao dd para usar “/dev/sd a “, e foi o que aconteceu. A ação de gravação é muito mais rápida, mas termina com um aviso. Você acabou de destruir sua instalação do Linux.

Verifique e verifique novamente os identificadores da unidade antes de pressionar "Enter".

RELACIONADO: Como gravar um arquivo ISO em uma unidade USB no Linux

3. Usando o identificador de unidade errado com mkfs

Existem outros comandos que usam identificadores de unidade como parte de sua linha de comando, como as ferramentas mkfs . Essas unidades de formato criando sistemas de arquivos em partições.

Neste computador, temos uma unidade de 25 GB e uma unidade de 10 GB.

A saída de lsblk canalizada por grep, exibindo os discos rígidos em um computador

Se quisermos criar um sistema de arquivos Ext4 na primeira partição da unidade de 10 GB, usaremos esses comandos.

 sudo umount /dev/sdb1
 sudo mkfs.ext4 /dev/sdb1 

Criando um sistema de arquivos ext4 em um stick de memória USB

Mas se cometermos o erro de usar um “a” em vez de um “b” no identificador da unidade, apagaremos uma das partições na unidade de 25 GB e tornaremos nosso computador não inicializável.

Este é o comando incorreto :

 sudo umount /dev/sda1
 sudo mkfs.ext4 /dev/sda1 

Formatar erroneamente a unidade principal de um computador

Essa pequena letra dá um soco, então certifique-se de que você está acessando a unidade certa.

RELACIONADO: Como usar o comando mkfs no Linux

4. Não exclua seu arquivo crontab

O daemon cron executa tarefas em horários predeterminados para você. Ele obtém sua configuração de um arquivo crontab . Cada usuário, incluindo o root, pode ter um arquivo crontab . Para editar seu crontab , use este comando:

 crontab -e 

O comando para editar seu arquivo crontab: crontab -e

O arquivo crontab é aberto em um editor. Você pode fazer alterações e adicionar novos comandos.

Um arquivo crontab aberto em um editor

Mas se você digitar incorretamente o comando e pressionar “r” em vez de “e”, você removerá – como em deletar – seu arquivo crontab .

Este é o comando incorreto :

 crontab -r 

O comando que exclui seu arquivo crontab: crontab -r

Na próxima vez que usar o comando crontab -e , você verá um arquivo vazio padrão.

Este é um erro fácil de cometer, porque “e” e “r” estão próximos um do outro na maioria dos teclados. Reconstruir um arquivo crontab complicado não é divertido.

RELACIONADO: O que é um trabalho cron e como você os usa?

5. Repetindo a história

Usar o comando history é ótimo quando você está tentando reduzir as teclas digitadas e economizar tempo. Se você pode extrair um comando prolixo da história, você ganha velocidade e precisão. Contanto que você selecione o comando certo em seu histórico.

O comando history lista seus comandos anteriores na janela do terminal. Eles são numerados. Para reutilizar um comando, preceda seu número com um ponto de exclamação “ ! “, e pressione a tecla “Enter”.

 história 

Suponha que clonamos um repositório Git, nos metemos em confusão com ele e o excluímos. Precisamos cloná-lo mais uma vez. Ao rolar a janela do terminal, logo podemos identificar o comando git clone . Podemos executá-lo novamente digitando:

 !60

Mas se apenas olharmos para a tela e interpretarmos mal o número, podemos escolher o próximo número por engano:

 !61

Isso executa o próximo comando da lista, rm * . Isso exclui todos os arquivos em seu diretório atual.

Você também pode usar o “ ! ” ponto de exclamação com uma sequência de texto. O primeiro comando correspondente é executado para você. Ele não é exibido para que você possa verificar se é o que você estava pensando, ele é executado imediatamente.

Imagine o cenário em que você tem um script chamado “restart.sh”. Este script padroniza um conjunto de arquivos de configuração para algum software que você está escrevendo. Periodicamente, à medida que desenvolve e testa, você precisa limpar a lousa, então você chama seu script.

Este comando deve ser suficiente para localizar e corresponder ao comando em seu histórico e executá-lo.

 !ré

Mas se você usou o comando reboot desde a última vez que usou seu script, é o comando reboot que é encontrado e executado imediatamente.

O comando rm * sendo executado por engano

Em seu computador doméstico de usuário único, isso provavelmente é apenas um aborrecimento. Em um servidor compartilhado, também é um aborrecimento para muitas outras pessoas.

RELACIONADO: Como usar o comando history no Linux

6. A Calamidade dos Espaços

Espaços em nomes de arquivos e caminhos de diretório podem causar estragos. É por isso que eles sempre devem ser escapados ou citados.

Como lidar com espaços em nomes de arquivos no Linux
RELACIONADO Como lidar com espaços em nomes de arquivos no Linux

Problemas com espaços podem ser evitados usando a conclusão de tabulação. Pressione a tecla “Tab” quando estiver digitando um nome de arquivo ou caminho de diretório e o shell preencherá automaticamente o máximo possível do caminho ou nome de arquivo. Pode ser necessário digitar uma letra para diferenciar entre o arquivo desejado e qualquer outro arquivo que compartilhe parte do mesmo nome, mas pressionar novamente a tecla “Tab” completará o restante do nome do arquivo para você.

Isso economiza pressionamentos de tecla, evita que espaços se infiltrem devido a erros de digitação e escapa corretamente de quaisquer espaços legítimos para que não causem problemas.

Digamos que temos um diretório “Development” que contém dois outros diretórios, “geocoder” e “bin”. Há também um diretório “bin” dentro do diretório “geocoder”.

Para excluir os arquivos no diretório “geocoder/bin” e remover o diretório, você usaria este comando.

 rm -r geocodificador/bin 

Excluindo o diretório geocoder/bin

Agora imagine que você inadvertidamente adicionou um espaço após “geocoder/”, assim.

Este é o comando incorreto :

 rm -r geocodificador/ bin 

Excluindo por engano o geocodificador e os diretórios bin

Estrondo. O diretório “Desenvolvimento” agora está vazio. Os diretórios “Development/geocoder”, “Development/geocoder/bin” e “Development/bin” foram todos completamente apagados.

Lembre-se, a conclusão da guia é sua amiga.

RELACIONADO: Use a conclusão da tabulação para digitar comandos mais rapidamente em qualquer sistema operacional

7. Usando > Em vez de >>

O redirecionamento envia a saída de um processo para um arquivo. Usamos o sinal de maior “ > ” para capturar a saída de um processo. Se o arquivo existir, ele será esvaziado primeiro.

Digamos que estamos investigando um vazamento de memória. Temos um script chamado “memlog.sh”. Ele exibe estatísticas de memória uma vez por segundo. Vamos redirecioná-lo para um arquivo chamado “memory.txt”, para posterior análise.

 memlog.sh > memoria.txt
 cabeça memória.txt 

Capturando e exibindo a saída do script memlog.sh

No dia seguinte, queremos continuar com nossa investigação e reiniciamos o script. Desta vez, precisamos usar dois sinais de maior “ >> ” para que os novos dados sejam anexados ao arquivo.

 memlog.sh >> memoria.txt 

Anexar novos dados ao final de um arquivo existente

Se usarmos um único sinal de maior que “>”, perderemos os dados de ontem porque o arquivo é esvaziado primeiro.

RELACIONADO: O que são stdin, stdout e stderr no Linux?

8. Redirecionamento na direção errada

O redirecionamento pode usar o conteúdo de um arquivo como entrada para um programa.

Temos um arquivo chamado “placenames.sql” que queremos importar para sqlite3 . O arquivo de esquema descreve como recriar as tabelas do banco de dados. Ele também contém os dados que queremos armazenar no banco de dados. Com 1,3 GB e mais de 11 milhões de linhas, é um arquivo grande.

 ls -hl nomes de lugares.sql
 wc placenames.sql 

Verificando o tamanho de um arquivo com ls e wc

Podemos criar um novo banco de dados chamado “places.sqlite3” com este comando.

 sqlite3 lugares.sqlite3 < nomesdolugares.sql 

Importando um esquema de um arquivo para sqlite3

Na maioria das vezes, quando estamos redirecionando, usamos o caractere “>”. Você deve se concentrar para evitar digitar “>” por hábito. Se você fizer isso, qualquer saída que o sqlite3 gere será gravada em seu arquivo de esquema, eliminando-o.

Este é o comando incorreto :

 sqlite3 lugares.sqlite3 > nomes de lugares.sql 

Redirecionando erroneamente para um arquivo de esquema de sqlite3

Nosso arquivo de esquema foi destruído, substituído pela mensagem de boas-vindas do shell sqlite3 .

 cat nomes de lugares.sql 

O arquivo de esquema substituído contendo a mensagem de boas-vindas do sqlite3

Adeus, 1,3 GB de dados.

Como evitar erros de linha de comando

Existem bons hábitos que você pode adotar para ajudar a evitar esses tipos de erros.

Use a conclusão com tabulação sempre que possível. Você evitará problemas com espaços em caminhos de diretórios e nomes de arquivos.

Crie seus próprios aliases curtos e memoráveis ​​para comandos longos e complicados que você precisa usar ocasionalmente. Dessa forma, você não vai errar usando as opções e parâmetros errados.

Como digitar menos e trabalhar mais rápido no terminal do Linux
RELACIONADO Como digitar menos e trabalhar mais rápido no terminal Linux

É notoriamente difícil revisar sua própria escrita, mas é isso que você precisa fazer na linha de comando. Leia o que realmente está lá. Não basta olhar para ele e pensar que diz o que você quis digitar. O que isso realmente diz? Porque é isso que realmente vai fazer.

RELACIONADOS: 8 comandos mortais que você nunca deve executar no Linux