Dicas rápidas para linha de comando

Quando comecei a usar o GNU/Linux, o que mais me prendeu ao sistema foi o poder dado ao usuário pela linha de comandos. Que me perdoem os amantes da GUI, mas para mim a CLI é a verdadeira alma do sistema, o verdadeiro poder.

[ Hits: 12.056 ]

Por: Zephyrus (formerly mkmastersys) em 29/01/2015


Um pouco de cURL



Alguns usos úteis do cURL:

Baixando arquivos:

curl -o nome_arquivo_local http://url_direta_para_o_arquivo

Este comando funciona mesmo com binários, desde que você tenha o link direto para o arquivo.

Baixando/upando arquivos de/para servidores FTP:

curl -u ftpuser:ftppass -O ftp://diretório_do_servidor/nome_do_arquivo

O comando acima baixa o arquivo e salva no diretório local.

curl -u ftpuser:ftppass -O ftp://diretório_do_servidor/outro_diretório/

O comando acima lista todo o conteúdo existente em outro_diretório.

curl -u ftpuser:ftppass -T arquivo.txt ftp://ftp.algumserver.org

O comando acima upará o arquivo.txt para o servidor.

curl -u ftpuser:ftppass -T "{arquivo1,arquivo2}" ftp://ftp.algumserver.org

O cURL permite upar vários arquivos de uma vez, exatamente como feito no exemplo acima. Você também pode utilizar curingas, como no comando abaixo, onde todos arquivos que satisfizerem a expressão serão baixados:

curl ftp://ftp.server.org/downloads/linux/[a-z]/

O cURL possui grande poder e versatilidade (aliás, todo o GNU/Linux é assim :D), os comandos aqui foram apenas uma simples amostra. Não vou aprofundar ou então deixará de ser "Dicas rápidas para linha de comando!".

Extraindo texto puro de arquivos HTML

Certa vez precisei extrair texto puro de um arquivo HTML. Encontrei várias opções de conversores etc, mas a maneira mais rápida e eficaz para mim foi utilizando o lynx.

Basta executar o comando:

lynx --dump arquivo.html > arquivo.txt

Funciona também com arquivos PHP.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Um pouco de cURL
   3. Comandos úteis
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalação e configuração da zsh no Gentoo GNU/Linux

VIM avançado (parte 1)

Instalação do Xen no Debian Squeeze

Desbravando o mundo do Software Livre

Remasterização de LPs no Linux

  
Comentários
[1] Comentário enviado por Zephyr em 29/01/2015 - 15:02h

*ERRATA:

No Artigo, na sugestão de script que dei, no comando final echo eu me esqueci de incluir a opção: -e
Sem essa opção o echo não estará habilitado a interpretar a barra invertida em \n.

O exemplo corrigido segue abaixo:

==========================================================================
#!/bin/bash

#Cria variável e atribui valor

MYDINIPADDRESS="`curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`"


echo -e "\n O seu endereço IP externo é: $MYDINIPADDRESS"

==========================================================================


[2] Comentário enviado por fabio em 29/01/2015 - 18:22h

Muito bom o artigo, meus parabéns!

[3] Comentário enviado por Zephyr em 31/01/2015 - 21:26h


[2] Comentário enviado por fabio em 29/01/2015 - 18:22h

Muito bom o artigo, meus parabéns!


Thanx man!

[4] Comentário enviado por removido em 31/01/2015 - 22:06h

Interessante o artigo
Parabéns.

[5] Comentário enviado por Zephyr em 31/01/2015 - 23:47h


[4] Comentário enviado por offsec em 31/01/2015 - 22:06h

Interessante o artigo
Parabéns.


Thanx. Valeu!

[6] Comentário enviado por jhonatanp em 01/02/2015 - 12:49h

Nossa muito legal esses comandos,

Eu não sabia que dava pra testar porta assim geração aletoria muito legal e rastrear o Star Wars foi D + heuehueh.

Eu fiz uma versão com awk do comando que mostra ip e que comtemple os dois idiomas.

ifconfig | awk '/inet (end|addr).?:/ && !/127.0.0.1/ {print $3}'

[7] Comentário enviado por Zephyr em 01/02/2015 - 13:01h


[6] Comentário enviado por jhonatanp em 01/02/2015 - 12:49h

Nossa muito legal esses comandos,

Eu não sabia que dava pra testar porta assim geração aletoria muito legal e rastrear o Star Wars foi D + heuehueh.

Eu fiz uma versão com awk do comando que mostra ip e que comtemple os dois idiomas.

ifconfig | awk '/inet (end|addr).?:/ &amp;&amp; !/127.0.0.1/ {print $3}'


Valeu pela contribuição!




[8] Comentário enviado por hellnux em 02/02/2015 - 20:01h

Olá!

Bela contribuição. Gosto muito deste tipo de dica. Já usei bastante esses de pegar IP, mas ele não são muito eficientes quando o locale são diferentes.

Por exemplo, quando o LANG=en_US
$ ifconfig | grep "inet end.:" | awk '{print $3}' | grep -v '127.0.0.1' | cut -f2 -d:
retorna nada
$ ifconfig | awk '/inet (end|addr).?:/ &amp;&amp; !/127.0.0.1/ {print $3}'
Bcast:IP_qualquer

Prefiro usar apenas:
$ hostname -i

Assim deixo minha contribuição =D

[9] Comentário enviado por albfneto em 03/02/2015 - 11:37h

Muito bom esse artigo. Geral e comandos de uso amplo. Favoritado.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux,Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva.

[10] Comentário enviado por Zephyr em 04/02/2015 - 00:13h


[8] Comentário enviado por hellnux em 02/02/2015 - 20:01h

Olá!

Bela contribuição. Gosto muito deste tipo de dica. Já usei bastante esses de pegar IP, mas ele não são muito eficientes quando o locale são diferentes.

Por exemplo, quando o LANG=en_US
$ ifconfig | grep "inet end.:" | awk '{print $3}' | grep -v '127.0.0.1' | cut -f2 -d:
retorna nada
$ ifconfig | awk '/inet (end|addr).?:/ &amp;amp;&amp;amp; !/127.0.0.1/ {print $3}'
Bcast:IP_qualquer

Prefiro usar apenas:
$ hostname -i

Assim deixo minha contribuição =D


Obrigado pela contribuição.
Explico aqui o porque dos comandos não funcionarem quando em LANG=en_US.

Quando o sistema está configurado para o inglês, o comando ifconfig imprime o resultado e mais especificamente a parte que queremos (o endereço IP) da seguinte forma:

eth0 Link encap:Ethernet HWaddr 00:1e:c9:fa:25:8b
inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0
etc
etc
....

Já para a LANG=pt_BR.UTF-8, o resultado é o seguinte:

eth0 Link encap:Ethernet Endereço de HW 00:1e:c9:fa:25:8b
inet end.: 192.168.0.13 Bcast:192.168.0.255 Masc:255.255.255.0
etc
etc
....
O problema ocorre exatamente por causa da formatação da 2º linha: em inglês, a parte que queremos fica:
"inet addr:192.168.0.13" e em português fica: "inet end.: 192.168.0.13"

Note que no inglês não há espaço entre addr: e o número do IP e em português há.

Sendo assim, em inglês o IP está em $2 e em português está em $3

Adaptando os comandos, tanto o que passei quanto o criado pelo colega @jhonatanp fica o seguinte:

Para sistemas em inglês:

ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d: (comando que apresentei modificado: troquei o $3 por $2)
ifconfig | awk '/inet (end|addr).?:/ && !/127.0.0.1/ {print $2}'| cut -f2 -d: (comando do @jhonatanp modificado: acrescentei
o cut para retirar "addr:" do resultado; troquei o $3 por $2)

Em relação ao "hostname -i", ele é mais rápido e também outra alternativa.

Bom, como eu digo: "Vários caminhos para o mesmo destino!

[11] Comentário enviado por pdcassiano em 06/02/2015 - 08:29h


Muito bom o Post.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts