8 erros de digitação que você realmente precisa evitar no Linux
Publicados: 2023-01-15A 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.
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
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
O novo grupo é visto depois que o usuário efetua login e logoff.
grupos
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
Da próxima vez que fizerem login, descobrirão que estão em apenas um grupo.
grupos
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
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
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.
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
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.
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
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
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 arquivo crontab
é aberto em um editor. Você pode fazer alterações e adicionar novos comandos.
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
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.
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.
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
Agora imagine que você inadvertidamente adicionou um espaço após “geocoder/”, assim.
Este é o comando incorreto :
rm -r geocodificador/ 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
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
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
Podemos criar um novo banco de dados chamado “places.sqlite3” com este comando.
sqlite3 lugares.sqlite3 < nomesdolugares.sql
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
Nosso arquivo de esquema foi destruído, substituído pela mensagem de boas-vindas do shell sqlite3
.
cat nomes de lugares.sql
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.
É 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