La pregunta es: ¿Cómo obtener el código fuente de cualquier comando de Linux?
La respuesta: Para las distribuciones basadas en Debian es sencillo, podemos obtener el código fuente de cualquier comando usando cualquiera de los dos métodos mencionados a continuación.

Método 1: Obtener el código fuente usando apt-get:

  • Paso 1: Añadir la URL de los fuentes en el fichero sources.lst (en el ejemplo mostrado la distrubución usada es Debian Lenny)

$ nano /etc/apt/sources.list
deb-src http://ftp.de.debian.org/debian lenny main
$ apt-get update

  • Paso 2: Ejecutar apt-get para obtener el fuente

Sintáxis: apt-get source nombre-del-comando
Ejemplo: apt-get source iwconfig

Método 2: Obtener el fuente directamente desde packages.debian.org

En este caso, si no estás realmente seguro del nombre del paquete o comando, puedes navegar por las secciones desde la siguiente URL: http://packages.debian.org/stable/

  • Hacemos click en el tema del comando que deseemos obtener el código fuente.
  • Buscamos el comando que queremos encontrar, y hacemos click en él.
  • En el lado derecho, puedes ver el enlace de descarga del código fuente.

Ejemplo: Para descargar el archiconocido editor nano:

  1. Vamos a la página de Lenny en packages.debian.org
  2. Hacemos click en el enlace editors
  3. Buscamos y nos dirigimos a la página del editor nano.
  4. En el lado derecho, seleccionamos y descargamos:
    nano_2.0.7.orig.tar.gz

Resultados de la encuesta #10

Los resultados de La encuesta de la semana #10. ¿Cuánto usas el terminal? me han gustado bastante, parece que la mayoría de nuestros lectores tienen una forma de entender el uso de la consola similar a la mía. Personalmente prefiero usar la consola cuando puedo, no hago un uso extremo pero para p.e. lanzar comandos de búsqueda, matar procesos, ver actividad del pc, instalar aplicaciones, etc. me resulta bastante completa. ¿Es este tu caso o para algo más?

PD: Siento no haber podido publicar los resultados este viernes (como todas las semanas).

LEDLS

A mi personalmente me gusta usar la consola a menudo. Pienso que si algo se puede hacer mediante comando siempre será más rápido y más controlado que mediante una interfaz gráfica (GUI), pero no todos piensan así, ¿cuál es tu caso?

comando_PS

El comando PS es mucho más potente de lo que pensamos, y este poder viene de su versatilidad absoluta. El comando PS significa “process status” (Estado de los procesos), y nos muestra todo lo relacionado con los procesos de nuestra máquina; en cierto modo hay que pensar en el como el administrador de tareas de los más frikis (geeks).

Existen muchas formas para utilizar PS, la más común es PS AUX, que nos devuelve una lista por consola de los procesos que están ejecutanddo. Otro de los más conocidos es PS AUX| GREP PID, para acceder a un proceso en concreto, retonándonos información sobre el mismo. Normalmente podemos usarlo en conjunto del comando KILL, con la idea de terminar un proceso conociendo su nombre. Así mismo nos gustaría conocer que otro uso le das al comando PS… ¿Mostrando los procesos de un usuario en concreto? ¿Los que cumplen cierta condición?

Antes de leer esta entrada os recomiendo daros un paseo por la primera parte, en la que os argumento el porqué de cURL además de unos ejemplos para empezar. Bien, continuaremos con un par de ejemplos algo más complejos, vamos a usar cURL para buscar palabras en el diccionario:

$ curl dict://dict.org/d:stalwart
220 miranda.org dictd 1.9.15/rf on Linux 2.6.26-bpo.1-686
<400549.18119.1238445667@miranda.org>
250 ok
150 1 definitions retrieved
151 “Stalwart” gcide “The Collaborative International Dictionary of English v.0.48″
Stalwart \Stal”wart\ (st[o^]l”w[~e]rt or st[add]l”-; 277),
Stalworth \Stal”worth\ (-w[~e]rth), a. [OE. stalworth, AS.
staelwyr[eth] serviceable, probably originally, good at
stealing, or worth stealing or taking, and afterwards
extended to other causes of estimation. See {Steal}, v. t.,
{Worth}, a.]
Brave; bold; strong; redoubted; daring; vehement; violent. “A
stalwart tiller of the soil.” –Prof. Wilson.
[1913 Webster]

Fair man he was and wise, stalworth and bold. –R. of
Brunne.
[1913 Webster]

Note: Stalworth is now disused, or but little used, stalwart
having taken its place.
[1913 Webster]
.
250 ok [d/m/c = 1/0/20; 0.000r 0.000u 0.000s]
221 bye [d/m/c = 0/0/0; 0.000r 0.000u 0.000s]

Con lo que podemos reemplazar la palabra ‘stalwart‘ por la que deseemos definir. Además del uso bajo línea de comandos, todas las capacidades de cURL están disponibles en la librería libcurl. Muchos lenguajes de programación incluyen una interfaz de conexión con cURL (libcurl) para automatizar tareas tales como la transmisión de un archivo a través de FTP. Por ejemplo, este fragmento de código PHP usa libcurl para colgar un archivo cargado por un formulario en un servidor FTP:

<?php

$ch = curl_init();
$localfile = $_FILES['upload']['tmp_name'];
$fp = fopen($localfile, ‘r’);
curl_setopt($ch, CURLOPT_URL,
‘ftp://ftp_login:password@ftp.domain.com/’.$_FILES['upload']['name']);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);

?>

¿Alguna otra utilidad? ¿Le das otro uso a cURL?

curl

Es bien conocido que UNIX siempre a recomendado utilizar gwet para descargar archivos directamente desde la línea de comandos. Ideal para los Shell Scripts, wget fue genial en aquellos tiempos en los que no teníamos fácil acceso a un navegador Web. Por ejemplo, si tratamos de instalar una nueva aplicación en un servidor remoto, wget puede ser la solución.

Si eres de los que siguen usando wget, entonces te encantará cURL. Al igual que wget, cURL puede descargar archivos, pero también puede publicar datos en un formulario de una página Web, subir un archivo a través de File Transfer Protocol (FTP), actuar como proxy, configurar las cabeceras HTTP, e infinidad de cosas. Con lo que podemos concluir que tiene muchas aplicaciones potenciales.

Vamos a instalar cURL, así, desde nuestro terminal:

$ wget http://curl.haxx.se/download/curl-7.14.0.tar.gz
$ tar xzf curl-7.14.0.tar.gz
$ cd curl-7.14.0
$ ./configure && make && sudo make install

Podemos ver todas las descargas disponibles para otras plataformas (también para sistemas Windows) así como paquetes para ciertas distribuciones desde curl.haxx.se/download/

cURL tiene tantas opciones que lo mejor es leer su manual tendidamente. Estos que os muestro son algunos de los usos comunes de cURL:

Para descargar un archivo:

$ curl -o archivoDescargado.png http://www.linuxhispano.net/wp-content/themes/constructor/images/rsslh.png

A diferencia de wget, cURL retorna el contenido descargado a la salida estádar, con lo que usaremos la opción -o para guardar la descarga realizada.

Para descargar una serie de archivos, podemos proporcionar una secuencia, un conjunto o ambos. Una secuencia es una serie de números entre corchetes ([]); un conjunto es una lista delimitada por comas entre llaves ({}). Por ejemplo, el siguiente comando nos descargará todos los archivos llamados parta.html, partb.html y partc.html desde los directorio llamados archive1996/vol1 hasta archive1999/vol4, ambos inclusive, con un total de 48 archivos. Así, usando cURL:

$ curl http://www.linuxhispano.net/archive[1996-1999]/vol[1-4]/part{a,b,c}.html \
-o “archive#1_vol#2_part#3.html”

Cuando se especifica una secuencia o serie, podemos proporcionar la opción -o con una plantilla (template), donde #1 se sustituirá por el valor actual de la primera secuencia o serie, #2 es un marcador de posición para la segunda, y así sucesivamente. Como alternativa, también podemos proporcionar -o para mantener el nombre del archivo original (mantenerlo intacto)

Para cargar un conjunto de imágenes a un servidor, usaremos la opción -T:

$ curl -T “img[1-1000].png” ftp://ftp.linuxhispano.net/upload/

En el caso anterior hemos capturado img[1-1000].png entre comlillas para evitar que la shell interprete el patrón. Con este comando hemos conseguido cargar en nuestro servidor desde la imagen 1 a la 1000.

Estos son algunos de los ejemplos que podemos hacer, pronto os mostraré alguno más. Es importante conocerlos si deseamos automatizar cualquier tipo de acceso a la Web. ¿Le has dado alguna otra utilidad? ¿Lo usas actualmente?

Continuación: parte-2.

apropos

Linux tiene multitud de comandos, es por ello que en ocasiones podemos olvidarnos del nombre de alguna utilidad, especialmente si no la utilizamos con frecuencia. Cuando nos encontremos en esta situación y antes de darnos por vencidos, lanzaremos apropos (o su análogo man -k). Por ejemplo, si estamos buscando una calculadora, bastará con:

$ apropos calculator
bc (1) – An arbitrary precision calculator language
dc (1) – An arbitrary precision calculator

Tanto bc como dc son calculadoras en línea de comandos.

Cada página del manual de las aplicaciones Linux (UNIX) dispone de una corta descripción, y es esta medida la que aprovecha apropos para realizar sus búsquedas dada una palabra clave, en el ejemplo anterior ‘calculator’. Esta palabra clave especificada puede ser un literal o una expresión regular, siguiente con el mismo ejemplo:

$ apropos “calcu*”
allcm (1) – force the most important Computer-Modern-fonts to be calculated
allec (1) – force the most important Computer-Modern-fonts to be calculated
allneeded (1) – force the calculation of all fonts now needed
bc (1) – An arbitrary precision calculator language
dc (1) – An arbitrary precision calculator

Y obtendremos todas las aplicaciones que contienen ‘calcu’ en su descripción. Para evitar que la shell interprete caracteres especiales encerraremos la palabra clave entre dobles comillas.

Artículo original en IBM Developer Works.