Obter listagem de todos os comandos em Linux

Será algo com pouco interesse para os utilizadores habituais e mais experientes, mas é uma dúvida de poderá surgir a novos utilizadores: como poderei saber todos os comandos disponíveis na linha de comandos do Linux (ou GNU/Linux)?

Num sistema Linux, todos os comandos disponíveis acabam por ser as aplicações instaladas e os comandos internos do interpretador de comandos usado, que comummente será a bash.

Uma forma simples de obter está listagem será no terminal carregar na tecla TAB duas vezes e responder ‘(s)im/(y)es’ quando for pedido se pretendemos que sejam listados os comandos.

tab-tab.png

Não é algo que se descubra à partida, mas a tecla TAB é usada para completar elementos introduzidos na linha de comando (comandos, nomes dos ficheiros, opções dos comandos, etc), ou mostrar sugestões para essa completação.

Para se saber mais sobre um comando (para comandos que tenham página de manual) pode-se sempre aceder ao manual do comando com o comando ‘man’. Basta executar ‘man nome_do_comando’. Se existir uma página de manual para esse comando ela será exibida. Para sair dessa visualização basta carregar na tecla ‘q’.

Para comandos internos da bash pode-se sempre fazer man bash e procurar por eles para saber o que fazem.

Os comandos a que se tem acesso e que não sejam comandos internos da bash, estão nos directórios indicados numa variável de sistema: $PATH.

Uma forma de listar os ficheiros que estão nesses directórios poderá ser a seguinte:

$ ls `echo $PATH|sed -e s/:/\ /g` | less

E como a listagem é passada para o paginador less, podemos navegar na lista à vontade e sair com a tecla ‘q’ como no comando man.

Muitas vezes não é possível saber à partida o que faz cada comando só pelo nome, e se o comando não tiver uma página de manual, numa distribuição baseada em Debian podemos sempre saber a que pacote pertence e que funcionalidade esse pacote pretende fornecer com:

$ dpkg -S `which comando`

E depois saber mais informação com:

$ apt-cache show pacote

Por exemplo (parte menos relevante cortada):

$ dpkg -S `which gimp`
gimp: /usr/bin/gimp

$ apt-cache show gimp
Package: gimp
Section: graphics
Description: The GNU Image Manipulation Program
The GIMP lets you draw, paint, edit images, and much more! GIMP includes the functionality and plug-ins of other famous image
editing and processing programs.

Mixing barato em Linux – 3

Claro que uma solução ainda melhor, e explicada de forma satisfatória neste artigo no Viva Linux, é conjugar o XMMS com o dbmix.

Ganha-se um interface simples e eficaz com controlo de volume, pitch, suporte de sampling e N canais distintos e também controlo de playlists unificado. Está em banho maria desde 2002, mas funciona. Portar isto para gtk2 e rejuvenescer o interface não era mal pensado… 🙂

Também tem suporte para cueing numa placa de som independente.

No meu setup não funciona bem ao nível do hardware. Mas calculo que seja uma conjugação de factores, ter uma placa no bus USB, mau suporte da placa onboard e da USB, problemas de latência, etc.

Será que a libertação da versão em condições do OSS vai mudar o panorama actual?

Mixing barato em Linux – 2

Melhor que usar o XMMS para este fim, talvez seja usar o Audacious. Baseado no XMMS tem um feeling mais actualizado e parece-me que o desenvolvimento continua. As notícias no site do XMMS parecem ser actualmente anúncios cheios de sarcasmo quando uma distribuição qualquer deixa de ter o XMMS nos repositórios… 😛

Podemos usar o truque que usei para o XMMS de redefinir a variável de ambiente $HOME para ter configurações independentes para cada player, mas no Audacious não é assim tão simples, porque algumas coisas ficam na directoria principal de configuração, como as presets de equalização, mas isso não é algo negativo, já que basta definirmos as que pretendemos usar e ficam disponíveis nos dois players e no player principal.

Além disso não existe opção de várias instâncias nas configurações do Audacious, mas podemos editar o ficheiro de configuração para obter essa funcionalidade.

As minhas configurações estão disponíveis aqui.

O mais certo é ser necessário reconfigurar a posição de cada janela, etc, depois de correr o script de arranque das duas instâncias.
Da próxima vez que o script for lançado estará tudo como ficou, inclusive as posições das janelas.

Quanto a equalização as principais presets serão o corte das frequências agudas, graves e médias (vozes e idênticos). Eu estou a usar este ficheiro que pode ser copiado para $HOME/.audacious/eq.preset.

Ver/Ouvir streams mms no GNOME

Para ver ou ouvir streams mms no GNOME em Ubuntu, basta instalar o pacote com os codecs para ASF (que no Ubuntu deverá ser sugerido aquando da tentativa de abrir o stream com o Totem/Movie Player e não existe o codec):

sudo aptitude install gstreamer0.10-plugins-ugly

Caso estejamos atrás de um proxy será necessário configurá-lo com o gnome-network-preferences:

screenshot-network-proxy-preferences.png

🙂

Mixing no Linux com Python, GTK2 e GStreamer

Graças ao esforço do Jono em incentivar quem pegue nesta matéria, estive a brincar com os exemplos dele, no Eclipse+PyDev (entretanto fartei-me das manias do Eclipse e passei a usar o PyPe) e no Glade.

Fiz um simples player com controlo de pitch, ganho de volume e bending. 🙂

screenshot-pydj.png

O código foleiro em Python está aqui, e o interface glade, aqui.

Entretanto refiz o GUI e estou a tentar fazer alguma coisa de jeito e usável (o código actual está aqui). 🙂

screenshot-pydjpy.png

Com o poder que os pipelines do GStreamer permitem, talvez consiga aquilo que pretendo, um player simples com controlo de pitch e possibilidade de definir as opções do sink para poder usar duas placas de som independentes. Até os kill switches devem ser simples de implementar (adicionando um bpwsinc ao pipeline ou algo do género), só não sei como será a latência… 😛

Alteração ao GUI para os kill switches:

screenshot-pydjpy-1.png

Muito obrigado Jono!

Mixing barato em Linux – 1

Este será o primeiro do acompanhar de uma ideia que andava há vários meses para experimentar, usar placas de som baratas USB para misturar música.

usb_audio.pngComecei por adquirir um par de placas USB baratas. Em Linux funcionam na perfeição, são do mais simples possível, uma saída e uma entrada. Tive alguns problemas de latência se usar ambas num hub USB, mas este hub não tem alimentação, nem tenho a certeza que suporte a versão 2.0 do protocolo USB, mas poderá ser que o tráfego no barramento USB seja demasiado para duas placas em simultâneo. 🙂

Tenho para aqui uma mesa de mistura com a minha idade, mas que já tem crossfader, dado que a equalização será feita por software também é desprezável o facto de não haver equalização por canal na mesa.

Para já testei ambas as placas a funcionar com o xmms e corre tudo sem problemas, dado que as ligue a portas USB independentes sem passar pelo hub. A minha ideia era usar o mixxx, mas ainda não suporta várias placas de som… por isso vou para já fazer uns testes com o mais que testado xmms.:)

Para poder ter duas instâncias de xmms sem partilha de definições, configurei o xmms como queria (activei o suporte para múltiplas instâncias):

screenshot-preferences.png

Depois criei uma pasta onde vou guardar as definições de cada instância, chamei-lhe xmms. O xmms recorre apenas à variável $HOME para saber onde está o directório onde guardará as suas definições, daí podermos mudá-lo a nosso favor.

Criei o seguinte script bastante simples para gerir o arranque das duas instâncias e no meu caso chamei-lhe launch_xmms:

#! /bin/bash
# Player 1
export HOME=$PWD/player1
xmms&

# Player 2
export HOME=$PWD/player2
xmms&

Dei-lhe permissões de execução com

chmod +x launch_xmms

Depois criei dois directórios, player1 e player2, para onde copiei a configuração original do xmms:

cp -r $HOME/.xmms player1 && cp -r $HOME/.xmms player2

Agora posso correr o script de arranque e tenho duas instâncias do xmms com definições independentes entre si e do xmms normal:

./launch_xmms

Agora em cada instância defino a placa de saída, hw:1,0 e hw:2,0:

screenshot-alsa-driver-configuration.png

Agora falta apenas ligar as placas à mesa e testar. Com o suporte de filtros LADSPA do xmms posso usar os filtros disponíveis para esta framework no xmms, inclusive controlo de pitch, além de haver um plugin também para esse fim.

Nos próximos posts pretendo documentar melhor todo o processo com mais imagens e fotografias e talvez alguns samples do resultado.

Aspecto exemplificativo:

screenshot.png