Linhas de comando: por que as pessoas ainda se preocupam com elas?

A linha de comando tem quase 50 anos, mas não está desatualizada. Terminais baseados em texto ainda são a melhor maneira de realizar muitas tarefas, mesmo na era dos desktops gráficos e dos gadgets com tela de toque.

Na verdade, a linha de comando está se tornando mais respeitada do que nunca com a criação de um novo e poderoso aplicativo de Terminal do Windows pela Microsoft. O ambiente PowerShell do Windows 10 é surpreendentemente poderoso, mas a Microsoft ainda se esforçou para adicionar suporte basicamente ao ambiente de linha de comando Linux completo do Windows 10.

A linha de comando já foi a única opção

Ao mesmo tempo, se você quisesse interagir com um computador, você digitou. Foi isso. Não havia mais nada. Isso pode parecer restritivo e arcaico, mas como um avanço em relação ao uso de cartões perfurados ou fitas de papel perfurado, a digitação foi radical e transformadora. E migrando de teletipoquistas com seus rolos de papel para terminais com tubo de raios catódicos As telas (CRT) foram outra mudança de terreno nas interações entre humanos e computadores.

Essa etapa pavimentou o caminho para que o shell interativo realmente ganhasse seu próprio valor. Agora você pode enviar instruções para o computador e muito rapidamente ter as respostas exibidas na tela. Chega de clac-clac-clac enquanto você esperava que a impressão do papel saísse do teletipo.

Muito justo, mas isso era antes, agora. A computação é um jogo totalmente diferente. Além dos casos óbvios de bloqueio, como usar um computador que não tem um ambiente gráfico de área de trabalho instalado ou usar um computador remoto via SSH em uma conexão de baixa largura de banda, ou controlando um sem cabeça ou embutido sistema, por que usar a linha de comando em uma área de trabalho gráfica?

Jargão Explicado

Termos como linha de comando, janela de terminal e shell são usados ​​quase que indistintamente por algumas pessoas. Isso é jargão incorreto. Eles são todos muito diferentes. Eles são relacionados, mas não são a mesma coisa.

Uma janela de terminal é uma janela em um ambiente gráfico de desktop que executa uma emulação de um terminal de teletipo.

  7 extensões Muzei Live Wallpaper menos conhecidas, mas notáveis

O shell é o programa executado dentro da janela do terminal. Ele recebe sua entrada e, dependendo do que você digitou, tenta interpretar e executar as próprias instruções, repassá-las a algum dos outros utilitários que compõem o sistema operacional ou encontrar um script ou programa que corresponda ao que você digitou.

A linha de comando é onde você digita. É o prompt que o shell apresenta quando está esperando que você insira algumas instruções. O termo “linha de comando” também é usado para se referir ao conteúdo real do que você digitou. Por exemplo, se você conversar com outro usuário de computador sobre uma dificuldade que teve ao tentar fazer um programa rodar, ele pode perguntar: “Qual linha de comando você usou?” Eles não estão perguntando qual concha você estava usando; eles querem saber qual comando você digitou.

Juntos, eles se combinam para formar o interface da Linha de comando (CLI).

Por que usar a linha de comando em 2019?

O CLI pode parecer retrógrado e confuso para quem não o conhece. Certamente não há lugar em um sistema operacional moderno para uma maneira tão desatualizada e geek de usar um computador? Não desistimos de tudo isso décadas atrás, quando janelas, ícones e mouses apareceram e ambientes de área de trabalho gráfica com interfaces gráficas do usuário (GUIs) tornaram-se disponíveis?

Sim, a GUI existe há décadas. A primeira versão do Microsoft Windows foi lançado em 1985 e se tornou a norma da área de trabalho do PC com o lançamento do Windows 3.0 em 1990.

O X Window System, usado em Unix e Linux, era introduzido em 1984. Isso trouxe ambientes de desktop gráficos para o Unix e seus muitos derivados, clones e ramificações.

Mas o lançamento do Unix antecede esses eventos por um mais de uma década. E porque não havia outra opção, tudo tinha que ser possível através da linha de comando. Toda interação humana, toda configuração, todo uso do computador tinha que ser realizado através do humilde teclado.

Portanto, ipso facto, o CLI pode fazer tudo. Uma GUI ainda não pode fazer tudo o que a CLI pode fazer. E mesmo para as partes que ele pode fazer, a CLI geralmente é mais rápida, mais flexível, pode ter scripts e é escalonável.

E há um padrão.

Eles são padronizados graças ao POSIX

POSIX é um padrão para sistemas operacionais do tipo Unix—Basicamente, tudo que não é Windows. E até mesmo o Windows tem o subsistema Windows para Linux (WSL.) Abra uma janela de terminal em qualquer sistema operacional compatível com POSIX (ou quase compatível) e você se verá em um shell. Mesmo que o shell ou distribuição forneça suas próprias extensões e aprimoramentos, contanto que forneçam a funcionalidade POSIX central, você poderá usá-la imediatamente. E seus scripts serão executados.

  Como excluir sua conta Spotify

A linha de comando é o menor denominador comum. Aprenda a usá-lo e, independentemente da distribuição do Linux e do ambiente gráfico de desktop, você poderá realizar todas as tarefas de que necessita. Diferentes desktops têm sua própria maneira de fazer as coisas. Diferentes distribuições de Linux agrupam vários utilitários e programas.

Mas abra uma janela de terminal e você se sentirá em casa.

Os comandos são projetados para funcionar juntos

Cada um dos comandos do Linux é projetado para fazer algo específico e bem feito. A filosofia de design subjacente é adicionar mais funcionalidade, adicionando outro utilitário que pode ser canalizado ou encadeado com os existentes para atingir o resultado desejado.

Isso é tão útil que a Microsoft saiu de seu caminho para adicionar suporte para a linha de comando completa do Linux no Windows 10!

Por exemplo, o comando sort é usado por outros comandos para classificar o texto em ordem alfabética. Não há necessidade de construir capacidade de classificação em cada um dos outros comandos do Linux. Geralmente, os aplicativos GUI não permitem esse tipo de interoperação colaborativa.

Veja o exemplo a seguir. Isso usa o comando ls para listar os arquivos no diretório atual. Os resultados são canalizados para o comando sort e classificado na quinta coluna de dados (que é o tamanho do arquivo). A lista classificada é então canalizada para o comando head que, por padrão, lista as primeiras dez linhas de sua entrada.

ls -l | sort -nk5,5 | head

Obtemos uma lista dos menores arquivos do diretório atual.

Alterando um comando – usando tail em vez de head – podemos obter uma lista dos dez maiores arquivos no diretório atual.

ls -l | sort -nk5,5 | tail

Isso nos dá nossa lista dos dez maiores arquivos, conforme esperado.

A saída dos comandos pode ser redirecionada e capturada em arquivos. A saída regular (stdin) e as mensagens de erro (stderr) podem ser capturadas separadamente.

Os comandos podem incluir variáveis ​​de ambiente. O seguinte comando listará o conteúdo do seu diretório inicial:

ls $HOME

Isso funciona onde quer que você esteja na árvore de diretórios.

  Como agendar mensagens no Slack

Se a ideia de toda aquela digitação ainda o perturba, técnicas como o preenchimento com tabulação podem reduzir a quantidade de digitação que você precisa fazer.

Scripts permitem automação e repetibilidade

Os humanos estão sujeitos a erros.

Os scripts permitem que você padronize um conjunto de instruções que você sabe que serão executadas da mesma maneira sempre que o script for executado. Isso traz consistência à manutenção do sistema. As verificações de segurança podem ser integradas aos scripts que permitem que o script determine se deve prosseguir. Isso elimina a necessidade de o usuário ter conhecimento suficiente para tomar a decisão por conta própria.

Como você pode automatizar tarefas usando cron no Linux e outros sistemas semelhantes ao Unix, tarefas longas, complicadas e repetitivas podem ser simplificadas ou, pelo menos, descobertas uma vez e então automatizadas para o futuro.

Os scripts do PowerShell oferecem potência semelhante no Windows e você pode agendá-los para serem executados no Agendador de tarefas. Por que clicar em 50 opções diferentes toda vez que você configura um computador quando pode executar um comando que muda tudo automaticamente?

O melhor de dois mundos

Para obter o melhor do Linux – ou de qualquer sistema operacional como um usuário avançado – você realmente precisa usar a CLI e a GUI.

A GUI é insuperável para o uso de aplicativos. Mesmo os defensores mais obstinados da linha de comando precisam sair da janela do terminal e usar suítes de produtividade de escritório, ambientes de desenvolvimento e programas de manipulação gráfica de vez em quando.

Os viciados em linha de comando não odeiam a GUI. Eles apenas favorecem os benefícios de usar a CLI – para as tarefas apropriadas. Para administração, o CLI ganha sem rodeios. Você pode usar a CLI para fazer alterações em um arquivo, um diretório, uma seleção de arquivos e diretórios ou alterações completamente globais com o mesmo esforço. Tentar fazer isso com a GUI geralmente requer ações demoradas e repetitivas do teclado e do mouse conforme o número de objetos afetados aumenta.

A linha de comando oferece a maior fidelidade. Cada opção de cada comando está disponível para você. E muitos dos comandos do Linux têm muitas opções. Para dar apenas um exemplo, considere o comando lsof. Dê uma olhada em seu página man e então considere como você envolveria isso em uma GUI.

Existem muitas opções para apresentar ao usuário em uma GUI eficaz. Seria opressor, pouco atraente e desajeitado de usar. E isso é o completo oposto do que uma GUI pretende ser.

São cavalos para cursos. Não se intimide com o cavalo CLI. Geralmente é o corcel mais rápido e ágil. Ganhe suas esporas e você nunca se arrependerá.