Este guia, o primeiro de uma série voltada a iniciantes, que cobrirá os aspectos mais básicos do sistema do pinguim, trata do terminal do Linux.
Infelizmente, ainda existe muita confusão envolvendo os termos terminal, shell, Bash e emulador de terminal, por exemplo.
Além disso, a confusão em torno destes termos, bem como de tudo o que eles representam, faz com que algumas pessoas se afastem do Linux.
Não se trata de uma regra, obviamente. Porém, incapaz de “dar nomes corretos aos bois” e entender como algumas coisas funcionam, uma parcela dos usuários acaba se afastando.
Motivos de afastamento não faltam, infelizmente. E eles vão desde “medo do terminal” até ideias errôneas sobre o OS (muitos dizem que o “Linux é difícil”, com base apenas naquilo que ouvem na mídia).
Além disso, muitos dos que afirmam que o sistema operacional livre é “complicado” nunca sequer o testaram. Ou, quando o fizeram, não se preocuparam em entender realmente como o “novo” sistema operacional funciona.
Isto porque saindo do Windows, por exemplo, alguém recém chegado ao Linux terá que aprender (ou reaprender) novos modos de trabalho, recursos, ferramentas e sistemas.
Assim, e muitas vezes motivado por impressões e ideias preconcebidas e errôneas muito difundidas, este usuário acaba desinstalando do OS e retornando ao Windows.
Em primeiro lugar devo dizer que este guia e esta série não trata a respeito do “melhor sistema operacional” do mundo, até mesmo porque trata-se de algo que pode variar bastante, dependendo de cada pessoa.
Ao contrário: minha intenção é apresentar os pontos positivos do Linux, para que iniciantes (e até mesmo quem ainda está apenas pensando em instalar o sistema operacional) tenham uma ideia melhor a seu respeito.
Nesse sentido, é natural que guias para iniciantes cubram o terminal e seus comandos, além de explicações e detalhes em profundidade a respeito de termos como shell, emuladores de terminal, etc. Até mesmo porque tudo isto representa uma parte essencial do sistema operacional livre.
Uma introdução ao terminal do Linux
Desde já é importante destacar que já existem alguns guias no TecLinux cobrindo detalhes e comandos passíveis de uso no terminal.
Há, por exemplo, um tutorial mais abrangente, envolvendo mais de 40 comandos diferentes, e há também uma coleção com algumas dicas e truques úteis.
Publiquei, algum tempo atrás, além disso, um guia contendo alguns comandos SSH, além de um outro voltado a comandos um pouco mais avançados.
De qualquer forma, e como este guia é o primeiro de uma série voltada a iniciantes, seguem abaixo maiores detalhes sobre assuntos relacionados.
Através dos capítulos abaixo, você entenderá o que é um terminal, bem como o que é shell, Bash e emuladores de terminal.
O que é o terminal do Linux?
Basicamente, trata-se de uma interface através da qual você pode introduzir comandos para interagir com um computador. Em nosso caso, com uma máquina rodando Linux.
Há muita confusão aqui, entretanto, e muitas pessoas meio que confundem muitas coisas. Na verdade, o conceito inicial e/ou principal de terminal remonta a meados do século passado.
Naquela época, alguns pesquisadores decidiram que era chegado o momento de fazer com que mais de um usuário pudesse utilizar o sistema operacional Unix (do qual o próprio Linux deriva) simultaneamente.
Isto porque, naquela época, os computadores também eram caríssimos, geralmente presentes apenas em grandes empresas e universidades.
Havia também um outro problema, que impedia a existência de um Unix “multi-usuário”: seria necessário um teclado e um monitor para cada pessoa, para a introdução e o recebimento das informações, e estes, na época, também eram caríssimos.
Além disso, é importante também destacar o fato de que, naquela época, os teclados eram fisicamente conectados aos computadores.
Assim, chegou-se a uma solução, através do uso de Teletipos, algo, na época, muito mais barato que teclados e monitores. Agora, você deve ter em mente que um “terminal de verdade” é, na realidade, uma peça de hardware.
O uso de Teletipos como terminais
O Teletipo (ou Teletype, em inglês) era uma espécie de “máquina de escrever”. Ela era dotada de um teclado, através do qual as informações podiam ser introduzidas, porém também imprimia, o que representava uma maneira de recebimento dos dados/output.
Ou seja, os pesquisadores acabaram conectando vários Teletipos a um único computador Unix, e assim cada pessoa podia se logar de forma separada, com seu próprio usuário e sua própria senha.
Agora estes usuários, utilizando os “práticos” Teletipos, eram capazes de introduzir e obter informações em/de um computador.
Dessa forma nasceu o primeiro terminal. E ele, sendo uma interface entre computadores e seres humanos, surgiu primeiro no sistema operacional Unix.
Perceba também de onde vem o acrônimo TTY (de Teletype), e porque ele ainda é usado, algumas vezes, quando desejamos nos referir ao terminal do Linux ou de outros sistemas Unix-like.
Além disso, não é preciso muito esforço para entendermos porque, pelo menos no inicio de tudo, o terminal era um hardware, e não um software.
Agora, vamos conhecer detalhes a respeito dos emuladores de terminal.
O que é um emulador de terminal?
Agora que você conhece um pouco mais a respeito do terminal Linux e como/porque, no início, ele era um hardware, chegou o momento de entender o que é um emulador de terminal.
Basicamente, se você usa Linux, em algum momento certamente já se deparou com um emulador de terminal. Porém, emuladores também são encontrados em outros sistemas operacionais.
Também existem emuladores disponíveis para Windows, como o ConEmu, por exemplo. O mesmo acontece com o macOS, além disso.
E no Linux, obviamente, existem vários. Aqui nós temos, por exemplo, o Konsole, o XTerm e o Gnome Terminal.
Mas também existem outros. Por exemplo:
- Alacritty;
- Terminator;
- Tilix;
- Yakuake (minha escolha);
Dentre vários outros, é claro, e todos geralmente gratuitos.
Assim, saímos dos terminais em forma de hardware e adotamos terminais representados por um software. Sim, um emulador de terminal é um software. Um programa que emula (imita, simula) os “velhos” terminais (os Teletipos, por exemplo).
Em um destes programas, o usuário digita comandos e recebe “respostas”, em forma de uma saída/output. Por exemplo, o comando abaixo retorna há quanto tempo o sistema está funcionando, sem que uma reinicialização tenha sido realizada:
uptime
E como estamos aqui falando a respeito de programas, é importante também dizer que cada emulador conta com seu próprio conjunto de recursos.
Usuários diferentes podem se adaptar a determinadas opções melhor do que a outras. E é assim, por exemplo, que diariamente eu utilizo o Yakuake (Yet Another Kuake – outro emulador). Pelo menos por enquanto, este é meu emulador preferido.
Como você pode facilmente perceber, também existem vários modos de trabalharmos com diferentes emuladores. Muitos oferecem a possibilidade de abertura de mais de uma tela (em abas), além disso.
Em suma, porém, emuladores recebem nossos comandos e, então, os transmitem ao shell.
O que é shell?
Você já percebeu que tudo isto está interligado. Assim, chegou o momento de você também entender o que é shell, palavra que, em inglês, significa “concha”.
Resumidamente, o shell interpreta os comandos que o usuário insere no emulador de terminal. De certa maneira, o emulador de terminal é um “meio de transporte”.
O emulador recebe os comandos e os transmite ao shell, que é quem realmente interpreta cada comando, cada instrução que você fornece ao computador.
Obs: o shell também é o responsável pela interpretação de scripts, vale lembrar.
O shell, na verdade, também é um software. Digitando um comando em um emulador de terminal (como o Konsole, por exemplo), você está na verdade solicitando que ele transmita tal comando ao intérprete (o shell).
É este intérprete, então, que trata as “ordens” de tal modo que o sistema operacional as entenda e saiba o que fazer.
Vale ressaltar que tudo isto (digitação de comandos, saídas, etc) é feito através de uma interface de linha de comando (command line interface, ou CLI).
Desse modo, vale também dizer que existem vários shells, cada um deles com suas respectivas peculiaridades.
Há, por exemplo, o Bash (Bourne-Again shell), bem como o Zsh (Z-shell). Mas também existem alguns outros, como o Csh (C Shell) e o Tcsh.
De qualquer forma, o Bash e o Zsh são os mais utilizados. E eu vou além: o Bash é, de longe, o mais largamente utilizado.
Grande parte das distros Linux modernas possuem o Bash instalado por padrão. Assim, quando você abre o seu Konsole, o intérprete de comandos que está sendo carregado muito provavelmente é o Bash.
Agora, simplificando mais as coisas e retornando temporariamente ao capítulo anterior, é importante também lembrar que um emulador de terminal é um software que executa um shell.
E este nome, aliás (shell, ou concha), vem do fato de que este componente “envolve” o sistema operacional. Ele é como uma concha, uma camada que circunda o S.O. Esta concha se comunica com a “ostra” em seu interior (o sistema operacional), passando a ela as “ordens” inseridas através do emulador de terminal.
Entendendo o prompt de comando (ou prompt shell)
É aqui, no prompt de comando, ou prompt shell, que o Linux (bem como outros sistemas operacionais) aguarda pelos comandos do usuário.
Na linha de comando existem algumas informações importantes, que acabam passando desapercebidas por alguns usuários.
Obviamente, dependendo do emulador e/ou do shell em uso (mais detalhes acima), muitas coisas podem ser diferentes, ou até mesmo personalizadas.
Particularmente, utilizo atualmente o conjunto Yakuake + Zsh. Assim, alguns dos detalhes abaixo podem ser diferentes do seu sistema. Mas basicamente, quando você abre seu terminal, ou quando se conecta com seu servidor através do SSH, uma tela semelhante à abaixo é exibida:
Devo também dizer que a imagem acima pode ser bem diferente da sua, por exemplo. Isto porque eu também utilizo o “Oh My Zsh”, um framework open source para o Zsh, o qual é bastante customizável.
Perceba também como são grandes as possibilidades de personalização no Linux. Porém, não entrarei em detalhes a respeito deste framework neste guia. Vale dizer que em uma máquina rodando Ubuntu e Bash, por exemplo, você muito provavelmente terá um prompt da seguinte maneira:
nome_do_usuario@hostname:~$
Agora, levando os exemplos acima em consideração (incluindo a imagem), vamos a algumas explicações:
- Nome do usuário:
marcos_zy
(o usuário atual no sistema); - Hostname/nome da máquina:
marcos-manjaro-lnx
; - Diretório atual:
~
(ou seja, neste caso estamos no diretório/home/marcos_zy
); - Data: esta informação geralmente não é exibida. Aqui, ela vem de um tema do “Oh My Zsh” que encontra-se instalado.
Além disso, conforme você vai navegando através de diretórios, através do comando cd
, o prompt vai sendo alterado. Por exemplo, estando em ~/
(ou /home/marcos_zy
), digitei o comando cd Documentos
e a linha de comando foi alterada, indicando agora a pasta em que estou.
Veja:
Note que não se trata de nada complicado. Ao contrário, tudo é muito simples, principalmente quando você faz uso do terminal diariamente.
Agora não existem mais motivos para você temer o terminal, não é mesmo? Além disso, você também entendeu as diferenças entre terminal, emulador de terminal, shell e Bash, não é?
Terminal do Linux: uma introdução aos comandos
Em primeiro lugar, vamos entender de forma fácil o que é um comando, o qual você pode utilizar enquanto no terminal do Linux.
O que é um comando Linux?
Basicamente, um comando pode ser um alias
(um apelido) para alguma tarefa e/ou conjunto de comandos, ou então representar um programa propriamente dito.
Por exemplo, através do comando top
nós estamos na verdade “invocando” um executável. Um pequeno programa localizado no diretório /usr/bin
. Assim, digitando o comando abaixo no terminal você obterá esta mesma informação:
which top
O comando acima retorna o local onde o executável do top
se encontra. Ou seja, o comando top
aciona /usr/bin/top
automaticamente.
E isto acontece, de forma “mágica”, porque há uma determinada variável de ambiente chamada PATH
. É ela quem instrui o Linux a respeito dos diretórios onde ele deve buscar por executáveis.
Há inclusive um comando que exibe uma lista com todos estes diretórios:
echo $PATH
Não entrarei aqui em maiores detalhes a respeito de variáveis de ambiente, até mesmo para não complicar as coisas, uma vez que este guia prima pela facilidade de leitura e compreensão, além de ser voltado aos iniciantes no Linux.
Existem também alguns comandos pré-configurados dentro do próprio terminal. É o caso do pwd
e do cd
, por exemplo.
Mas, em suma, estas informações iniciais são suficientes para dar a você uma noção geral sobre o assunto.
O que é um argumento em um comando Linux?
Um argumento, em um comando do Linux, é uma informação fornecida pelo usuário para que o comando realize determinada ação.
Repare que simplesmente digitar cd
em seu terminal não faz muito sentido. Tudo bem, até faz, dependendo da situação, uma vez que este também é um comando que faz com que você retorne ao diretório do seu usuário.
Mas o cd
geralmente é usado com algum argumento. Assim, geralmente você digita cd diretorio
.
Por exemplo:
cd Documentos
Portanto, de forma resumida, cd
, aqui, é o comando. E Documentos
representa o argumento. Através deste conjunto, nós utilizamos um pequeno programa, para a mudança de diretório (afinal de contas, cd
vem de change directory, ou “mudar diretório”).
Apenas lembre-se de que também é possível utilizar mais de um argumento no terminal do Linux, juntamente com um comando: cada um dos argumentos será devidamente processado, na mesma ordem em que eles foram digitados.
Um argumento, além disso, pode ser representado pelo nome de um diretório, pelo nome de um arquivo, pelo caminho completo de determinada pasta, etc.
O que é uma flag, ou opção, em um comando Linux?
Uma flag (também chamada de “opção”) altera o comportamento de um comando. Flags representam um meio de definirmos opções para um comando.
Ou seja, através de flags/opções, nós dizemos como desejamos que a “ordem” seja executada. Para utilizar uma opção juntamente com um comando geralmente usamos um -
ou um --
. Por exemplo, o comando abaixo lista conteúdo de um diretório de forma “legível para humanos”:
ls -h
Note que, no exemplo acima, ls
é o comando, e -h
é a flag, ou opção. O comando completo também pode ser incrementado, através de outras flags. Por exemplo, é possível usá-lo também do seguinte modo:
ls -lha
Opções podem também ser combinadas com argumentos, para um controle ainda maior. Por exemplo:
ls -lha ~/Documentos
Repare que no exemplo acima, tanto faz o diretório onde você se encontra. Observe também que o comando solicita a exibição do conteúdo da pasta ~/Documentos
(ou /home/usuario/Documentos
).
Além disso, muitas vezes existem formas curtas e longas de utilizar uma opção. Assim, você pode tanto digitar ls -a
quanto ls --all
, por exemplo, pois o resultado será o mesmo.
Algumas vezes, determinadas opções de comandos podem receber argumentos. Assim, é possível, por exemplo, refinar ainda mais a exibição de determinados resultados. Porém, e até para evitar complicar as coisas, deixarei isto de lado, pelo menos por enquanto.
Por que o terminal do Linux é importante?
São inúmeros os motivos para entender melhor e usar o terminal do Linux. Trata-se, acima de tudo, de um método de trabalho extremamente mais rápido. Digitar comandos no shell é muito mais rápido que usar uma interface gráfica (GUI).
O nível de controle sobre o computador, além disso, é bem maior. E isto pode ser ainda mais (e melhor) percebido quando estamos lidando com um servidor remoto.
Imagine como seria complicado, por exemplo, criar e instalar chaves SSH para trabalhar com uma máquina remota, através de uma interface gráfica (se é que isto é possível).
O terminal ainda permite que o usuário automatize tarefas as mais diversas, e o Cron é apenas um dos exemplos possíveis.
O terminal do Linux é extremamente versátil, e nele você pode inclusive “dar uma saidinha” e acessar um outro prompt, como o prompt do MySQL, por exemplo.
Controlar permissões de arquivos e diretórios, e até mesmo reiniciar máquinas localizadas em qualquer lugar do globo: tudo isto, e muito mais, é possível através do terminal. Assim, reforçando mais uma vez, você não deve temer o terminal. Pelo contrário.
Aprender a utilizar o terminal do Linux corretamente pode até demorar um pouco. Há, certamente, uma certa curva de aprendizado. Porém, passada a fase inicial, são muitos os benefícios a médio e a longo prazo (e até mesmo a curto prazo, dependendo da situação e das suas necessidades).
Como acessar o terminal do Linux?
Como geralmente acontece no Linux, existem sempre vários modos de realizar uma mesma tarefa, inclusive dependendo da sua distribuição.
Mas de qualquer maneira, um dos primeiros métodos que você pode tentar é a combinação de teclas CTRL+ALT+T
.
Você também pode acessar seu menu de aplicativos, por exemplo, e buscar pelos emuladores de terminal instalados (Gnome Terminal, Konsole, etc).
Os métodos, aqui, podem variar bastante, até mesmo dependendo do ambiente de desktop em uso. E você pode até mesmo criar atalhos em seu desktop, uma vez encontrada a localização do terminal.
Alguns comandos básicos do Terminal do Linux
Agora que você já sabe um pouco mais a respeito do terminal do Linux, bem como de alguns conceitos relacionados, que tal conferir alguns comandos básicos do sistema operacional?
Não pretendo aqui entrar em maiores detalhes a respeito destes comandos. Abaixo você encontra uma simples tabela contendo alguns dos comandos básicos mais úteis no dia a dia, pelo menos quando você está iniciando no Linux.
Opções adicionais, vários modos de uso e comandos mais avançados, no entanto, deixarei para um guia futuro, o qual será publicado em breve.
Vamos lá:
Comando | Descrição |
---|---|
cd | Muda/acessa diretório (exemplo: cd ~/ ) |
clear | Limpa a tela do terminal. Alternativa: CTRL + L |
pwd | Exibe o diretório atual |
man | Exibe o manual ou informações de comandos (exemplo: man whoami ) |
sudo | Executa um comando como o “superusuário” (exemplo: sudo apt install ) |
ls | Lista o conteúdo de um diretório (exemplo: ls -a ~/Documentos ) |
mkdir | Cria diretórios (exemplo: mkdir diretorio_teste ) |
rmdir | Apaga diretórios |
rm | Apaga arquivos (exemplo: rm arquivot.txt ) |
touch | Cria arquivos vazios (exemplo: touch arquivo_teste.txt ) |
cp | Copia arquivos (exemplo: cp [origem] [destino] |
mv | Move arquivos (exemplo: mv [origem] [destino] |
exit | Encerra a sessão do shell / fecha o terminal |
history | Exibe um histórico com os comandos digitados |
uname | Exibe informações básicas a respeito do sistema |
ssh | Faz uso do SSH |
df | Exibe informações sobre o sistema de arquivos (exemplo: df -h ) |
cal | Exibe um pequeno calendário no prompt de comando |
Em um guia futuro incluirei mais comandos, divididos em categorias (navegação, gerenciamento de processos, gerenciamento de arquivos, gerenciamento de rede, gerenciamento de usuários e grupos, pacotes de software, controle de permissões, etc).
Os comandos acima, entretanto, funcionam como uma espécie de base inicial, sobre a qual fundamentaremos nosso conhecimento. Eles são os mais básicos, fáceis de usar embora também possam ser incrementados através de argumentos e flags, dentre outros elementos.
Conclusão
Hoje você obteve um panorama profundo e detalhado a respeito do terminal do Linux. E mais: você também conheceu um pouco da história deste elemento tão importante para o Linux e demais sistemas Unix-like.
Através deste guia você obteve maiores informações sobre shell e Bash, além disso, e finalmente entendeu quais são os motivos que levam muitas pessoas a confundirem estes termos.
Este é um guia voltado aos iniciantes neste fascinante mundo do Linux. Outros guias pertencentes a esta série para iniciantes serão publicados em breve, sempre contendo informações detalhadas e exemplos práticos de utilização.
Espero que o conteúdo tenha sido do seu agrado. Em caso de dúvidas, não hesite em deixar um comentário.
Até a próxima!
0 comentários