Introdução ao Terminal do Ubuntu Bruno Santos∗ 2016 Sumário 1 2 3 ∗ Introdução . . . . . . . . . . . . . . . . . . . O terminal . . . . . . . . . . . . . . . . . . Comandos do terminal . . . . . . . . . . . . 3.1 Sintaxe dos comandos . . . . . . . . 3.2 Recursos de ajuda e a diretiva –help 3.3 Executando comandos com privilégio 3.4 Explorando arquivos e pastas . . . . 3.5 Outros comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de administrador . . . . . . . . . . . . . . . . . . . . Graduando em engenharia de computação pela UFMT-VG . . . . . . . . . . . . . . . . . . . . (sudo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 3 3 4 5 7 1 Introdução Em nossos estudos sobre programação de computadores em geral, frequentemente iremos nos deparar com ferramentas que, ou funcionam melhor no sistema operacional Linux, ou até mesmo só existem no Linux. Por isso é de grande importância para o programador saber utilizar o Linux, ainda que de forma básica, para usufruir melhor destas ferramentas. Entretanto, usuários acostumados com o sistema operacional Windows, ou mesmo com o Mac OS, encontram dificuldades para se adaptarem ao Linux e uma delas, dentre outras, é a utilização do terminal de comandos. Trataremos de explicar aqui sua utilidade e de listarmos alguns comandos essenciais para seu melhor uso. Neste documento, utilizaremos distribuições do Linux (também chamadas de distros) da família Debian, isto é, as distribuições Debian, Ubuntu, Linux Mint, Elementary OS etc., pois estas são de fácil uso para usuários iniciantes no mundo Linux. As ilustrações e exemplos citados aqui foram feitos utilizando o Ubuntu versão 16.04 com interface gráfica Unity. Importante: Far-se-á referência neste tutorial ao Ubuntu por ser a mais popular distro da família Debian, entretanto todos os comandos listados aqui podem ser utilizado em qualquer uma das distros listadas acima. As ilustrações apresentadas aqui correspondem ao Linux Mint versão 18 com ambiente gráfico MATE. 2 O terminal Uma das melhores coisas do Ubuntu certamente é a sua rica interação com o usuário através da interface gráfica, quase se assemelhando ao Windows nesse quesito. Entretanto, muitas vezes nos vemos diante de situações onde temos que usar um programa ou fazer algum ajuste no sistema através de linhas de comando pois não há opções para tal pela interface gráfica. É aí que entra o terminal. O terminal é uma ferramenta muito poderosa do Linux. É um programa que permite a interação do usuário com o sistema através de comandos digitados, semelhante ao Prompt de Comando no Windows. Através dele é possível realizar qualquer tarefa no Linux e, frequentemente, não há na interface gráfica uma alternativa disponível para determinada tarefa, nos obrigando a utilizá-lo. Por exemplo, é possível acessarmos uma pasta de arquivos no Linux pela interface gráfica (abrindo o explorador de arquivos do Linux e navegando pelas pastas), assim como no Windows, e também acessar uma pasta pelo terminal. Entretanto, se quisermos utilizar, por exemplo, o programa Valgrind, não há como não utilizar o terminal pois o Valgrind não possui interface gráfica. O terminal no Ubuntu pode ser invocado pressionando as teclas Ctrl + Alt + T ou do Dash menu, localizado no canto superior esquerdo. No Linux Mint 18 ele possuirá uma tela semelhante a esta. Note na figura 1 que há um comando na tela com uma sintaxe semelhante a esta: usuario@nomepc :~\ $ Aqui “usuario” indica o nome de usuário que iniciou o terminal e “nomepc” indica o nome da máquina, que nada mais é do que um “apelido” para o computador, usado para algumas funções do Ubuntu. Já o til em seguida (˜) indica que o terminal está aberto na pasta Home, que é a pasta padrão de usuário do Ubuntu. É possível, através de comandos, navegar pelas pastas do sistema, o que será melhor explicado adiante na seção 3.4 deste tutorial. Figura 1 – Tela inicial do terminal 3 Comandos do terminal 3.1 Sintaxe dos comandos Os comandos no Ubuntu não são definidos de formas e nomes aleatórios: eles obedecem uma certa sintaxe. Por exemplo, ao abrirmos o terminal, se quisermos navegar até a pasta Imagens utilizamos o comando: cd Imagens O comando cd significa “change directory” e serve para acessarmos um diretório informado em seguida ao comando. Intuitivamente, ua sintaxe é: cd [ diretorio ] Então, ao usarmos o comando acima, devemos substituir [diretório] pelo nome da sub-pasta que queremos acessar dentro da pasta atual que estamos. Além disso, alguns comandos aceitam opções adicionais. Estas opções adicionais são chamadas de flags. Por exemplo, ao usarmos o compilador GCC para compilarmos um determinado arquivo chamado main.c, frequentemente utiliza-se a seguinte linha: gcc main . c -o main Com o comando acima estamos dizendo ao terminal para executar o GCC, compilando o arquivo main.c e criando um arquivo executável de nome “main”. 3.2 Recursos de ajuda e a diretiva –help Esta é uma ferramenta muito útil quando se quer saber qual é a sintaxe de determinado comando. Para isto, basta digitar no terminal o comando em si, seguido com a palavra –help (com dois hífens). [ comando ] -- help Por exemplo, vejamos as opções disponíveis quando invocamos o comando para compilar usando o GCC. Figura 2 – Obtendo informações sobre o comando “gcc” com a flag “–help” Note, contudo, que todo o conteúdo informado pelo Terminal, ao usar esta diretiva, estará escrito em inglês, independente do idioma do seu Linux. Outro recurso interessante: Ao digitar parcialmente um comando (por ex.: o comando “cd”), dar um espaço e pressionar rapidamente a tecla TAB duas vezes, o terminal exibirá todas as opções disponíveis para completar aquele comando. Figura 3 – Obtendo ajuda a completar o comando “cd” na pasta Home No exemplo acima vimos que, ao digitarmos “cd”, darmos um espaço e pressionarmos duas vezes a tecla TAB, o terminal nos informa todas as opções de pastas disponíveis para o usuário acessar com aquele comando. Aqui isto facilita e muito caso não soubermos quais são as pastas disponíveis para acessarmos dentro do diretório que estamos. 3.3 Executando comandos com privilégio de administrador (sudo) As vezes determinados comandos exigem permissão de administrador para que sejam executados. Normalmente, comandos que realizam alguma alteração no sistema exigem tal permissão. Neste caso, podemos utilizar a palavra “sudo” (que significa “super user do”) seguido pelo comando a ser invocado. sudo [ comando ] Onde, mais uma vez, [comando] deve ser substituído pelo comando a se executar. Um exemplo disso é a instalação do pacote Valgrind, através da seguinte linha de comando: sudo apt - get install valgrind Figura 4 – Aplicação do comando “sudo” na instalação de programas Estamos dizendo ao terminal para executar, com permissão de administrador, a instalação do programa “valgrind”. Note que, neste caso, apenas é possível instalar programas se o usuário tiver permissão de administrador, mas nem sempre isto será necessário. Veja pela imagem acima que, logo após digitado o comando com sudo e pressionado Enter, o terminal irá solicitar para que o usuário entre com sua senha de usuário. Mesmo que o usuário esteja digitando a senha, nada aparecerá na tela, mas isto é normal, apenas continue a digitar normalmente. Após a inserção da senha e pressionado Enter, o comando prosseguirá. 3.4 Explorando arquivos e pastas Ao utilizar um explorador de arquivos gráfico (como, por exemplo, o Windows Explorer, no Windows, o Nautilus, no Ubuntu etc.) perceba que ele abre em uma pasta inicial. Analogamente, o terminal funciona da mesma forma: Assim que é aberto, o terminal inicia-se na pasta Home do usuário, representado na linha de comando por um til (˜). A partir daí é possível navegar pelos diretórios do sistema através de alguns comandos simples. O primeiro comando que vem em mente é o cd, que significa “change directory”. Ou seja, ao digitar “cd” seguido do nome de uma pasta, o terminal fará acesso a esta pasta. Note que o acesso à pasta “Área de Trabalho” só foi realizado com sucesso pois de fato há uma pasta de mesmo nome dentro da pasta Home, que é a pasta de início do terminal. Caso não haja nenhum diretório com o nome especificado, o terminal irá retornar “No such file or diretory”. Através do terminal podemos também criar novas pastas. Utilizando o comando mkdir seguido do nome da nova pasta. mkdir [ diretorio ] Esta nova pasta será criada dentro da pasta atual onde você está acessando. Figura 5 – Abrindo a pasta “Área de Trabalho” com o comando “cd” Figura 6 – Criando uma nova pasta e acessando-a Ao acessarmos uma pasta, frequentemente queremos voltar para a pasta anterior. Para isto utilizamos o mesmo comando cd seguido de dois pontos (..) no lugar do diretório. Figura 7 – Voltando um nível acima nas pastas com “cd ..” Nos exemplos acima criamos e acessamos a pasta “Nova pasta” utilizando aspas no nome. Devemos fechar o nome do diretório entre aspas quando este nome for composto, caso contrário, o terminal retornará um erro de sintaxe. Além de criar pastas com comandos, podemos também remover pastas com o comando rm. Este comando pode ser utilizado para remover tanto arquivos quanto pastas, e sua sintaxe é: rm [ arquivo ou pasta ] Analogamente aos casos mostrados, caso o arquivo ou pasta especificado como [arquivo] no comando acima não existam, o terminal retornará o erro “No such file or diretory”. Encerramos esta subseção com um dos comandos mais utilizados: ls. Este comando lista todo o conteúdo da pasta na qual o terminal está acessando. Sua sintaxe é simples, bastando apenas digitar “ls” no terminal e pressionar Enter. O comando também aceita algumas flags. ls [ flags ] Uma flag útil a se utilizar com este comando é a “-l”, que lista todo o conteúdo da pasta, da mesma forma que “ls” faz, porém lista também alguns detalhes sobre os arquivos e pastas. Figura 8 – Diferença entre os comandos “ls” e “ls -l” 3.5 Outros comandos O terminal do Ubuntu possui uma variedade muito grande de diferentes comandos, e isso sem contar a infinidade de diferentes pacotes (programas) que o usuário pode utilizar através de linhas de comando, fazendo com que seja impossível elencar todos, ou a maioria, aqui. Portanto, elencamos abaixo alguns dos comandos mais utilizados no terminal, além dos comandos já explicados anteriormente. sudo su O comando acima muda o terminal para o modo de "super usuário"(ou administrador). Neste modo não é preciso inserir a diretiva "sudo"antes dos comandos que necessitam de privilégio de administrador. sudo apt - get install [ programa ] Faz o download do [programa] no repositório do Ubuntu e o instala no sistema. sudo apt - get purge [ programa ] Remove completamente o [programa] do Ubuntu. sudo apt - get autoremove Remove pacotes obsoletos do sistema, isto é, pacotes que o sistema não faz mais uso. É um bom comando a se rodar depois de executar “sudo apt-get purge [programa]”, por exemplo. sudo apt - get update Atualiza os repositórios (bancos de dados de programas) do Ubuntu. Note que este comando atualiza apenas os repositórios. Para atualizar todos os programas do sistema, incluindo drivers, usamos o comando abaixo. sudo apt - get upgrade Este comando sim realiza o “upgrade” do sistema, de fato. pwd Exibe o caminho completo da pasta (diretório) na qual o usuário está localizado. clear Limpa a tela do terminal. shutdown Desliga o computador. exit Fecha o terminal. Figura 9 – Execução do comando “sudo apt-get update”. Existem ainda muitos outros comandos adicionados via pacotes. É o caso, por exemplo, do programa Valgrind, muito utilizado para verificar leaks de memória em programas compilados em linguagem C, e que só funciona via linhas de comando no terminal. E este é apenas um exemplo dentre tantos outros pacotes disponíveis para o uso no terminal. E tudo isto é apenas uma introdução ao uso do terminal do Ubuntu. Faça o bom uso do mesmo e ele se tornará uma ferramenta muito poderosa para gerenciamento de arquivos, de programas e do sistema operacional como um todo, indispensável na vida do programador em C.