Oirartnocoa

O comando mais comum para ler um arquivo de texto é cat (ou less se você quer ler página a página, mas não é sobre isso que estamos falando). Ele inicia do início e termina no final, o que é totalmente lógico mas não é sempre isso que precisamos. Se você quer ler um arquivo ao contrário (digo, quando precisamos ler um arquivo de log e você precisa da entrada mais recente primeiro), apenas execute cat ao contrário. Isso mesmo: tac faz o mesmo que cat ao contrário.

E caso você não queira uma ordem específica mas quer as linhas da saída aleatoriamente misturadas? Para isso usamos o comando shuf. Agora não será particularmente útil para arquivos de log (OK, é completamente inútil para arquivos de log), mas e se você quer uma lista de arquivos de música para passar ao tocador de músicas? A entrada não precisa ser um arquivo, pode ser uma entrada padrão, então você pode tocar seus arquivos Ogg Vorbis aleatoriamente com:

ls -1 ~/music/**/*.ogg | shuff | mplayer -playlist -

ou

mplayer $(ls -1 ~/music/**/*.ogg | shuff)

Janela remota

O Sistema de Janelas X usa um modelo cliente-servidor para criar um monitor. Na maioria das vezes você nem percebe, porque o cliente e o servidor são executados na mesma máquina, mas o sistema foi desenvolvido desta maneira para permitir que clientes X remotos se conectem ao servidor X. Você pode pensar em um cliente fino, quando o cliente X consiste em apenas um teclado e um monitor conectados ao servidor. O efeito colateral positivo é que esta funcionalidade está apenas disfarçada na fachada da sua máquina Linux.

O SSH encaminha sessões de janela X automaticamente, o que significa que se você iniciar uma aplicação numa máquina remota de um console SSH, a janela da aplicação aparecerá na máquina local. A janela está se comunicando com a máquina remota usando o protocolo X, o motivo de haver um atraso cada vez que você redimensiona a janela ou clica em algum lugar na interface.

xterm -display :0 -e klamav &

Se o comando acima é executado de um console SSH conectado a uma máquina remota, seria aberta a janela do Xterm e executado KlamAV na tela remota ao invés de na tela local – você não poderá na sua tela. Isto é útil se você precisa iniciar uma aplicação remotamente, como um cliente de e-mail ou uma varredura de vírus.

A parte importante do comando é o parâmetro de exibição. Aqui usamos :0, que é a primeira tela do sistema remoto. O X usa endereços IP e portas para especificar um destino e nós simplesmente omitimos o endereço, direcionando para a máquina local. Você pode também usar localhost:1 para especificar a segunda tela.

O parâmetro -e que o sucede irá executar a aplicação do Xterm aberto, iniciando KlamAV na mesma tela do console Xterm. Você também pode usar no comando nohup para que ao término da sessão SSH para que a aplicação que está executando remotamente não permaneça.

Velhos favoritos do bash

É sempre válido revisitar comandos esquecidos do bash. Três dos mais úteis que parecem ter sido esquecidos no uso comum são o cut, paste e o comando de tradução, tr. cut e paste fazem exatamente o que você espera, e apesar de soarem banais, surpreende quão poderosos podem ser quando usados na linha de comando ou em scripts.

cut normalmente é um pouco mais útil do que o comando paste. Executar o cut recorta parte de uma linha e a redireciona para a saída padrão. Predeterminadamente, o comando usa tabulação como separador de campos, mas isto pode ser alterado usando -d, e os campos são selecionadas ao usar o indicador -f.

paste efetivamente permite que você possa mesclar conteúdos em colunas, como um cat vertical. A melhor maneira de ver como funciona é criando dois arquivos de texto, cada um com três linhas de dados separadas. A saída do paste será o conteúdo do primeiro arquivo numa coluna à esquerda no segundo arquivo.

O comando tr é usado para apagar saídas irrelevantes, como espaços ou tabulações. A opção mais útil é a -s, que remove espaços repetidos em seqüências de um simples caracter. Use a saída de ls -al, que gera uma longa lista de diretórios incluindo o tamanho dos arquivos preenchidos com espaços para melhor visualização. O comando tr pode ser usado para removê-los e colocar um simples caracter de espaço como separação de campos.

Um exemplo de como estes comandos podem trabalhar juntos:

ls -al --sort=size /usr/bin | tr -s ' ' | cut -d ' ' -f 5,8

A longa saída de ls é classificada e então transportada para o comando de tradução. Este remove o preenchimento, deixando os campos separados por um caracter de espaço. Depois o cut usa o caracter de espaço como um delimitador de campo e pega os campos 5 e 6 da saída. O que você tem é uma lista de arquivos, classificadas por tamanho, mostrando apenas o tamanho e o nome do arquivo.

Manipule os codecs

O problema de ter muitos arquivos de vídeos é que eles estão em muitos formatos de arquivo diferentes – e há dúzias de codecs diferentes para codificar streams de áudio e vídeo.

Provavelmente você tem familiaridade com o maravilhoso MPlayer, mas o que você talvez não saiba é que é que há um utilitário irmão chamado MEncoder. Ele é desenvolvido a partir do mesmo código base do MPlayer e como resultado é capaz de converter para e dos mesmos formatos que seu consumado irmão. MEncoder funciona pela linha de comando e pode não ser tão intuitivo para iniciantes, pois há muitos parâmetros. Verifique na página man do MEncoder!

Basicamente o comando do mencoder usa quatro parâmetros diferentes para converter o arquivo. A primeira parte é a entrada, a segunda é a saída do codec de vídeo, a terceira para a saída do codec de áudio seguida do parâmetro final para a saída do comando. Um comando MEncoder típico parece como isso:

$ mencoder input.avi -ovc lavc -ovc -lavcopts vcodec=mpeg4:vhq:vbitrate=1200 -oac copy -o output.avi

Isso parece complicado, mas na verdade não é tanto. input.avi é o arquivo a ser processado, e -ovc lavc diz ao MEncoder qual é o codec de saída a ser usado. O próximo parâmetro são as opções de codec. Neste caso, especificamos MPEG4 (equivalente ao DivX) com variação de bit-rate de 1200. O -oac copy é aonde o codec de saída de áudio deve estar, mas neste caso estamos simplesmente copiando para arquivo fonte, que é o parâmetro final.

O que é interessante sobre o MEncoder é que ele realmente tira vantagens do sistema Linux. Por exemplo, você pode usar uma entrada de televisão para o arquivo-fonte, ou passar o vídeo através de um filtro. Você pode até remover as barras que você vê em filmes widescreen usando o comando crop.