Substituindo o mesmo texto em arquivos diferentes

Dificuldade: Intermediário
Aplicação: find / Perl

Se você tem um texto que deseja substituir em vários locais, há várias maneiras de fazer isso. Para substituir o texto Windows por Linux em todos os arquivos no diretório atual chamado teste[alguma coisa] você pode executar o seguinte:

perl -i -pe 's/Windows/Linux/;' test*

Para substituir o texto Windows por Linux em todos os arquivos de texto no diretório atual e para baixo você pode executar este:

find . -name '*.txt' -print | xargs perl -pi -e's/Windows/Linux/ig' *.txt

Ou se você preferir isso também vai funcionar, mas apenas em arquivos regulares:

find -type f -name '*.txt' -print0 | xargs --null perl -pi -e 's/Windows/Linux/'

Economiza muito tempo e tem uma classificação de guru alta!

De Dicas de Linux que todo geek deve saber

Verifique os processos que estão rodando e que não são os seus

Dificuldade: Especialista
Aplicação: Bash

Imagine a cena – você está pronto para uma partida rápida de Crack Attack contra um colega no escritório, mas para encontrar o jogo se arrasta um impasse, assim como você está prestes a bater o seu subordinado arrogante – o que poderia estar acontecendo para fazer a sua máquina estar tão lenta? Deve ser algum desses outros usuários, roubando o seu precioso tempo de CPU com seus experimentos científicos, servidores web ou outras coisas estranhas de geek!

OK, vamos listar todos os processos que não estão sendo executados por você!

ps aux | grep -v `whoami`

Ou, para ser um pouco mais inteligente, porque não listar apenas os dez maiores desperdiçadores de tempo:

ps aux --sort=-%cpu | grep -m 11 -v `whoami`

É provavelmente melhor executar isto como root, pois isso irá filtrar a maior parte dos processos vitais do plano de fundo. Agora que você tem a informação, você pode simplesmente matar seus processos, mas muito mais covarde é correr xeyes em seu desktop. Repetidamente!

De Dicas de Linux que todo geek deve saber

Dicas de Linux que todo geek deve saber

Fonte: Linux tips every geek should know

O que separa os usuários normais dos super-geeks? Simples: anos gastos aprendendo maneiras de desmantelar códigos, truques, dicas e técnicas que transformam grandes esforço num trabalho de um momento. Se você quer ganhar agilidade para colocar as mãos á obra, separamos 50 dicas fáceis de aprender para lhe ajudar a trabalhar com mais eficiência e obter o máximo do seu computador. Aproveite!

  1. Verifique os processos que estão rodando e que não são os seus
  2. Substituindo o mesmo texto em arquivos diferentes
  3. Consertar um terminal problemático

Redirecionando as massas

Ainda que você seja um iniciante no Linux, provavelmente você já usouo alguma forma de redirecionamento pela linha de comando. Redirecionamentos usam > e < para passar dados entre comandos que você está executando. É mais usando para redirecionar uma saída de um comando para um arquivo. Por exemplo, se você digita dmesg >local.log o conteúdo do buffer do kernel(a saída do comando dmesg) será redirecionado para o arquivo local.log ao invés de aparecer na tela. Se você usar dois > a saída do comando dmesg será concatenada no final do arquivo ao invés de sobrescrevê-lo. Usa-se o < como argumento de entrada ao invés de destinação – mais comumente usando com grep. Ao digitar grep -i USB < local.log buscará por 'USB' no arquivo local.log por exemplo.

Redirecionamentos funcionam porque muitas aplicações Linux, grandes ou pequenas, têm três 'descrições de arquivo' possíveis para trabalhar com entrada e saída. São as entradas padrão, a saída padrão e o erro padrão. Normalmente você não percebe, pois os dispositivos usados para entrada e saída padrão são o teclado e o tela. Nos exemplos anteriores, estamos endereçando o descritor de saída e entrada usando < e >. Mas como você endereça o descritor de arquivo do erro padrão? Isto é feito com o número '2' antes de > - o 2 vem da prioridade dada para cada descritor de arquivo. Naturalmente, 0 é a entrada padrão, 1 é a saída padrão e 2 é a saída padrão de erro. É muito útil porque permite que você filtre condições de erro geradas por um comando, enquanto a saída continua sendo enviada para um arquivo de log.

Um exemplo útil. Os erros de permissão que resultam do comando find quando este não tem privilégios de acesso são enviadaos para o buraco negro do disposivito null enquanto os resultados de sucesso são enviados para a tela:

find / -name *.jpg 2>/dev/null

Mais em Truques de linha de comando.

O grande escape SSH

Um aspecto do SSH que facilitam muito as coisas quando você abre uma conexão, inicia uma série de jobs e percebe que precisa de encaminhar uma porta através da sesão atual. A resposta é usar uma seqncia de escape enquanto conecta ao SSH para trocar certas configurações sem necessidade de reconexão.

Uma seqüência de escape é justamente uma série de caracteres que instrui a utilidade do que você está usando (neste caso o SSH) para escapar do que está fazendo e executar uma tarefa de utilidade específica. O que é preciso é de uma seqüência de escape enquanto usa o shell. A seqüência de escape mais útil para SSH é executada quando você digita o til (~), seguido do C maiúsculo. Você não verá nada na sessão até que você complete a seqüência de escape até que o ponteiro do terminal será modificado para ‘ssh>’. Isto significado que você foi enviado para a linha de comando SSH. Daqui você pode se conectar a uma porta na máqina remota por uma porta da máquina local e criar um túnel entre os dois através da conexão segura SSH.

Você pode usar esta técnica para criar um túnel para os dados de um servidor proxy Squid através do SSH para uma porta local na sua máquina remota usando o argumento -L, então digitando -L8089:localhost:3128 criariao túnel Squid da porta 8090 sem precisar reiniciar a sessão SSH. Você também pode encaminhar portas usando a seqüência ~# e cancelar portas encaminhadas digitando -Krhostport. Para cancelar o túnel Squid que acabamos de criar, digite -KR3128.

Mais em Truques de linha de comando.

Capturas de telas garantidas

Normalmente temos problemas para ilustrar jogos porque os jogos toma o monitor e o teclado para si e, a não ser que o desenvolvedor tenha incluído uma função interna para captura de tela, pode ser muito difícil tirar o conteúdo da tela e salvá-la em um arquivo. Ainda que tenha um modo de jogo em janela, como com Cold War, você ainda precisa encontrar uma maneira de retirar o controle do jogo do teclado e dar controle novamente para o sistema operacional antes que possa usar o utilitário do Gnome ou do KDE que capturam tela.

Há uma solução para quando você não consegue escapar das garras de uma aplicação que tenha tomado conta da sua sessão X Windows. A dica é que ainda quando você não pode ter sua área de trabalho de volta, você permanece tendo um dos terminais virtuais esperando pacientemente em segundo plano. Pressionando Ctrl+Alt+F1 troca-se da sua área de trabalho para o login baseado em texto do primeiro terminal virtual. Estes terminais remontam para quando Unix era um sistema predominantemente multi-usuário e o ‘virtual’ se referia ao fato de que estavam numa máquina local ao invés de um terminal burro.

Outros terminais virtuais são acessível substituindo-se F1 por F2-F6 e você pode retornar à sua área de trabalho ao acessar ao sétimo terminal virtual, Ctrl+Alt+F7, que também é a sua sessão X em execução. O que isso tem a ver com capturar telas? Bem, já que você tem uma linha de comando, agora é possível capturar a tela usando uma das várias ferramentas de ImageMagick que já está instalado por padrão no seu sistema.

O comando:

chvt 7;sleep 10;import -display :0.0 -window root image.png

Troca-se para o terminal virtual que está executando o X (chvt 7), aguarda 10 segundo e então usa o comando import do ImageMagick para retirar o conteúdo da tela para image.png. Maravilha!

Mais em Truques de linha de comando.

Pinte por números

Todos gostamos de um pouco de cor em nossa vida e apenas porque a linha de comando do Linux é uma interface texto para os trabalhos mais internos do seu sistema, isso não quer dizer que precisamos sofrer com textos monocromáticos. Esta dica vai lhe mostrar como escapar disso!

Há várias maneiras de adicionar cores e uma das mais populares é acompanhada da ajuda de um comando chamado dircolor. Se esta escrita lhe ofende (leitores americanos), você sempre poderá usar um link simbólico como o a seguir para amenizar:

sudo ln -s /usr/bin/dircolors /usr/bin/dircolours

Dircolors fará com que tipos de arquivos diferentes apareçam com várias cores diferentes até mesmo com o humilde comando ls. Se você executar o comando dircolors por si próprio, a saída é uma confusão de tipos de arquivos e códigos secretos. Será algo como pi=40;33: ou *.ogg=01;35:. A primeira parte de cara entrada é o tipo de arquivo e a segunda parte (após o símbolo =) consiste de dois valores que representam as cores da fonte e do plano de fundo. Se ficar confuso com as abreviações cripticas da primeira parte, digitar dircolors --print-database provê uma saída mais clara – revelando que pi=40;33: colorirá o símbolo ‘pipe’ (pi) com a cor de fundo preto (40) e cor da fonte amarelo (33), por exemplo.

Se olhar com mais detalhes a saída de dircolors verá que inicia com LS_COLORS= e termina com export LS_COLORS. É porque o comando não faz nada mais do que definir um grande variável de ambiente com sua lista de tipos de arquivos e cores. Você pode salvar esta saída e adicioná-la ao final do seu arquivo .bashrc para que as cores sejam usadas automaticamente.

Mais em Truques de linha de comando.