Como extrair qualquer arquivo com um único comando no terminal
Dica publicada em Linux / Comandos
Como extrair qualquer arquivo com um único comando no terminal
No Linux, lidar com arquivos compactados pode ser confuso no início. Cada formato exige uma ferramenta ou parâmetro diferente:tar -xvzf para .tar.gz, unzip para .zip, unrar para .rar, entre outros.Para facilitar, podemos criar um comando personalizado chamado
extrair que identifica automaticamente o tipo do arquivo e usa a ferramenta correta. Tecnicamente, utilizaremos uma função em vez de um simples alias. Isso ocorre porque as funções conseguem ler o nome do arquivo que você digita logo após o comando, permitindo aplicar a lógica condicional necessária.Veja como aplicar isso no sistema de forma rápida e direta.
Passo 1: Inserindo o código no arquivo .bashrc
Você pode adicionar a função ao final do seu arquivo de configuração do Bash de maneira automatizada, sem a necessidade de abrir editores de texto de forma interativa. Basta copiar o bloco de código abaixo, colar no seu terminal e apertar Enter:cat << 'EOF' >> ~/.bashrc
# Função para extrair qualquer tipo de arquivo compactado extrair () { if [ -f "$1" ] ; then case "$1" in *.tar.bz2) tar xvjf "$1" ;; *.tar.gz) tar xvzf "$1" ;; *.bz2) bunzip2 "$1" ;; *.rar) unrar x "$1" ;; *.gz) gunzip "$1" ;; *.tar) tar xvf "$1" ;; *.tbz2) tar xvjf "$1" ;; *.tgz) tar xvzf "$1" ;; *.zip) unzip "$1" ;; *.Z) uncompress "$1" ;; *.7z) 7z x "$1" ;; *) echo "Formato não suportado: '$1'" ;; esac else echo "Erro: '$1' não é um arquivo válido ou não foi encontrado." fi } EOF
# Função para extrair qualquer tipo de arquivo compactado extrair () { if [ -f "$1" ] ; then case "$1" in *.tar.bz2) tar xvjf "$1" ;; *.tar.gz) tar xvzf "$1" ;; *.bz2) bunzip2 "$1" ;; *.rar) unrar x "$1" ;; *.gz) gunzip "$1" ;; *.tar) tar xvf "$1" ;; *.tbz2) tar xvjf "$1" ;; *.tgz) tar xvzf "$1" ;; *.zip) unzip "$1" ;; *.Z) uncompress "$1" ;; *.7z) 7z x "$1" ;; *) echo "Formato não suportado: '$1'" ;; esac else echo "Erro: '$1' não é um arquivo válido ou não foi encontrado." fi } EOF
Passo 2: Recarregando as configurações
Para que o seu terminal reconheça o novo comando imediatamente (sem precisar fechar e abrir a janela), recarregue o arquivo de configuração executando:source ~/.bashrc
Como utilizar
Agora, a complexidade foi abstraída. Sempre que você precisar descompactar um arquivo, independentemente da extensão, basta utilizar o novo comando:extrair documento.zip
extrair backup.tar.gz
extrair fotos.rar
Entendendo o que foi feito
Para que fique claro como a mágica acontece nos bastidores:- O método
cat << 'EOF' >> ~/.bashrc: Este comando capta todo o bloco de texto inserido até encontrar a marcação finalEOF(End of File) e anexa tudo diretamente no final do seu~/.bashrc. É uma forma extremamente prática e limpa de editar arquivos de configuração direto da linha de comando. - A estrutura
case "$1" in: Ela atua como um sistema de triagem. O$1representa a primeira palavra que você digita após o comando (ou seja, o nome do arquivo). O script verifica a extensão desse arquivo e, com base nela, aciona automaticamente o utilitário correto de descompactação de forma silenciosa e eficiente. - Aviso de Dependências: O script automatiza o acionamento dos programas, mas eles precisam estar instalados no seu sistema operacional. A maioria já vem por padrão, mas caso o script aponte erro ao extrair um
.rarou.7z, por exemplo, certifique-se de instalar os pacotesunrarep7ziputilizando o gerenciador de pacotes da sua distribuição.