# Os comandos mais importantes do Linux

Tal como a maioria dos sistemas operativos modernos, o Linux também inclui um **shell** através do qual é possível gerir o sistema com a ajuda de **linhas de comando**: todas as configurações efetuadas na interface gráfica (GUI) também podem ser realizadas no chamado shell. Apresentamos-lhe os comandos mais importantes e, além disso, explicamos as suas funções e possíveis utilizações.

## Lista dos 50 comandos mais importantes do Linux

<table>
  <thead>
    <tr>
      <th>Comando</th>
      <th>Descrição</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>sudo</td>
      <td>Executa programas com as permissões de outros utilizadores</td>
    </tr>
    <tr>
      <td>ls</td>
      <td>Mostra o conteúdo do diretório como uma lista</td>
    </tr>
    <tr>
      <td>cd</td>
      <td>Navega pela árvore de ficheiros</td>
    </tr>
    <tr>
      <td>touch</td>
      <td>Cria um novo ficheiro</td>
    </tr>
    <tr>
      <td>mkdir</td>
      <td>Cria um diretório</td>
    </tr>
    <tr>
      <td>rm</td>
      <td>Apaga ficheiro ou diretório</td>
    </tr>
    <tr>
      <td>rmdir</td>
      <td>Apaga o diretório</td>
    </tr>
    <tr>
      <td>mv</td>
      <td>Mover ficheiros ou diretórios</td>
    </tr>
    <tr>
      <td>cp</td>
      <td>Copia ficheiros ou diretórios</td>
    </tr>
    <tr>
      <td>pwd</td>
      <td>Mostra o nome do diretório</td>
    </tr>
    <tr>
      <td>zip</td>
      <td>Gravar ficheiros em arquivos zip</td>
    </tr>
    <tr>
      <td>unzip</td>
      <td>Extrair ficheiros de arquivos zip</td>
    </tr>
    <tr>
      <td>ln</td>
      <td>Cria um link simbólico</td>
    </tr>
    <tr>
      <td>cat</td>
      <td>Agrupa o conteúdo de vários ficheiros</td>
    </tr>
    <tr>
      <td>grep</td>
      <td>Explora ficheiros de texto</td>
    </tr>
    <tr>
      <td>diff</td>
      <td>Compara ficheiros ou diretórios</td>
    </tr>
    <tr>
      <td>cmp</td>
      <td>Compara ficheiros ao nível do byte</td>
    </tr>
    <tr>
      <td>tar</td>
      <td>Grava e extrai ficheiros no ficheiro tar</td>
    </tr>
    <tr>
      <td>echo</td>
      <td>Exibe uma cadeia de caracteres na saída padrão</td>
    </tr>
    <tr>
      <td>clear</td>
      <td>Limpa a janela do terminal</td>
    </tr>
    <tr>
      <td>ssh</td>
      <td>Ligação a outro computador com *Secure Shell*</td>
    </tr>
    <tr>
      <td>wget</td>
      <td>Descarregar um ficheiro diretamente da Internet</td>
    </tr>
    <tr>
      <td>ping</td>
      <td>Verifica a ligação de rede</td>
    </tr>
    <tr>
      <td>ftp, sftp</td>
      <td>Transferir ficheiros através de (S)FTP</td>
    </tr>
    <tr>
      <td>ip</td>
      <td>Gerir interfaces IP</td>
    </tr>
    <tr>
      <td>apt/pacman/yum</td>
      <td>Descarregar e gerir pacotes de software</td>
    </tr>
    <tr>
      <td>netstat</td>
      <td>Mostra o estado das interfaces de rede</td>
    </tr>
    <tr>
      <td>traceroute</td>
      <td>Rastreamento de pacotes de dados</td>
    </tr>
    <tr>
      <td>route</td>
      <td>Exibe e edita tabelas de encaminhamento IP</td>
    </tr>
    <tr>
      <td>dig</td>
      <td>Solicita informações do DNS</td>
    </tr>
    <tr>
      <td>mount/unmount</td>
      <td>Adiciona sistemas de ficheiros (configurar/montar)</td>
    </tr>
    <tr>
      <td>dd</td>
      <td>Copiar ficheiros, partições ou discos bit a bit</td>
    </tr>
    <tr>
      <td>chmod</td>
      <td>Gere as permissões de acesso</td>
    </tr>
    <tr>
      <td>chown</td>
      <td>Gerencia direitos de propriedade</td>
    </tr>
    <tr>
      <td>adduser</td>
      <td>Adiciona/altera uma conta de utilizador</td>
    </tr>
    <tr>
      <td>passwd</td>
      <td>Cria/edita senhas para contas de usuário</td>
    </tr>
    <tr>
      <td>groupadd</td>
      <td>Cria grupos de utilizadores</td>
    </tr>
    <tr>
      <td>chattr</td>
      <td>Gere os atributos dos ficheiros</td>
    </tr>
    <tr>
      <td>lsattr</td>
      <td>Mostra os atributos do ficheiro</td>
    </tr>
    <tr>
      <td>chgrp</td>
      <td>Gerencia os grupos de arquivos e diretórios</td>
    </tr>
    <tr>
      <td>man</td>
      <td>Abre o manual</td>
    </tr>
    <tr>
      <td>shutdown, reboot</td>
      <td>Desliga ou reinicia o sistema</td>
    </tr>
    <tr>
      <td>top</td>
      <td>Lista dinâmica dos processos em execução</td>
    </tr>
    <tr>
      <td>lscpu</td>
      <td>Mostra informações sobre o processador</td>
    </tr>
    <tr>
      <td>lshw</td>
      <td>Mostra informações sobre o hardware</td>
    </tr>
    <tr>
      <td>kill</td>
      <td>Interrompe e encerra um processo com PID</td>
    </tr>
    <tr>
      <td>killall</td>
      <td>Interrompe e encerra processos usando o nome</td>
    </tr>
    <tr>
      <td>nice</td>
      <td>Define as prioridades dos processos</td>
    </tr>
    <tr>
      <td>pgrep</td>
      <td>Procura o PID através de um termo de pesquisa</td>
    </tr>
    <tr>
      <td>ps</td>
      <td>Mostra uma lista de todos os processos em execução</td>
    </tr>
  </tbody>
</table>

### Comando sudo do Linux

O [comando Linux `sudo`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/linux-sudo/) (*substitute user do*) permite que uma chamada ao sistema seja executada com os direitos de um utilizador diferente, de forma segura. Normalmente, é necessária a palavra-passe do utilizador que efetua a chamada.

Quando o comando é introduzido sem indicar qualquer nome de utilizador, é utilizado o superutilizador root como utilizador.

```bash
sudo -u USUARIO LLAMADA
```

### Comando ls do Linux

O comando ls do Linux equivale ao `list` e é utilizado para mostrar o conteúdo de um diretório (os nomes de todos os seus ficheiros e pastas).

Esta é a sintaxe do comando:

```bash
ls [OPCIONES] DIRECTORIO
```

Se não for especificado nenhum diretório com o comando `ls`, este exibe o conteúdo do diretório atual.

Com a ajuda de várias opções, é possível definir quais as informações a apresentar e de que forma.

### Comando cd do Linux

O [comando `cd` do Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-cd-do-linux/) é a abreviatura de *«change directory»* e é utilizado para navegar pelo diretório.

A sintaxe deste comando segue o seguinte esquema:

```bash
cd [OPCIÓN] DIRECTORIO
```

Se não for indicado nenhum diretório específico, o `cd` muda automaticamente para o diretório principal do utilizador. Se for acompanhado por um traço (-), o comando `cd` abre o diretório anterior.

### Comando touch do Linux

O comando touch do Linux pode ser utilizado para alterar a data e a hora dos acessos ou das alterações efetuadas num ficheiro. Se for utilizado num ficheiro que não existe, este é criado automaticamente, o que faz com que este comando também seja utilizado para criar ficheiros vazios.

Para chamar a função `touch`, é necessário seguir este esquema:

```bash
touch [OPCIÓN] ARCHIVO
```

Se o objetivo for alterar a data e a hora de um ficheiro para uma data específica, utiliza-se a opção `-t`, incluindo a data no formato `[AA]MMDDhhmm[.ss]`

Exemplo:

```bash
touch -t 1703231037 file.txt
```

A data e a hora do acesso e das alterações relativas a este ficheiro foram fixadas em 23 de março de 2017, às 10h37. Se preferir, a alteração pode ser limitada à data de acesso ou de modificação através das opções `-a` e `-m`. Se for utilizada sem a opção `-t`, é automaticamente marcada com a data e a hora atuais.

### Comando mkdir do Linux

O [comando do Linux `mkdir`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-mkdir-do-linux/) corresponde a *«make directory»* e permite aos utilizadores do Linux criar diretórios a partir do zero. Para criar um diretório no diretório atual, utilize a seguinte sintaxe:

```bash
mkdir [OPCIÓN] DIRECTORIO
```

Se pretender criar um novo diretório num ficheiro diferente do atual, deve indicar o caminho absoluto ou relativo para o ficheiro.

### Comando rm no Linux

O comando rm no Linux apaga ficheiros ou pastas de forma irreversível. Para tal, segue-se a seguinte estrutura:

```bash
rm [OPCIONES] ARCHIVO/ DIRECTORIO
```

Para eliminar uma pasta juntamente com todas as suas subpastas, utiliza-se `rm` com a opção `-R` (*–recursive*):

### Comando rmdir no Linux

Se for necessário eliminar um determinado diretório, utiliza-se o comando `rmdir` (*remove directory*) de acordo com a seguinte sintaxe:

```bash
rmdir [OPCIÓN] DIRECTORIO
```

Com `rmdir`, no entanto, só é possível eliminar diretórios vazios. Se pretender eliminar um ficheiro com todas as suas pastas e subpastas, utilize o comando `rm` (*remove*) com a opção `-r`.

No Digital Guide, encontrará outras formas de eliminar um ficheiro no Linux ou eliminar um diretório no Linux.

### Comando mv no Linux

O [comando `mv` do Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-mv-do-linux/) (*move*) copia um ficheiro ou uma pasta e apaga o original. Se isto for feito dentro da mesma pasta, o `mv` também pode ser utilizado para renomear os ficheiros.

Para tal, segue-se o seguinte esquema:

```none
mv [OPCIÓN] ORIGEN DESTINO
```

### Comando cp do Linux

O comando cp do Linux (*copy*) é utilizado para copiar ficheiros e segue a seguinte sintaxe:

```bash
cp [OPCIONES] ORIGEN DESTINO
```

O elemento ORIGEM é aquele que deve ser copiado e o DESTINO é definido como um ficheiro ou uma pasta onde o elemento copiado deve ser guardado. Se o DESTINO for definido como um ficheiro já existente, o ficheiro de origem substitui o seu conteúdo. Também é possível criar um novo ficheiro de destino.

### Comando pwd do Linux

Utilize o [comando Linux `pwd`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-pwd-do-linux/) (*print working directory*) para exibir o nome do diretório de trabalho atual.

A sintaxe do comando é a seguinte:

```bash
pwd [OPCIONES]
```

### Comando zip do Linux

Utilize o comando `zip` para compactar vários ficheiros num ficheiro zip. A sintaxe do comando é:

```bash
zip ARCHIVOS DESTINO
```

DESTINO refere-se ao nome ou caminho do ficheiro ZIP resultante. Por sua vez, ARCHIVOS apresenta os nomes ou caminhos dos ficheiros a comprimir (separados por espaços).

### Comando unzip do Linux

Podes usar o `unzip` para extrair um ficheiro de um arquivo ZIP. A sintaxe é:

```bash
unzip ARCHIVO.zip -d DESTINO
```

ARCHIVO refere-se ao ficheiro zip do qual pode extrair o ficheiro pretendido. Se preferir, pode especificar um diretório de destino com a opção -d DESTINO, onde os ficheiros resultantes serão guardados. Caso contrário, serão guardados no diretório atual.

### Comando ln do Linux

O comando Linux ln (*link*) cria um link que aponta para um ficheiro ou uma pasta. Isto gera uma nova entrada para esse ficheiro, permitindo aceder ao mesmo através de um caminho diferente. Para executar o comando `ln`, é necessário incluir, no mínimo, o caminho para o ficheiro de origem.

```bash
ln [OPCIONES] ruta/al/archivo de origen
```

Neste caso, o link é criado no diretório de trabalho atual sem alterar o nome. Outra alternativa consiste em indicar um caminho de destino e atribuir um nome diferente ao link:

```bash
ln [OPCIONES] ruta/al/archivo de origen ruta/al/enlace
```

### Comando cat do Linux

O cat do Linux (*concatenate*) foi criado como uma ferramenta para concatenar ficheiros e pode ser utilizado como pager para apresentar o conteúdo dos ficheiros no terminal.

Escreva `cat` utilizando a seguinte sintaxe para ler e apresentar um ficheiro na saída padrão `stdout`:

```bash
cat OPCIONES ARCHIVOS
```

Se incluir vários ficheiros, separe-os com espaços:

```bash
cat OPCIONES ARCHIVO1 ARCHIVO2
```

### Comando grep do Linux

Com o comando grep do Linux, é possível pesquisar ficheiros de texto, tais como ficheiros de registo. Como padrão de pesquisa, podem ser utilizadas sequências de caracteres ou expressões regulares. `grep` de acordo com esta sintaxe:

```bash
grep [OPCIONES] PATRÓN_DE_BÚSQUEDA [ARCHIVOS]
```

Se `grep` encontrar uma sequência que corresponda ao padrão indicado, o terminal exibe o número da linha e especifica o nome do ficheiro. Regra geral, `grep` aplica-se a todos os ficheiros do diretório de trabalho atual. A opção `-r` permite a pesquisa recursiva nos subdiretórios.

### Comando diff do Linux

O programa `diff` compara dois ficheiros. Também permite verificar se dois diretórios contêm os mesmos ficheiros. É executado com a seguinte sintaxe:

```bash
diff [OPCIONES] ARCHIVO1 ARCHIVO2
```

### Comando cmp do Linux

Ao contrário do `diff`, no `cmp` a comparação é feita byte a byte, o que o torna especialmente adequado para ficheiros binários. Chama o `cmp` de acordo com a seguinte sintaxe:

```bash
cmp [OPCIONES] ARCHIVO1 ARCHIVO2
```

Se `cmp` encontradas diferenças, o terminal exibe o número de bytes e o número da linha do primeiro ficheiro que apresenta diferenças.

### Comando tar do Linux

O comando `tar` permite gravar ficheiros e pastas de forma sequencial num arquivo `tar` e utilizá-los como cópias de segurança, se necessário. Ao contrário do que acontece com o formato Zip próprio dos sistemas Windows, com `tar` os direitos de utilizador dos ficheiros guardados não se perdem, mesmo após a sua descompressão. Utilize a seguinte sintaxe:

```bash
tar [OPCIONES] ARCHIVOS
```

Se quiser criar um novo arquivo, utilize `tar` com as opções `-c` (criar novo arquivo) e `-f` (gravar um arquivo no ficheiro indicado ou extraí-lo desse ficheiro). Para mais informações, consulte o nosso artigo«Programa de arquivo tar: criação de cópias de segurança e arquivamento de ficheiros».

### Comando echo do Linux

Utilize o comando Linux echo para que o sistema apresente cadeias de caracteres, uma por linha, na saída padrão (que normalmente é o terminal).

A sintaxe básica do comando é:

```bash
echo [OPCIONES] CADENA
```

### Comando clear do Linux

O comando `clear` apaga todos os comandos da sessão.

```bash
clear
```

O utilizador recebe um terminal vazio com o prompt à espera de comandos. Os comandos introduzidos anteriormente são guardados no buffer de retrocesso. Também é possível limpar a janela da consola com o atalho de teclado \[CTRL\] + \[L\]

### Comando SSH do Linux

Com `ssh`, pode ligar o seu computador a um computador externo através do protocolo SSH. Desta forma, ficará na shell de outro computador. A sintaxe é:

```bash
ssh USUARIO@HOST
```

USUÁRIO e HOST referem-se ao nome de utilizador com o qual pretende iniciar sessão e ao endereço do computador externo.

### Comando wget do Linux

Podes utilizar o [comando Linux `wget`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-wget-do-linux/) para descarregar ficheiros da Internet. Para tal, utiliza a seguinte sintaxe:

```bash
wget [OPCIÓN] ENLACE
```

No campo ENLACE, indique o URL onde o ficheiro se encontra. Se desejar, pode incluir o argumento opcional `-c` para retomar um download que tenha sido interrompido.

### Comando ping do Linux

Utilize o [comando Linux `ping`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-ping-do-linux/) para verificar a disponibilidade de outros computadores na rede. Este comando segue a seguinte sintaxe:

```bash
ping [OPCIONES] DESTINO
```

Além de registar o intervalo de tempo entre o envio do pacote de dados e a receção da resposta (Round Trip Time ou RTT), `ping` também grava o endereço IP do sistema de destino no terminal. Com argumentos opcionais, é possível definir o número de pacotes ou o intervalo de tempo em segundos após o qual `ping` termina automaticamente.

### Comandos FTP ou SFTP do Linux

Estes comandos permitem trocar ficheiros entre o sistema local e outro computador da rede. Para tal, utiliza-se o FTP (File Transfer Protocol). Para estabelecer a ligação com o servidor FTP do computador de destino, utilize o `ftp` com a sintaxe apresentada a seguir:

```bash
ftp [OPCIONES] [HOST[PUERTO]]
```

O endereçamento é feito através do nome do host ou do endereço IP. Se desejar, pode especificar um número de porta. Utilize o FTP apenas em redes nas quais confie, uma vez que este protocolo não é seguro. Por motivos de segurança, é preferível optar pelo SFTP (SSH File Transfer Protocol). O comando Linux `sftp` funciona seguindo o mesmo princípio que `ftp`, embora, neste caso, a transferência seja encriptada. O SFTP utiliza o padrão Secure Shell (SSH), bem como os seus métodos de autenticação. Neste artigo, explicamos como utilizar chaves SSH para uma ligação de rede mais segura.

### Comando ip do Linux

O programa de linha de comando `ip` faz parte do pacote de utilitários `iproute2`, que permite consultar e configurar interfaces de rede no terminal. Esta é a sintaxe geral do comando:

```bash
ip [OPCIONES] OBJETO [COMANDO [ARGUMENTOS]]
```

Com a ajuda de objetos, comandos de pesquisa e argumentos, é possível definir qual a ação a ser executada com `ip`.

O programa suporta objetos como `address` (endereço IP), `link` (interfaces de rede), `route` (entrada na tabela de encaminhamento) ou `tunnel`, aos quais podem ser aplicados comandos de pesquisa como `add`, `change`, `del`, `list` ou `show`.

Se, por exemplo, pretender obter o endereço IP de uma determinada interface de rede (eth0), utilize o comando `ip` com o objeto `address`, o comando `show` e o argumento `dev eth0`:

```bash
ip address show dev eth0
```

Descubra como exibir um endereço IP no Linux com mais detalhes noutro artigo do Digital Guide.

### Comandos do Linux: apt, pacman e yum

Cada distribuição Linux dispõe de um **gestor de pacotes** que permite descarregar e gerir pacotes de software. A sintaxe para instalar a aplicação é:

```bash
apt install [PAQUETE] # Distribuciones basadas en Debian como Ubuntu
pacman -S [PAQUETE] # Distribuciones basadas en Arch
yum install [PAQUETE] # Distribuciones basadas en Red Hat
```

`[PAQUETE]` corresponde ao nome do pacote ou programa que pretende instalar. Na maioria dos casos, estes comandos são executados com `sudo` no modo root. Para as restantes distribuições, que utilizam outros gestores de pacotes, os comandos podem ser diferentes. Cada gestor dispõe também de comandos para remover pacotes, bem como para atualizar listas de pacotes e pacotes instalados, entre outros. No Ubuntu, os comandos são apresentados da seguinte forma:

```bash
apt remove [PAQUETE] # eliminar paquete
apt update # actualizar lista de paquetes
apt upgrade # actualizar packages
```

### Comando netstat do Linux

O programa de linha de comandos `netstat` serve para consultar o estado das interfaces de rede e é utilizado seguindo esta sintaxe:

```bash
netstat [OPCIONES]
```

Quando utilizado sem opções, o comando apresenta todos os sockets abertos no terminal. Também é possível utilizar as seguintes opções para consultar tabelas de encaminhamento (`-r`), ligações mascaradas (`-M`) ou mensagens de ligação de rede (`-N`). Podes encontrar mais informações no nosso artigo«Introdução ao netstat».

### Comandos traceroute do Linux

Para rastrear o percurso de um pacote de dados IP entre o seu sistema e um computador de destino, pode utilizar o comando traceroute para acompanhar o percurso dos pacotes de dados. Utilize o formato apresentado a seguir:

```bash
traceroute [OPCIONES] NOMBRE_DEL_HOST
```

Através do `traceroute`, é possível obter informações sobre o router e os nós da Internet pelos quais um pacote IP passa quando é encaminhado para um computador de destino. Por exemplo, para investigar a causa de um atraso.

### Comando route do Linux

Com o comando `route`, é possível consultar e editar as tabelas de encaminhamento IP do kernel. Utiliza-se com a seguinte sintaxe:

```bash
route [OPCIONES] [add|del] [-net|-host] OBJETIVO
```

Se utilizar o comando sem nenhuma opção, obtém-se uma tabela de encaminhamento completa do núcleo:

```bash
route
```

Se quiser adicionar uma entrada de roteamento a uma rede, utilize a opção `add`:

```bash
route add -net 10.0.0.0
```

### Comando dig do Linux

`dig` é uma ferramenta de pesquisa que permite solicitar informações aos servidores DNS e apresentá-las no terminal. Este comando é normalmente utilizado seguindo este esquema para solicitar o endereço IP e quaisquer outras informações no DNS relativas a um nome de domínio:

```bash
dig [@SERVIDOR] [DOMINIO] [TIPO]
```

SERVIDOR é o servidor DNS ao qual é enviada a solicitação e onde se encontra a informação solicitada. Se não for indicado um servidor, `dig` consulta o servidor DNS padrão que consta no ficheiro `/etc/resolv.conf`. DOMÍNIO corresponde ao nome do domínio sobre o qual se procura a informação armazenada no DNS. E TIPO permite determinar o tipo de pedido: ANY (qualquer entrada), A (registo IPv4 de um host) ou AAA (registo IPv6 de um host). O tipo padrão é A.

### Comandos mount e unmount do Linux

Para integrar um sistema de ficheiros na estrutura de diretórios do sistema operativo através do terminal, o Linux disponibiliza o comando `mount`. Esta é a sintaxe geral deste comando:

```bash
mount [OPCIONES] DISPOSITIVO MOUNTPOINT
```

DISPOSITIVO = aqui deve ser indicada a rota para o ficheiro de dispositivo da unidade que se pretende montar como partição.

MOUNTPOINT = esta nomenclatura corresponde ao ponto exato na estrutura de diretórios do sistema operativo onde se pretende integrar a nova partição. É normalmente indicada como um caminho absoluto.

Exemplo:

```bash
mount /dev/sdd /media/usb
```

O dispositivo `sdd` encontra-se no diretório `/media/usb`.

### Comando dd do Linux

O programa de linha de comando `dd` disponibiliza um método de cópia através do qual os dados são lidos bit a bit a partir de um ficheiro de entrada (`if`) e gravados num ficheiro de saída (`of`). O comando segue a seguinte sintaxe:

```bash
dd if=Origen of=Destino [OPCIONES]
```

Nele, podem ser indicados como origem e destino tanto ficheiros individuais como partições (/dev/sda1) ou um dispositivo completo (/dev/sda).

```bash
dd if=/dev/sda5 of=/dev/sdb1
```

### Comando chmod do Linux

O comando `chmod`*alteração de modo)* serve para gerir os direitos de acesso em sistemas de ficheiros de tipo Unix (ext2, ext3, ext4, reiser, xfs). A sintaxe geral do chmod é:

```bash
chmod [OPCIONES] MODO ARCHIVO
```

ou

```bash
chmod [OPCIONES] MODO DIRECTORIO
```

MODO refere-se à forma como as permissões são atribuídas. Para saber como criá-las e o que deve ter em conta, leia o nosso artigo sobre a atribuição de permissões de acesso com o comando chmod. Com a opção `-R`, é possível alargar os direitos de forma recursiva às subpastas e aos ficheiros contidos num diretório.

### Comando chown do Linux

O [comando Linux `chown`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-chown-do-linux/) deriva do *comando «change owner»* e permite definir a propriedade de ficheiros e pastas. Este comando é utilizado da seguinte forma:

```bash
chown [OPCIONES] [USUARIO][:[GRUPO]] ARCHIVO
```

ou

```bash
chown [OPCIONES] [USUARIO][:[ GRUPO]] DIRECTORIO
```

Para definir os direitos de proprietário para utilizadores ou grupos, existem quatro combinações possíveis. O proprietário e o grupo de um ficheiro são definidos de acordo com as seguintes indicações:

```bash
chown [OPCIONES] nombre_propietario:grupos_archivos.txt
```

```bash
# El grupo se modifica en función de las indicaciones pero el usuario permanece invariable: 
chown [OPCIONES] :grupos_archivos.txt
# Se define al propietario pero el grupo permanece invariable:
chown [OPCIONES] propietario_archivos.txt
# Se vuelve a definir al propietario y el grupo se define por el grupo estándar del usuario activo:  
chown [OPCIONES] nombre_propietario: archivo.txt
# Los cambios se pueden extender a los subdirectorios con ayuda de la opción -R.
```

### Comando adduser do Linux

A opção mais simples para criar uma conta de utilizador é a oferecida pelo programa de linha de comandos `adduser`. Trata-se de um script em Perl baseado no comando Linux useradd e oferece as mesmas funcionalidades de forma simples. O comando `adduser` requer privilégios de root e segue a sintaxe apresentada a seguir:

```bash
adduser [OPCIONES] USUARIO
```

Se utilizar o `adduser` sem opções, serão criados automaticamente, além de uma conta de utilizador, o ID, o diretório padrão e um grupo com o mesmo nome, como neste exemplo:

```bash
adduser test
```

Em seguida, surge uma janela de diálogo interativa na qual é possível definir a palavra-passe e outros dados do utilizador, tais como o nome verdadeiro, o número do escritório, o número de telefone, etc.

### Comando passwd no Linux

Para alterar a palavra-passe de um utilizador ou para definir, verificar ou alterar os intervalos de bloqueio, utilize o [comando Linux `passwd`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-passwd-do-linux/) com a seguinte sintaxe:

```bash
passwd [OPCIONES] USUARIO
```

Para alterar a palavra-passe de outro utilizador, é necessário ter direitos de administrador. Ao digitar o comando `passwd` sem nome de utilizador, pode alterar a sua própria palavra-passe. Se o objetivo for bloquear a palavra-passe de outro utilizador, utiliza-se o comando com a opção `-l` (*lock*). Outras opções permitem definir uma data de validade para as palavras-passe `(-x)`, bem como intervalos de aviso `(-w)` e de inatividade `(-i)`.

### Comando groupadd do Linux

O comando `groupadd` é utilizado para criar grupos de utilizadores. Requer direitos de administrador e é executado seguindo esta sintaxe:

```bash
sudo groupadd [OPCIONES] GRUPO
```

Cada grupo criado recebe um identificador de grupo único (GID). Os IDs de grupo entre 0 e 99 estão reservados para grupos do sistema. Para definir o GID de um novo grupo de utilizadores, utiliza-se o comando com a opção `-g` (GID). Para criar um grupo do sistema, adiciona-se a opção `-r` (root).

### Comando chattr do Linux

Com o programa `chattr` (*alterar atributo*), pode atribuir atributos a ficheiros ou pastas. Utilize `chattr` de acordo com a seguinte sintaxe para atribuir um atributo:

```bash
chattr [OPCIONES] +ATRIBUTO ARCHIVO
```

Para remover o atributo, substitua o sinal de mais por um sinal de menos. Por exemplo, inclua o atributo `-i` (imutável) para proteger um ficheiro ou uma pasta contra alterações. No manual do programa `chattr`, poderá encontrar outros atributos e opções possíveis.

### Comando lsattr do Linux

Se quiseres ver quais os atributos definidos para um ficheiro ou diretório, podes utilizar o comando `lsattr` (*listar atributos*) seguindo o seguinte esquema:

```bash
lsattr [OPCIONES] ARCHIVO/DIRECTORIO
```

### Comando chgrp do Linux

O comando `chgrp` significa *«alterar grupo»* e é utilizado para alterar o grupo de um ficheiro ou de um diretório, embora seja necessário dispor de permissões de administrador para o poder aplicar a um ficheiro ou diretório específico. Além disso, só é possível trabalhar com os grupos aos quais se pertence. `chgrp` é utilizado seguindo a seguinte estrutura:

```bash
chgrp [OPCIONES] GRUPO ARCHIVO
```

ou

```bash
chgrp [OPCIONES] GRUPO DIRECTORIO
```

A opção `-R` inclui na operação as subpastas e os ficheiros contidos num diretório.

### Comando man do Linux

Digite `man` para abrir as páginas do manual (*man pages*) da sua distribuição Linux na consola. Para tal, siga estes passos:

```bash
man [OPCIÓN] TEMA
```

As páginas de manual do Linux estão organizadas em 10 secções temáticas: comandos de utilizador, chamadas ao sistema, biblioteca de funções da linguagem de programação C, formatos de ficheiro, ficheiros de configuração, jogos, miscelânea, comandos para administração do sistema, funções do kernel e novos comandos.

### Comando shutdown do Linux

Os utilizadores com permissões de administrador podem utilizar o comando shutdown do Linux para desligar o sistema. A sintaxe básica é a seguinte:

```bash
shutdown [OPCIONES] [TIEMPO] [MENSAJE]
```

Quando se pretende desligar o sistema, é possível definir o momento exato. Para tal, pode introduzir-se uma hora exata (`hh:mm`) ou uma contagem decrescente (`+m`). Os outros utilizadores ativos no sistema recebem um aviso de desligamento, que pode ser complementado com uma mensagem opcional. Se se adicionar a opção `-r` ao comando, o sistema reinicia após o desligamento.

### Comando top no Linux

Com o comando `top`, obtém-se uma lista dinâmica de todos os processos ativos. Para tal, utilize este esquema:

```bash
top [OPCIONES]
```

A apresentação das informações sobre os processos pode ser ajustada através de várias opções. O comando suporta, além disso, a utilização das seguintes teclas para ordenar a apresentação:

- \[P\] = ordena os resultados com base no uso da CPU
- \[M\] = ordena a saída de acordo com a utilização da memória
- \[N\] = ordena a saída numericamente por PID
- \[A\] = ordena a saída por idade
- \[T\] = ordena a saída por tempo de CPU utilizado
- \[U USUÁRIO ou UID\] = filtra a saída por usuário

Utilize a tecla \[H\] para aceder às páginas de ajuda e \[Q\] para sair da visualização dos processos.

### Comando Linux lscpu

Utilize o `lscpu` (*list cpu*) desta forma para obter informações sobre a CPU na consola:

```bash
lscpu [OPCIONES]
```

No manual do seu sistema operativo, pode consultar todas as opções que pode utilizar com o comando.

### Comando lshw do Linux

Neste caso, `lshw` corresponde a *«list hardware»* e fornece informações sobre os componentes de hardware. O comando `lshw` é utilizado seguindo esta sintaxe:

```bash
lshw [OPCIONES]
```

Este comando também suporta várias opções que permitem ajustar não só o formato de saída (`-html`, `-xml`,`short`, `-businfo`), mas também o nível de detalhe das informações apresentadas (por exemplo,`-sanitize` é utilizado para ocultar informações confidenciais).

### Comando kill do Linux

`kill` é um programa de consola para cancelar e encerrar processos. O comando é executado de acordo com o seguinte esquema, com um sinal e o ID do processo selecionado:

```bash
kill [OPCIONES] [-SEÑAL] PID
```

Os sinais mais comuns são:

1. `TERM`: força um processo a terminar por si próprio (padrão)
2. `KILL`: força o encerramento de um processo (pelo sistema)
3. `STOP`: interrompe um processo
4. `CONT`: permite continuar um processo interrompido

### Comando killall do Linux

Em combinação com uma palavra-chave, o [comando `killall` do Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-killall-do-linux/) é utilizado para encerrar processos cujo nome coincida exatamente com ela (são comparados os primeiros 15 caracteres).

```bash
killall [OPCIONES] [-SEÑAL] [PROCESO]
```

A opção `-e` (*–exact*) permite alargar a comparação a todos os caracteres do nome do processo.

### Comando nice do Linux

O comando `nice` atribui a um processo, durante o arranque, um valor `nice` compreendido entre -20 e +19, que determina a forma como a capacidade disponível do microprocessador é distribuída. O intervalo mencionado equivale aos níveis de prioridade no Linux de 100 a 139. Um processo com um valor `nice` de -20 tem, assim, uma prioridade mais elevada do que um processo com um valor `nice` de 19. A sua sintaxe é a seguinte:

```bash
nice [OPCIÓN] [COMANDO]
```

Sem qualquer outra informação, todos os processos iniciam com um valor `nice` igual a 0. A opção `-n` permite definir as prioridades dos processos. É importante ter em conta que as prioridades negativas só podem ser atribuídas com direitos de root.

### Comando pgrep do Linux

O programa da consola `pgrep` compara a lista de processos ativos com uma palavra-chave e, em caso de correspondência, apresenta os respetivos PID. A sintaxe básica dessa chamada é:

```bash
pgrep [OPCIONES] Término
```

Por predefinição, o comando `pgrep` devolve os PIDs de todos os processos que contêm a palavra-chave. Se a pesquisa tiver de ser limitada a todas as correspondências exatas, utilize a opção `-x`. Se, além do PID, também pretender obter o nome do processo, combine `pgrep` com a opção `-l`. À semelhança da `grep`, `pgrep` suporta palavras-chave baseadas em expressões regulares.

### Comando do Linux com ps

O [comando `ps`Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-ps-do-linux/) apresenta uma lista de todos os processos ativos:

```bash
ps [OPCIONES]
```

Se precisares de um relatório mais detalhado, utiliza `ps` com as opções `-f` (detalhado) ou `-F` (muito detalhado). No manual do sistema operativo, encontrarás outras opções possíveis.

## Comandos Linux adicionais num relance

### Comandos básicos

Esta categoria inclui todos os comandos básicos do Linux utilizados para **gerir o terminal**, com os quais é possível limpar a janela da consola, recuperar comandos anteriores a partir do histórico ou encerrar a sessão.

**1. sair**

Com `exit`, a sessão atual é encerrada e a consola é fechada.

```bash
exit
```

Também podes usar o atalho de teclado \[Ctrl\] + \[D\] em vez disso.

**2. ajuda**

O comando `help` é utilizado para apresentar uma lista de todos os comandos do sistema.

Se introduzir `help` em conjunto com um comando do shell, obterá uma breve descrição do comando em questão.

```bash
help COMMAND
```

**3. história**

No Bash, os últimos 500 comandos introduzidos no terminal são guardados no histórico. Esta funcionalidade ajuda na introdução de comandos na consola e permite executar novamente um comando introduzido anteriormente, selecionando-o com as setas do teclado e executando-o novamente.

Também é possível consultar o histórico por palavras-chave utilizando o atalho de teclado \[CTRL\] + \[R\]. Ao utilizar o comando sem opções nem argumentos, obtém-se a lista completa e numerada de comandos.

```bash
history
```

Para filtrar a saída, o `history` é combinado através do canal do Linux com o programa `grep` (ver opções de pesquisa) e uma palavra-chave.

```bash
history | grep PALABRA CLAVE
```

### Páginas de ajuda

Não sabe quais são os próximos passos? A este respeito, o Linux disponibiliza no terminal páginas de ajuda e documentação, como as Unix Man Pages (Manual do Unix) e as páginas de informação do GNU, que contêm uma descrição exaustiva de todos os programas, comandos, ficheiros de configuração, formatos de ficheiro e funções do kernel. Com os [comandos Linux `whatis`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-whatis-no-linux/) e `apropos` na categoria de páginas de ajuda, dispõe de programas de linha de comando que permitem pesquisar as páginas do manual do sistema operativo por palavras-chave.

**1. A**propósito Com o comando `apropos`, são analisados os títulos e as descrições das páginas do manual do seu sistema operativo por palavras-chave. Segue o seguinte esquema:

```bash
apropos [OPCIONES] PALABRA CLAVE
```

Este comando suporta várias opções. Com a opção `-e`, limita a pesquisa a correspondências exatas, mas também pode utilizar caracteres curinga (`-w` «TERMO DE PESQUISA») e expressões regulares (`-r`).

**2. Informações**

O`info` abre as páginas de informação do GNU sobre um determinado tema. Normalmente, correspondem ao manual que pode ser acedido com `man`, embora, ao contrário deste, contenham links que facilitam a navegação no manual. Utilize esta sintaxe:

```bash
info [OPCIÓN] TEMA
```

Se não indicar nenhuma opção nem nenhum tópico, acederá ao menu principal do manual do GNU.

**3. pinfo**

Com `pinfo` contas com uma versão do programa `info` que segue o modelo do navegador de linha de comandos Lynx e apresenta as páginas de informação com os links destacados a cores. Para utilizar `pinfo`, segue-se o mesmo esquema sintático que no `info`:

```bash
pinfo [OPCIONES] TEMA
```

\*\*4.\*\*whatis O programa `whatis` permite pesquisar por palavras-chave no manual. Para procurar uma correspondência exata no manual do sistema operativo, o programa é executado com o termo de pesquisa. Se for encontrada uma correspondência, `whatis` apresenta uma breve descrição no terminal.

```bash
whatis [OPCIONES] PALABRA CLAVE
```

`whatis` (`-w '\*PALABRA CLAVE`) também suporta caracteres curinga e expressões regulares (`-r`).

### Operações de diretório

Os comandos do Linux são utilizados para realizar operações em diretórios, tais como criar, eliminar e gerir diretórios no seu sistema através do terminal, bem como para navegar pela árvore de diretórios. Os comandos mais importantes nesta categoria são `cd`, `ls`, `mkdir` e `rmdir`.

### Operações com diretórios

Os comandos do Linux são utilizados para realizar operações em diretórios, tais como criar, eliminar e gerir diretórios no seu sistema através do terminal, bem como para navegar pela árvore de diretórios. Os comandos mais importantes nesta categoria são `cd`, `ls`, `mkdir` e `rmdir`.

**1. chroot**

O comando `chroot` (*change root*) é utilizado para executar um comando numa raiz diferente. Por exemplo, `chroot` é utilizado para isolar programas críticos do resto do sistema de ficheiros. A execução do comando requer privilégios de root e segue a seguinte fórmula:

```bash
chroot DIRECTORIO COMANDO
```

**2. mkdir aqui**

Com `mkdirhier`, pode criar hierarquias completas de diretórios com um único comando:

```bash
mkdirhier [OPCIÓN] /home/user/directorio1/directorio2/directorio3
```

Se «diretório1» e «diretório2» já existirem, «mkdirhier» cria apenas «diretório3». Caso contrário, são criados os três diretórios.

**3. árvore**

Enquanto o comando `ls` apenas lista o conteúdo de um diretório, o comando `tree` pode ser utilizado para apresentar, de forma recursiva, toda a hierarquia de diretórios como uma estrutura em árvore. O comando utiliza a seguinte sintaxe:

```bash
tree [OPCIONES] [DIRECTORIO]
```

### Operações em ficheiros

Os comandos Linux desta categoria permitem realizar várias operações no terminal relacionadas com ficheiros e, utilizando comandos básicos como `cp`, `mv` e `rm`, é possível copiar, mover, renomear ou eliminar ficheiros do sistema.

**1. basename**

O comando `basename` recebe um caminho para um ficheiro e devolve o nome do ficheiro sem o caminho. A sintaxe do comando é a seguinte:

```bash
basename [OPCIONES] Ruta/al/archivo [SUFIJO]
```

O comando pode ser aplicado a vários ficheiros com diferentes opções.

**2. comm**

Utilize o comando `comm` para comparar, linha a linha, ficheiros previamente ordenados (por exemplo, com `sort`). A execução deste comando baseia-se na seguinte estrutura sintática:

```bash
comm [OPCIONES] ARCHIVO1 ARCHIVO2
```

O comando `comm` suporta três opções:

- -1 = ocultar linhas únicas do ARCHIVO1
- -2 = ocultar linhas únicas do ARQUIVO2
- -3 = ocultar todas as linhas que aparecem em ambos os ficheiros

**3. cortar**

O comando `cut` permite extrair o conteúdo das linhas de texto de um ficheiro (registo ou CSV) por colunas. A sintaxe deste comando é:

```bash
cut [OPCIONES] ARCHIVO
```

Para indicar a posição exata do fragmento a extrair, utilizam-se as opções `-b` (posição do byte), `-c` (posição do caractere), `-d` (caractere de separação) e `-f` (campo).

**4. dirname**

`dirname` é o oposto de `basename`: o comando permite extrair a parte do caminho de um ficheiro sem mostrar o seu nome. A sua sintaxe é:

```bash
dirname [OPCIONES]path/to/file
```

\*\*5.\*\*ficheiro Com o comando `file`, é possível obter informações sobre o tipo ou formato de um ficheiro. Siga o seguinte esquema:

```bash
file [OPCIONES] ARCHIVO
```

**6. lsof**

O [comando Linux `lsof`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/linux-lsof/) equivale ao *«list open files»*, um programa utilitário que apresenta no terminal informações sobre os ficheiros abertos, ordenados por PID (ID do processo). Para o executar, segue-se o seguinte esquema:

```bash
lsof [OPCIONES]
```

Uma vez que todos os sistemas do tipo UNIX, como o Linux, gerem tudo através de ficheiros («Tudo é um ficheiro»), a lista que `lsof` devolve é muito extensa. Por isso, costuma-se utilizar opções que restringem o resultado.

**7. md5sum**

Com a ajuda do comando `md5sum`, é possível calcular e verificar somas de verificação MD5.

**8. colar**

À semelhança do `cat`, o `paste` apresenta o conteúdo dos ficheiros na saída padrão, mas enquanto `cat` os apresenta em sequência, `paste` agrupa-os em colunas. O esquema básico desta função é:

```bash
paste [OPCIONES] ARCHIVO1 ARCHIVO2
```

Com a opção `-d`, é possível configurar individualmente o tipo de separador utilizado. Por predefinição, utiliza-se normalmente a tabulação. Com a opção `-s` (de serial), é ativado um modo diferente, no qual todas as linhas do primeiro ficheiro de entrada são coladas na primeira linha da saída. Os dados dos restantes ficheiros de entrada são colados a seguir em linhas de saída separadas. Desta forma, cada linha da saída contém apenas o conteúdo de um ficheiro de entrada.

\*\*9.\*\*rename `rename` permite renomear ficheiros e pastas com a ajuda de expressões regulares (regex). Ao contrário do `mv`, `rename` permite modificar os nomes de vários ficheiros, parcial ou totalmente. A execução do `rename` segue o seguinte esquema:

```bash
rename [OPCIONES] 'EXPRESIÓN_REGULAR' ARCHIVOS
```

No caso das substituições, as expressões regulares seguem a seguinte sintaxe:

```bash
s/PATRONDEBUSQUEDA/SUSTITUCIÓN/MODIFICADOR
```

**10. shred**

O comando`shred` permite apagar ficheiros de forma permanente, uma vez que os sobrescreve de tal forma que, mesmo com os melhores meios forenses, não é possível recuperá-los. Este comando é executado seguindo este esquema básico:

```bash
shred [OPCIONES] ARCHIVO
```

**11. classificar**

O comando `sort` ordena as listas de ficheiros e as saídas do programa em linhas, por ordem numérica e alfabética. O comando `sort` é executado da seguinte forma:

```bash
sort [OPCIONES] ARCHIVO
```

Este método pode ser complementado com opções como `-n` (ordenar numericamente), `-R` (ordenar aleatoriamente) ou `-r` (ordenar em ordem inversa).

**12. divisão**

O comando `split` é utilizado para subdividir ficheiros. Segue o seguinte esquema sintático:

```bash
split [OPCIONES] [INPUT [PREFIJO]]
```

INPUT corresponde ao ficheiro a ser dividido e PREFIXO funciona como prefixo do nome do novo subficheiro. Ao renomeá-lo, segue-se o seguinte esquema:

```bash
PREFIJOaa, PREFIJOab, PREFIJOac …
```

Se não for definido nenhum prefixo, `split` recorre ao padrão `x`. Com a opção `-b` (bytes), é possível definir o tamanho das partes em que o ficheiro é dividido. Isto pode ser feito em bytes (b), kilobytes (k) ou megabytes (m). Exemplo:

```bash
split -b 95m archivo.tgz split-archivo.tgz.
```

**13. estatística**

Com o comando `stat` (*status*), é possível obter a data e a hora dos acessos e das alterações relativas a determinados ficheiros ou diretórios. Este comando segue a seguinte sintaxe:

```bash
stat [OPCIONES] ARCHIVO
```

O formato de saída pode ser configurado através de várias opções.

**14. uniq**

O comando `uniq` é frequentemente utilizado em conjunto com `sort` para eliminar linhas duplicadas nos ficheiros. No exemplo seguinte, o comando `sort` é ligado ao comando `uniq` através da barra vertical (`|`) para selecionar primeiro um ficheiro e, em seguida, para o apresentar sem linhas duplicadas:

```bash
sort archivo.txt | uniq
```

### Opções de pesquisa

O Linux também dispõe de vários comandos para explorar o sistema a partir do terminal.

**1. encontrar**

Com o comando `find`, é possível localizar um ficheiro no Linux. Utiliza-se de acordo com o seguinte esquema sintático:

```bash
find [OPCIONES] [RUTA] [EXPRESIÓN_DE_BÚSQUEDA ][ACCIÓN]
```

O diretório indicado em RUTA define o ponto de partida da pesquisa, de modo a que sejam explorados tanto o diretório como os seus subdiretórios. Se não for indicado nenhum, `find` começa a explorar a partir do diretório em que se encontra nesse momento (diretório atual).

As opções permitem definir os critérios de pesquisa e as ações. A ação predefinida é `-print`, que apresenta o resultado da pesquisa na saída padrão (normalmente a consola). Outras opções permitem filtrar por nome do ficheiro, tamanho do ficheiro, hora de acesso, etc. Estas opções estão listadas na página de manual correspondente.

**2. localizar**

O programa `locate` também permite pesquisar ficheiros a partir do terminal, mas, ao contrário do `find`, não se baseia no diretório de ficheiros, mas sim numa base de dados criada especificamente para esse fim e atualizada regularmente. Assim, `locate` apresenta os resultados muito mais rapidamente do que `find`. Para pesquisar um determinado ficheiro na base de dados, o `locate` é invocado com esta sintaxe:

```bash
locate PATRÓN_DE_BÚSQUEDA
```

O padrão pode conter metacaracteres que funcionam como curingas (`*`). Se os escrever entre aspas, o shell não os interpretará como metacaracteres do shell.

**3. tre-agrep**

`tre-agrep` também é utilizado para procurar cadeias de caracteres em ficheiros de texto com base em padrões, mas, ao contrário do `grep`, não apresenta apenas correspondências exatas, mas também resultados aproximados (como cadeias que contêm pequenos erros ortográficos). Para tal, o programa recorre à biblioteca TRE. A sua sintaxe corresponde à do comando grep:

```bash
tre-agrep [OPCIONES] PATRÓN ARCHIVOS
```

Nas opções, é possível definir um número máximo de erros. No exemplo seguinte, é indicado o número máximo de erros tolerados:

```bash
tre-agrep -1 'Linux' test.txt
```

\*\*4.\*\*updatedb A pesquisa com `locate` só é fiável se o ficheiro `/var/lib/locatedb` for mantido constantemente atualizado. O comando `updatedb` permite atualizar a base de dados manualmente. Tenha em atenção que, para tal, necessita de direitos de administrador:

```bash
Updatedb
```

**5. whereis**

Com o comando `whereis`, é possível localizar os ficheiros binários, de código-fonte ou do manual de determinados programas. A sua sintaxe geral é a seguinte:

```bash
whereis [OPCIONES] PROGRAMA
```

Com as opções, é possível restringir a pesquisa a determinados tipos de ficheiros ou pastas.

**6. qual**

Para verificar a localização do ficheiro binário de um programa, utiliza-se o comando `which`, que apresenta o caminho para o ficheiro. Este comando é executado com a seguinte sintaxe:

```bash
which [OPCIONES] PROGRAMA
```

No modo padrão, `which` responde com o primeiro ficheiro encontrado. Se desejar, a opção `-a` apresenta todos os ficheiros que correspondem aos critérios de pesquisa.

### Informações sobre os utilizadores

Utilize os comandos desta categoria para solicitar **informações detalhadas sobre os utilizadores registados no sistema**, bem como sobre os seus grupos e processos.

**1. dedo**

O comando `finger` apresenta informações sobre os utilizadores e, para tal, é combinado com o nome do utilizador em questão:

```bash
finger [OPCIONES] [USUARIO]
```

Utilize o `finger` sem indicar um nome de utilizador para solicitar informações sobre a sua própria conta.

**2. grupos**

Com o `groups`, o terminal lista os grupos aos quais pertence uma determinada conta de utilizador.

Quando não é indicado nenhum utilizador, `groups` identifica todos os grupos aos quais a sua conta pertence.

Para tal, siga o modelo apresentado:

```bash
groups [OPCIONES] [USUARIO]
```

**3. id**

O comando `id` apresenta os códigos dos utilizadores e grupos da conta de utilizador selecionada.

```bash
id [OPCIONES] [USUARIO]
```

Ao adicionar opções, é possível restringir a pesquisa

**4. último**

Utilize o comando `last` de acordo com o esquema indicado abaixo para obter uma lista dos últimos utilizadores que iniciaram sessão, juntamente com a hora de início e de fim da sessão:

```bash
last [OPCIONES] [USUARIO]
```

Para tal, a consola solicita informações do ficheiro `wtmp` no `/var/log/wtmp`. Se a pesquisa se referir a uma conta específica, o nome do utilizador é adicionado ao comando.

**5. w**

Neste caso, `w` devolve uma lista de todos os utilizadores com sessão ativa e todos os processos que estão a ser executados. Se adicionares um nome de utilizador, a pesquisa fica limitada a esse utilizador:

```bash
w [OPCIONES] [USUARIO]
```

Mais uma vez, pode personalizar o nível de detalhe e o formato da saída através de opções.

**6. quem**

O comando `who` apresenta informações sobre os utilizadores ativos no sistema nesse momento, se for utilizado de acordo com a seguinte sintaxe:

```bash
who [OPCIÓN] [ARCHIVO]
```

Por predefinição, `who` extrai os dados sobre o utilizador atual do ficheiro `/var/run/utmp`, mas, opcionalmente, também é possível indicar estes ficheiros a seguir como fonte da informação.

**7. whoami**

Utiliza o comando `whoami` para obter o teu próprio nome de utilizador.

```bash
whoami [OPCIONES]
```

### Gestão de contas de utilizador

O Linux oferece uma série de programas que permitem criar, eliminar e gerir contas de utilizador e grupos através do terminal. Estes aparecem na seguinte lista geral de **comandos do Linux para a gestão de contas de utilizador**, categoria que também inclui os comandos que permitem abrir programas com os direitos de outros utilizadores, incluindo os de administrador.

**1. chfn**

O comando `chfn`, equivalente ao *«change finger»*, permite editar informações adicionais de uma conta de utilizador, incluindo dados como o nome verdadeiro do utilizador, o número do escritório e os números de telefone particular e profissional. A sintaxe geral do `chfn` segue esta estrutura:

```bash
chfn [OPCIÓN "NUEVO VALOR"] [USUARIO]
```

Com as opções `-f` (nome verdadeiro), `-r` (número do escritório), `-w` (número oficial) e `-h` (número privado), define-se quais as informações do utilizador que são substituídas por um novo valor.

**2. chsh**

O comando `chsh` (*alterar shell*) altera o shell de login de um utilizador. Para tal, segue-se o seguinte procedimento:

```bash
chsh [OPCIONES] USUARIO
```

Pode utilizar a opção `-s` para alterar o shell de login de uma conta de utilizador.

**3. deluser**

O programa de linha de comandos `deluser` apaga todas as entradas de uma conta de utilizador dos ficheiros de contas do sistema. `deluser` só pode ser utilizado com direitos de administrador e segue o seguinte esquema:

```bash
deluser [OPCIONES] USUARIO
```

Se a intenção for apagar todos os ficheiros do utilizador no diretório principal, deve-se utilizar o comando juntamente com a opção `--remove-home`; se, por outro lado, se pretender eliminar todos os ficheiros do utilizador do sistema, deve-se utilizar a opção `--remove-all-files`.

**4. delgroup**

O comando `delgroup` (*delete group*) é utilizado para eliminar grupos de utilizadores e requer direitos de root. Segue esta sintaxe:

```bash
delgroup [OPCIONES] GRUPO
```

**5. groupmod**

Com `groupmod`, é possível configurar tanto o nome como o GID de um grupo de utilizadores. O comando é utilizado pelo administrador seguindo o seguinte esquema:

```bash
groupmod OPCIONES GRUPO
```

Se utilizar `groupmod` com a opção `-g`, pode alterar o GID e, com a opção `-n`, o nome do grupo.

**6. newgrp**

O comando newgrp (*new group*) permite aos utilizadores alterar o ID do seu grupo sem terem de encerrar a sessão e iniciar sessão novamente. A sintaxe geral deste comando é:

```bash
newgrp [-] [GRUPO]
```

Se `newgrp` for acompanhado pelo parâmetro opcional \[-\], após a mudança de grupo ocorre um reinício do ambiente do utilizador, como se fosse iniciada uma nova sessão. Os utilizadores que utilizam o comando sem indicar nenhum grupo são transferidos para o grupo padrão definido em `/etc/passwd`.

**7. o seu**

O comando `su` também permite mudar temporariamente de utilizador para efetuar chamadas ao sistema com as permissões de outro utilizador, mas, ao contrário do `sudo`, neste caso os comandos não são executados diretamente; é necessário mudar de identidade porque o comando não solicita a palavra-passe do utilizador que o invoca, mas sim a do utilizador cujos direitos se pretende assumir. A sintaxe geral do comando segue esta ordem:

```bash
su [OPCIONES] [USUARIO]
```

Uma solicitação sem nome de utilizador seleciona o utilizador `root`.

**8. usermod**

O comando `usermod` permite editar contas já criadas. Utilize o `usermod` com privilégios de root, seguindo o seguinte esquema:

```bash
usermod [OPCIONES] USUARIO
```

Com a ajuda das opções, pode definir quais as alterações a efetuar. Por exemplo, com `-l NUEVO_NOMBRE` pode alterar o nome de utilizador. Para encontrar mais opções, consulte a página correspondente do manual.

### Gestão do sistema

Nesta categoria, explicamos os comandos do Linux para a administração do sistema. Com eles, pode, por exemplo, reiniciar ou desligar o sistema a partir da consola e até programar essas ações.

**1. registador**

Utilize `logger` para a seguinte sintaxe:

```bash
logger "MENSAJE"
```

O ficheiro de registo do sistema encontra-se na posição `/var/log/syslog`.

**2. reiniciar**

O comando`reboot` permite reiniciar o sistema, sendo necessário ter permissões de root para o fazer.

```bash
reboot [OPCIONES]
```

**3. rtcwake**

No caso do `rtcwake`, trata-se de um comando que permite programar o arranque, a suspensão e o desligamento do computador. Escreve-se assim:

```bash
rtcwake [OPCIONES] [MODO] [Tiempo]
```

Em MODO, selecione o modo (`-m`) em que o sistema deve entrar durante um determinado período (`-s para tiempo en segundos`). Opcionalmente, também pode «ativar» o sistema num momento definido (`-t para tiempo Unix`).

### Informações do sistema

Esta categoria reúne todos os programas de linha de comandos que permitem **obter informações e mensagens de estado** do sistema, para se ter uma visão geral do seu estado geral.

**1. data**

O comando `date` permite-lhe saber a data e a hora do sistema.

```bash
date [OPCIONES] [FORMATO DE SALIDA]
```

Se, ao iniciar um programa, precisar de utilizar uma data específica (`rtcwake`), a opção `-d` (data) permite-lhe defini-la. O comando também suporta outras opções para alterar o formato da data e da hora.

**2. df**

Digite o comando `df` (*disk free*) no terminal, seguindo o seguinte formato:

```bash
df [OPCIONES]
```

Quando o comando é utilizado em conjunto com um determinado ficheiro, o sistema apresenta o espaço livre em disco na partição onde o ficheiro se encontra. A opção `-l` (*local*) limita o `df` a sistemas de ficheiros locais. Também suporta opções que permitem configurar o formato de saída.

**3. dmesg**

O programa `dmesg` (*display message*) apresenta as mensagens de diagnóstico do buffer do kernel e permite localizar erros no hardware ou no controlador. Utilize `dmesg` com esta sintaxe:

```bash
dmesg [OPCIONES]
```

A saída `dmesg` contém todas as mensagens geradas durante o arranque do sistema e, por isso, é bastante extensa. Isso faz com que seja frequentemente acompanhada por um pager como `more`, `less` ou `tail`.

**4. gratuito**

O comando `free` mostra a utilização da memória com esta sintaxe:

```bash
free [OPCIONES]
```

Como resultado, obtém dois valores: `Mem` (*Memória*) e `Swap`. `free` também suporta a opção `–h`, com a qual obtém a informação num formato legível.

**5. nome do host**

Utilize o comando `hostname` com esta sintaxe para que o terminal exiba o nome DNS do sistema.

```bash
hostname [OPCIONES]
```

**6. uname**

O comando `uname` corresponde `unix name` e é utilizado para solicitar informações sobre o kernel. O comando suporta várias opções que permitem filtrar a saída das informações.

```bash
uname [OPCIONES]
```

**7. tempo de atividade**

Para saber há quanto tempo o sistema está em funcionamento desde o último arranque sem ter sido reiniciado, utilize o comando `uptime` com a seguinte sintaxe:

```bash
Uptime
```

**8. vmstat**

Com a ajuda da ferramenta de monitorização `vmstat`, é possível obter informações sobre a memória virtual, sobre os processos de gravação e leitura no disco rígido, bem como sobre a atividade do processador central. Digite `vmstat` desta forma para obter os valores médios desde o último arranque do sistema:

```bash
vmstat [OPCIONES]
```

O comando `vmstat` também oferece um modo de monitorização contínua, através do qual é possível solicitar os valores num intervalo de tempo, em segundos, com a frequência que for necessária.

```bash
vmstat [OPCIONES] [INTERVALO [REPETICIONES]]
```

### Informações sobre o hardware

Os comandos Linux incluídos nesta categoria fornecem **informações detalhadas sobre os componentes de hardware** nos quais o sistema está a ser executado.

**1. lspci**

Utilize o comando `lscpu` (*list cpu*) desta forma para obter informações sobre a CPU na consola.

```bash
lscpu [OPCIONES]
```

No manual do seu sistema operativo, pode consultar todas as opções que pode utilizar com o comando.

\*\*2.\*\*lsusb Se quiser obter informações detalhadas sobre os dispositivos USB, introduza o comando `lsusb` (*list usb*) no terminal da seguinte forma:

```bash
lsusb [OPCIONES]
```

No manual do sistema operativo, também encontrará as opções compatíveis com este comando.

### Gestão de processos

No Linux, as instâncias de um programa em execução são denominadas processos. Os comandos a seguir fazem parte do conjunto padrão de ferramentas de gestão de processos e **permitem supervisioná-los facilmente a partir do terminal** e intervir, se necessário.

**1. chrt**

Com `chrt`, temos um programa para o controlo avançado de processos que permite verificar e configurar os atributos em tempo real (regras de agendamento ou planeamento de processos e prioridades) de processos ativos, ou executar comandos e os seus argumentos com determinados atributos em tempo real. Escreve-se com esta sintaxe:

```bash
chrt [OPCIONES] [PRIORIDAD] PID/COMANDO [ARGUMENTOS]
```

Para determinar os atributos em tempo real de determinados processos, utilize o `chrt` sem indicar qualquer prioridade, juntamente com a opção `-p`.

Com a ajuda das opções, `chrt` também permite configurar ou definir o controlo da programação de processos em execução ou recém-iniciados. Encontrará mais informações sobre este assunto na respetiva página de manual.

**2. ionizar**

O comando `ionice` é utilizado para alterar a prioridade de um processo que utiliza a interface de E/S do kernel. A sintaxe geral do comando é:

```bash
ionice [OPCIONES] COMANDO
```

Para poder executar o comando `ionice`, é necessário dispor de permissões de administrador. O comando distingue três tipos de agendamento, que são especificados através da opção `-c` e de um valor que pode variar entre 1 e 3:

- 1 = Tempo real: a operação de E/S é executada imediatamente.
- 2 = Best Effort (melhor esforço): a operação de E/S é executada assim que possível.
- 3 = Idle (inativo): a operação de E/S só é executada quando não houver nenhum outro processo que requeira tempo de E/S.

**3. nohup**

Normalmente, quando um utilizador encerra uma sessão na consola com `exit`, por exemplo, todos os processos dependentes são encerrados automaticamente. O [comando `nohup` do Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-nohup-do-linux/) (*no hangup*) retira um processo da sessão em curso, de modo a que este possa permanecer ativo mesmo depois de o utilizador ter encerrado a sua sessão.

```bash
nohup COMANDO
```

**4. pidof**

No caso do programa `pidof`, obtêm-se da consola os números de identificação de todos os processos de um programa. Solicita os PID com o `pidof`, seguindo este esquema:

```bash
pidof [OPCIONES] PROGRAMA
```

Quando se pretende obter apenas o ID do primeiro processo, combina-se a opção `pidof` com a opção `-s` (*single shot*).

**5. pdkill**

Tal como `kill`, `pkill` também envia um sinal a um determinado processo, embora o direcionamento não se faça apenas com o PID, mas sim com um termo-chave que é comparado com o nome dos processos ativos e pode ser formulado como uma expressão regular. `pkill` também envia o sinal padrão TERM, caso não seja definido qualquer outro sinal. A sintaxe geral do comando é a seguinte:

```bash
pkill [OPCIONES] [-SEÑAL] [TÉRMINO]
```

Graças às várias opções disponíveis, podemos restringir o comando aos processos de um determinado utilizador (`-U UID`), aos processos filhos de um processo pai (`-P PID`), aos processos recentes (`-n`) ou aos mais antigos (`-o`).

**6. pstree**

Utilize `pstree` para obter uma lista em forma de árvore de todos os processos atualmente em execução. Siga a seguinte sintaxe:

```bash
pstree [OPCIONES]
```

Ao utilizar várias opções, pode definir o formato e a amplitude da saída.

**7. renice**

O comando `renice` permite alterar a prioridade de um processo ativo. É executado com a seguinte sintaxe:

```bash
renice PRIORIDAD [OPCIONES]
```

\*\*8.\*\*sleep O [comando `sleep` do Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-sleep-do-linux/) é utilizado para interromper, por um determinado período de tempo, a sessão atual na consola. A sintaxe geral do comando é a seguinte:

```bash
sleep CIFRA[SUFIJO]
```

Se invocar o `sleep` sem sufixo, o número indicado é interpretado como um intervalo em segundos (s), mas também é possível interromper a sessão por alguns minutos (m), algumas horas (h) ou mesmo por dias (d).

**9. taskset**

No caso do `taskset`, estamos perante um comando para o controlo avançado de processos, utilizado em sistemas com processadores multinúcleo para atribuir processos ou programas aos núcleos. Este comando é executado com privilégios de administrador e utiliza um dos seguintes esquemas:

```bash
taskset [OPCIONES] MÁSCARA ORDEN
taskset [OPCIONES] -p PID
```

A atribuição de processos e tarefas a um núcleo da CPU é feita através de uma máscara de bits hexadecimal. Dado que a atribuição através de máscaras de bits não é muito intuitiva, `taskset` é frequentemente utilizada em conjunto com a opção `-c` (–cpu-list), que permite uma atribuição numérica dos processadores (ou seja, 0, 5, 7, 9-11).

### Pager

Para manter a visão geral mesmo no caso de ficheiros com várias páginas, os comandos desta categoria, denominada **Pager**, permitem selecionar as partes que se pretende mostrar no terminal e até folhear os ficheiros de forma interativa.

**1. cabeçalho**

O comando head do Linux é utilizado para exibir a primeira parte de um ficheiro. A sua sintaxe geral é a seguinte:

```bash
head [OPCIONES] Archivo
```

Utilize a opção `-n NÚMERO_LÍNEAS` para definir quantas linhas, a partir da primeira, devem ser apresentadas na consola.

**2. menos**

O comando less do Linux exibe o conteúdo de um ficheiro de texto na consola. A sua sintaxe geral é a seguinte:

```bash
less [OPCIONES] ARCHIVO
```

A visualização ocorre automaticamente no modo interativo, o que permite ao utilizador folhear o documento ou pesquisá-lo por palavras-chave. A tecla \[Q\] fecha o modo de leitura interativa — no manual do programa, encontrará mais atalhos de teclado ou opções disponíveis para este comando.

**3. tail**

Enquanto `head` mostra, por predefinição, as primeiras 10 linhas de um ficheiro, `tail` mostra as últimas 10. Ambos os pagers são utilizados da mesma forma (ver `head`).

### Editores

No Linux, não é necessário utilizar um programa de edição de texto para alterar ficheiros de configuração, editar trechos de código ou escrever notas curtas, pois é possível abrir **editores de texto simples** no terminal. A seguir, apresentamos três comandos que deve conhecer.

**1. emacs**

*O Emacs* é um editor de texto multiplataforma que pode ser ampliado através de uma interface de programação. Por predefinição, inicia com uma interface gráfica de utilizador, mas se se introduzir a opção `--no-window-system`, também pode ser aberto no terminal.

```bash
emacs --no-window-system
```

O Emacs tem um tutorial integrado ao qual podes aceder através do atalho de teclado \[CTRL\] + \[H\], \[T\].

**2. nano**

*O Nano* é um editor de texto baseado em terminal. Embora ofereça um conjunto de funcionalidades mais reduzido do que outros editores semelhantes (como *o Vim*), distingue-se deste pela sua maior facilidade de utilização. A sua sintaxe básica é a seguinte:

```bash
nano [OPCIONES] ARCHIVO
```

O comando abre o ficheiro solicitado numa janela de edição no terminal. Se invocar o nano sem indicar um nome de ficheiro, é criado um novo ficheiro de texto que é guardado no diretório atual.

**3. vim**

No caso do Vim (*Vi Improved*), trata-se de uma versão melhorada do editor *Vi*, que o supera com inúmeras funcionalidades, tais como realce de sintaxe, um sistema de ajuda abrangente, scripting nativo, autocompletar de código e seleção visual de texto.

Este programa de código aberto oferece vários modos de funcionamento para a edição de ficheiros de texto simples e pode ser utilizado tanto no terminal como numa aplicação portátil com interface gráfica (*GVim*). A sua principal área de aplicação é a edição de código de programação.

Quando iniciado na consola, o Vim é utilizado através do teclado. Normalmente, o comando é executado com um ficheiro de texto, seguindo este formato:

```bash
vim [OPCIONES] ARCHIVO
```

O Vim oferece, através do programa `vimtutor` — que também é iniciado na linha de comandos —, uma introdução exaustiva ao Vim. O nosso artigo sobre o editor Linux Vim também serve para aprofundar os conhecimentos sobre a instalação do programa e os seus diferentes modos de funcionamento.

### Gestão de redes

Também é possível **gerir redes** no terminal utilizando o Linux. Quer se trate de verificar uma ligação, solicitar informações ao DNS, configurar interfaces ou enviar ficheiros para outro computador, basta uma linha de comando para realizar o que pretende.

**1. arp**

O comando `arp` permite abrir e editar a cache ARP do seu sistema operativo. Se o utilizar sem o modificador `arp`o conteúdo da tabela ARP no terminal.

```bash
arp [OPCIÓN]
```

Podes utilizar várias opções para filtrar o resultado obtido ou para apagar e criar entradas:

- `-a HOST` = Limitar a saída às entradas de um determinado nome de host ou de um endereço IP:
- `-s HOST DIRECCIÓN_MAC` = Criar uma entrada ARP especificando o nome do host e o endereço MAC
- `-d HOST` = Apagar uma entrada ARP

**2. iw**

O programa `iw` é utilizado para configurar interfaces sem fios e consolidou-se como a alternativa mais recente ao `iwconfig`. Este comando baseia-se numa sintaxe semelhante à do `ip`:

```bash
iw [OPCIONES] OBJETO [COMANDO]
```

Alguns objetos que podem ser usados com o iw são:

- dev NOME\_DA\_INTERFACE = Interface de rede
- phy NOME\_DO\_DISPOSITIVO = Dispositivo sem fios (por nome)
- phy#ÍNDICE\_DO\_DISPOSITIVO = Dispositivo sem fios (por índice)
- reg = Agente regulador para configurar a região e o país

Na secção correspondente do manual, é possível consultar uma apresentação dos comandos e das opções.

**3. nslookup**

Tal como `dig`, `nslookup` também serve para resolver nomes. O comando está disponível em dois modos de funcionamento: interativo e não interativo. Para iniciar o nslookup no modo não interativo, o programa é executado em combinação com um nome de host ou um endereço IP.

```bash
nslookup [OPCIONES] [HOST/IP ]
```

Para iniciar o modo interativo, introduza o comando `nslookup` no terminal sem qualquer informação adicional e, em seguida, inclua os nomes de host ou endereços IP para visualizar os endereços IP ou nomes de host associados.

Uma vez que o comando está **oficialmente obsoleto**, recomenda-se aos utilizadores que utilizem `dig` em vez dele.

**4. rsync**

O comando `rsync` permite sincronizar ficheiros localmente ou numa rede. Para tal, são primeiro comparados o tamanho e a data das alterações dos ficheiros em questão. A sintaxe do comando é a seguinte:

```bash
rsync [OPCIONES] ORIGEN DESTINO
```

O comando `rsync` é normalmente executado com a opção `-a`, que é responsável pela cópia de todas as subpastas, bem como dos links simbólicos, juntamente com os direitos de utilizador.

**5. scp**

Com o comando Linux scp (*secure copy*) , dispõe de outro programa para transferir dados de forma segura na rede: `scp` copia dados de um computador para outro, utilizando também para isso o protocolo de rede SSH. O programa cliente funciona quase como a opção `cp`, embora seja utilizado em todos os sistemas com esta sintaxe:

```bash
scp [OPCIONES] ARCHIVO [[user@]remote_host:]RUTA
```

A indicação do caminho no computador é precedida pelo nome de utilizador e pelo nome do host remoto. Os ficheiros locais podem ser referenciados através de caminhos relativos ou absolutos.

Exemplos:

```bash
scp /home/max/images/image.jpg max@example.com:/home/max/archiv
```

Graças a outras opções, pode configurar o modo de transferência e a encriptação.

**6. tty**

O comando `tty` exibe o nome do ficheiro do terminal definido como entrada padrão. A sintaxe geral do comando é a seguinte:

```bash
tty [OPCIONES]
```

### Arquivar e compactar

O Linux disponibiliza várias tecnologias para comprimir e empacotar ficheiros, embora seja importante ter em conta que **nem sempre um processo de arquivamento implica uma compressão**. Por exemplo, o programa de arquivamento de ficheiros `tar` é frequentemente utilizado em conjunto com programas de compressão como `gzip`, `bzip2` ou `xz`.

**1. gzip**

No caso do `gzip`, estamos perante um programa que permite comprimir e descomprimir ficheiros facilmente no terminal. A sua sintaxe geral segue esta estrutura:

```bash
gzip [OPCIONES] ARCHIVOS
```

Deve ter em conta que, por predefinição, `gzip` apaga o ficheiro original ao compactá-lo, algo que, por outro lado, pode evitar com a ajuda da opção `-k`. O programa também pode ser utilizado em vários ficheiros ao mesmo tempo: cada ficheiro original é então convertido num ficheiro `gz` independente. Para gravar vários ficheiros num único ficheiro compactado, utiliza-se o gzip em conjunto com o programa de compactação `tar`. Se se tratar de descompactar um ficheiro gz, combina-se o comando `gzip` com a opção `-d` ou utiliza-se o comando gunzip.

**2. bzip2**

Uma alternativa popular ao `gzip` é o programa de linha de comandos `bzip2`. Utilizando a mesma sintaxe que o anterior, este baseia-se, no entanto, num processo de compressão em três fases que permite um maior grau de compressão. Os ficheiros que foram comprimidos com o bzip2 têm a extensão `.bz2`. Utilize `bzip` com este esquema para comprimir ficheiros:

```bash
bzip2 [OPCIONES] ARCHIVOS
```

`bzip2` também pode ser aplicado em ficheiros `tar`. A descompressão ocorre aqui de forma semelhante ao `bzip` com a opção `-d`.

**3. xz**

O comando `xz` converte ficheiros para o formato de compressão de dados com o mesmo nome. Para executar o programa, segue-se o mesmo procedimento que para os comandos `gzip` e `bzip2`.

```bash
xz [OPCIONES] ARCHIVOS
```

Os ficheiros compactados com `xz` têm a extensão `.xz`. A descompressão é também realizada com a opção `-d` (tal como nas opções `gzip` e `bzip`). Em alternativa, também é possível utilizar o comando `unxz`.

Tal como os ficheiros `gz` e `bz2`, os ficheiros `xz` também não são compactados. Quando se pretende incluir vários ficheiros no mesmo ficheiro compactado `xz`, é necessário recorrer à ferramenta de compactação `tar`.

**4. cpio**

`cpio` (*copy in, copy out*) é um programa de arquivamento que permite gravar dados num ficheiro (.cpio) e extraí-los desse ficheiro.

### Gestão de partições

Quando se trabalha com Linux, para poder aceder a um sistema de ficheiros localizado numa partição diferente, este tem de estar integrado na estrutura de diretórios do sistema operativo. Este procedimento é designado por\*\*«montar»\*\*uma partição e pode ser realizado na interface gráfica do utilizador. Utilizando o terminal de linha de comandos, o utilizador dispõe também de programas como `lsblk`, `blkid` e `mount`, com os quais pode solicitar informações sobre os dispositivos de bloco (*block devices*) ligados e montá-los ou desmontá-los conforme necessário.

**1. lsblk**

Com o comando `lsglk` (*list block devices*), obtém-se uma visão geral de todos os dispositivos e partições incorporados no sistema operativo, apresentados numa estrutura em árvore (não precisam necessariamente de estar montados).

```bash
lsblk [OPCIONES]
```

A saída pode ser personalizada utilizando a opção `-o` (*–output*) e uma lista dos atributos pretendidos para solicitar dados adicionais, tais como o número de identificação (UUID), o tipo de sistema de ficheiros (FSTYPE) ou o estado (STATE).

Na configuração padrão, os dispositivos vazios não são tidos em conta, mas devem ser incluídos na visão geral se `lsblk` for combinada com a opção `-a` (*–all*). Para solicitar informações sobre um determinado dispositivo, utiliza-se o seguinte esquema:

```bash
lsblk [OPCIONES] DISPOSITIVO
```

**2. blkid**

`blkid` também fornece informações sobre os dispositivos ligados ao hardware, de forma semelhante ao comando `blk`. Ao utilizar o comando com o seguinte formato, é possível solicitar o número de identificação (`UUID`) e o tipo de sistema de ficheiros (`TYPE`) de todos os dispositivos de bloco ligados:

```bash
blkid [OPCIONES]
```

Com a opção `-o` e o valor `list`, obtém-se a saída em forma de tabela.

```bash
blkid -o list
```

### Miscelânea

A seguir, descrevem-se alguns comandos que não se enquadram em nenhuma das categorias enumeradas até agora.

**1. pseudónimo**

A interação com o shell é normalmente feita através de comandos que podem ser utilizados para chamar **programas de linha de comandos** com o mesmo nome. Utiliza-se uma chamada de programa para cada ação que se pretenda realizar através do terminal. O [comando Linux `alias`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-alias-do-linux/) permite-lhe definir nomes curtos para as chamadas de programas. Utilize-o `alias` seguindo o esquema apresentado a seguir:

```bash
alias APODO = 'COMANDO'
```

Substitua COMANDO pela linha de comando, incluindo as opções. Isto irá inserir a cadeia de caracteres inserida no lugar do marcador APODO.

**2. em**

Com o comando `at`, de acordo com este esquema, programa-se a execução de uma determinada ordem:

```bash
at FECHA HORA
```

Em seguida, introduza o comando e saia do modo interativo com \[CTRL\] + \[D\].

\*\*3.\*\*cal Ao utilizar `cal` de acordo com o esquema a seguir, obtém-se uma vista de calendário no terminal:

```bash
cal [OPCIONES] [[MES] Año]
```

**4. pr**

O programa de linha de comandos `pr` permite preparar ficheiros para impressão. Para tal, siga a seguinte sintaxe:

```bash
pr [OPCIONES] Archivo
```

Na configuração padrão, `pr` gera um cabeçalho que contém o nome do ficheiro, a data atual e o número da página.

**5. script**

Com o comando `script`, é possível gravar uma sessão no ficheiro `typescript`. Se este já contiver uma gravação de uma sessão anterior, esta será substituída. O registo da sessão começa automaticamente quando o programa é iniciado:

```bash
script
```

Utilize o atalho de teclado \[CTRL\] + \[D\] para terminar a gravação. Se, em vez de `typescript`, preferir gravar a sessão num ficheiro diferente, introduza o comando `script` juntamente com o nome do ficheiro ou o caminho.

**6. e seguintes**

`seq` permite obter uma sequência de números na saída padrão, para o que se define um valor inicial, um valor final e, eventualmente, o tipo de incremento.

```bash
seq [OPCIONES] VALOR INICIAL INCREMENTO VALOR FINAL
```

**7. tasksel**

Com o comando `tasksel`, obtém-se suporte para a instalação de aplicações padrão, como um servidor de e-mail, DNS, OpenSSH ou LAMP. Se utilizar esta ferramenta, todos os pacotes e programas necessários para uma determinada tarefa são instalados automaticamente na sequência correta. Com a opção «–list-tasks», o «tasksel» apresenta uma lista de todas as aplicações padrão disponíveis.

```bash
tasksel --list-tasks
```

Se pretender obter informações adicionais sobre uma aplicação da lista, inclua a opção `--task-desc` no comando, juntamente com as informações correspondentes. Se pretender que o terminal mostre todos os pacotes pertencentes à tarefa «mail-server», utilize o comando com a opção `--task-packages`.

A instalação de todos os pacotes de uma aplicação padrão é iniciada através do subcomando `install`. Para tal, é necessário ter direitos de administrador.

**8. tee**

O comando tee do Linux permite duplicar a saída de um programa. Para tal, uma parte da saída é redirecionada para a saída padrão e outra é gravada no ficheiro indicado no comando `tee` a sua sintaxe:

```bash
tee [OPCIONES] ARCHIVO
```

`tee` é frequentemente acompanhado pela barra vertical (`|`) como operador:

```bash
ls | tee ejemplo.txt
```

**9. hora**

Utilize o comando `time` de acordo com o esquema a seguir para obter informações sobre o tempo de execução dos programas que inicia no terminal:

```bash
time [OPCIONES] Comando [ARGUMENTOS]
```

**10. tr**

Utilize `tr` para apagar caracteres ou substituí-los por outros. Para tal, `tr` lê o fluxo de dados da entrada padrão e escreve-os na saída padrão de acordo com a modificação pretendida. No caso de substituição, `tr` é utilizado com dois argumentos:

```bash
tr OPCIÓN CANTIDAD1 CANTIDAD2
```

O segundo argumento (CANTIDADE2) substitui o primeiro (CANTIDADE1). Para apagar uma sequência de caracteres, utiliza-se a opção `-d` e indica-se a sequência como argumento.

```bash
tr -d SECUENCIA
```

Este comando costuma ser combinado com os operadores «maior que» ou «menor que» para efetuar ajustes nos ficheiros.

```bash
tr 'a-z' 'A-Z' < ejemplo1.txt > ejemplo2.txt
```

Aqui, `tr` lê o conteúdo do ficheiro `ejemplo1.txt`, substitui as letras minúsculas de a a z por maiúsculas e grava o resultado no ficheiro `ejemplo2.txt`.

**11. parede**

O comando `wall` permite enviar uma mensagem a todos os utilizadores ativos no sistema num determinado momento. Para executar o programa, escreva na consola:

```bash
wall
```

Confirme com \[Enter\] e escreva a sua mensagem, que também pode confirmar com \[Enter\] e enviar com o atalho de teclado \[CTRL\]+\[D\]. Todos os utilizadores ativos no sistema nesse momento recebem a notificação no terminal como uma mensagem de difusão. Tenha em atenção que, para poder receber mensagens de outros utilizadores, tem de permitir que estes tenham acesso de escrita ao seu terminal. Para tal, utilize o comando `mesg`:

Se quiser enviar o conteúdo de um ficheiro a todos os utilizadores ativos, utilize `wall` com o operador de redirecionamento &lt; e o nome do ficheiro em questão:

```bash
wall < NOMBRE DEL ARCHIVO
```

**12. assistir**

Com o comando `watch`, é possível executar um comando em intervalos regulares, sendo este invocado através da seguinte sintaxe:

```bash
watch [OPCIONES] COMANDO
```

O intervalo de tempo durante o qual o comando enviado com `watch` deve ser executado é definido pela opção `-n` (em segundos). `watch` é encerrado com a combinação \[CTRL\] + \[C\].

**13. WC**

O [comando `wc` do Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-wc-do-linux/) (*word count*) fornece o número de linhas, palavras, letras, caracteres ou bytes de um ficheiro de texto, sempre que necessário.

```bash
wc [OPCIONES] ARCHIVO
```

Se `wc` for executado sem opções, a saída corresponde ao esquema `LÍNEAS PALABRAS CARACTERES ARCHIVO`, mas o comando suporta outras opções que permitem filtrar a saída: `-l (líneas)`, `-C (bytes)`, `-m (caracteres)`,`-L (longitud de la línea más larga)` e `-w (palabras)`.

**14. xargs**

O [comando `xargs` do Linux](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comando-xargs-do-linux/) permite passar a saída de um comando para outro comando como argumento. Normalmente, utiliza-se a barra vertical (`|`) como operador de redirecionamento. O `xargs` é utilizado com esta sintaxe:

```bash
COMANDO1 | xargs [OPCIONES] COMANDO2
```

O comando `xargs` é utilizado, por exemplo, em conjunto com `find`: no exemplo seguinte, `find` identifica todos os ficheiros do diretório atual que correspondem ao padrão `*.tmp` e apresenta os seus nomes na saída padrão, onde são passados ao comando `rm` como argumento.

```bash
$ find . -name '*.tmp' | xargs rm
```

Esta lista de comandos do Linux não pretende ser uma lista exaustiva de todos os comandos, mas abrange apenas os comandos estritamente essenciais e explica alguns exemplos da sua aplicação quotidiana em sistemas Unix-like. Se procura uma descrição completa destes e de outros comandos, terá de consultar as páginas do manual do seu sistema operativo, cuja versão online se encontra no projeto [Linux man-pages](https://www.kernel.org/doc/man-pages/ "Linux man-pages project by Michael Kerrisk") de Michael Kerrisk.


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comandos-do-linux-a-lista-essencial/](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comandos-do-linux-a-lista-essencial/) for AI/LLM consumption.