Copyright
Copyright © José
Luis Lara Carrascal 2009-2012 
Sumario
Introducción
Instalación
Opciones de línea de comandos
Iniciamos WCD
Enlaces
Introducción
WCD
es una utilidad de línea de comandos que nos permite cambiar de
directorio de una forma muy rápida. Su desarrollo está
inspirado en el histórico programa de MS-DOS, Norton Change Directory (NCD), software que el creador de WCD
echaba en falta cuando trabajaba con sistemas HP Unix (HP-UX)
allá por el año 1995. Hasta el año 1997 no
llegaría la primera versión de WCD,
desde entonces, las características del programa han ido
progresando en consonancia con la evolución de la
informática en general, y en estos momentos, tiene soporte de UTF-8
e idiomas, entre otras funciones.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado WCD
para la elaboración de este documento.
* GCC - (4.7.1) o Clang - (3.1)
* Make - (3.82)
* Gettext - (0.18.1.1)
Librerías
de Desarrollo
* Ncurses - (5.9)
Módulos de Perl
* Podlators - (2.4.2)
* Pod::Parser - (1.51)
* Pod2html - (5.16.0)
Descarga
wcd-5.2.3-src.tar.gz
Extracción 
$ tar zxvf wcd-5.2.3-src.tar.gz
$ cd wcd-5.2.3
|
Optimizaciones
GCC
$ sed -i 's:-O2:-O3 -march=amdfam10 -mtune=amdfam10:' src/Makefile
|
Clang
$ sed -i 's:-O2:-O3 -march=amdfam10:' src/Makefile
|
| Donde pone amdfam10
se indica el procesador respectivo de cada sistema
seleccionándolo de la siguiente tabla: |
Nota informativa sobre las optimizaciones para GCC
|
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado.
* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.
* En versiones de GCC 3.2.x e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
|
Nota informativa sobre las optimizaciones para Clang
|
* La opción '-mtune=' no
está soportada por Clang.
* Los valores de color azul no son compatibles con Clang.
* Las filas con el fondo de color amarillo son valores exclusivos de Clang,
y por lo tanto, no son aplicables con GCC.
|
| Valores |
CPU |
| generic |
Produce un código
binario optimizado para la mayor parte de procesadores existentes.
Utilizar este valor si no sabemos el nombre del procesador que
tenemos en nuestro equipo. Este valor sólo es aplicable en
la opción '-mtune='. Esta opción está disponible a
partir de GCC 4.2.x. |
| i386 |
Intel i386.
|
| i486 |
Intel i486. |
| i586, pentium |
Intel Pentium sin soporte de instrucciones MMX. |
| pentium-mmx |
Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX. |
| pentiumpro |
Intel PentiumPro. |
| i686 |
Produce un código binario optimizado para la mayor parte de
procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son. |
| pentium2 |
Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX. |
| pentium3, pentium3m |
Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE. |
| pentium-m |
Versión de bajo
consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2.
Utilizado por los portátiles Centrino. |
| pentium4, pentium4m |
Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2. |
| x86-64 |
Procesadores
AMD y compatibles con soporte de instrucciones x86-64, SSE2 y
extensiones
64-bit. |
| yonah |
Procesadores
basados en la microarquitectura de Pentium M, con soporte de
instrucciones MMX, SSE, SSE2 y SSE3. |
| prescott |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
| nocona |
Versión mejorada de Intel Pentium4 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
| core2 |
Intel Core2 con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y
SSSE3. Esta opción está disponible a partir de GCC 4.3.x. |
| penryn |
Intel
Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3 y SSE4.1. |
| corei7 |
Intel Core i7 con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1 y SSE4.2. Soporta también los procesadores Intel
Core i3 e i5. Esta opción está disponible a partir
de GCC 4.6.x. |
| nehalem |
Procesadores
basados en la microarquitectura de procesador Nehalem de Intel. |
| westmere |
Procesadores
basados en la microarquitectura de procesador Westmere de Intel. |
| corei7-avx |
Intel Core i7 con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL. Soporta también los
procesadores Intel Core i3 e i5. Esta opción está
disponible a partir de GCC 4.6.x. |
| core-avx-i |
Intel Core (ivyBridge) con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND y F16C. Esta opción está disponible a partir
de GCC 4.7.x. |
| core-avx2 |
Intel Core (Haswell). Esta opción está disponible a partir
de GCC 4.7.x. |
| atom |
Intel Atom con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está
disponible a partir de GCC 4.5.x. |
| k6 |
AMD K6 con soporte de instrucciones MMX. |
| k6-2, k6-3 |
Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!. |
| athlon, athlon-tbird |
AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch. |
| athlon4, athlon-xp, athlon-mp |
Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE. |
| k8, opteron, athlon64, athlon-fx |
Procesadores basados en
AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2,
3DNow!, enhanced 3DNow! y extensiones 64-bit). |
| k8-sse3, opteron-sse3, athlon64-sse3 |
Versiones mejoradas de
AMD K8 core con soporte de instrucciones SSE3. Esta opción
está disponible a partir de GCC 4.3.x. |
| amdfam10, barcelona |
Procesadores basados en
AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE,
SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones
64-bit). Esta opción está disponible a partir de GCC 4.3.x. |
| btver1 |
Procesadores basados en
AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE,
SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir
de GCC 4.6.x. |
| bdver1 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE,
SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones
64-bit). Esta opción está disponible a partir
de GCC 4.7.x. |
| bdver2 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE,
SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones
64-bit). Esta opción está disponible a partir
de GCC 4.7.x. |
| winchip-c6 |
IDT Winchip C6, que equivale a un i486 con soporte de instrucciones MMX. |
| winchip2 |
IDT Winchip2, que equivale a un i486 con soporte de instrucciones MMX y 3DNow!. |
| c3 |
Via C3 con soporte de instrucciones MMX y 3DNow!. |
| c3-2 |
Via C3-2 con soporte de instrucciones MMX y SSE. |
| geode |
AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3.x. |
| native |
Produce un código
binario optimizado para el procesador que tengamos en nuestro sistema,
siendo éste detectado utilizando la instrucción cpuid.
Procesadores antiguos pueden no ser detectados utilizando este valor.
Esta opción está disponible a
partir de GCC 4.2.x. |
Compilación
$ make WCD_UTF8=1 CC=clang
|
Explicación de los
comandos
WCD_UTF8=1 : Activa el soporte de codificación de caracteres, UTF-8.
CC=clang
:
Si vamos a compilar el paquete con Clang, establecemos
la correspondiente variable de entorno.
Instalación
como root
Instalación de la función wcd en Bash
Para poder cambiar de directorio, WCD necesita utilizar el comando cd.
De ahí que la llamada al binario del programa se realice a
través de una función. La función procede de un script (go-script) que es generado por el binario wcd.exe. WCD sólo puede trabajar después de que la función esté definida.
1) Crear el directorio bin en nuestro home y añadir el mismo a nuestro PATH.
Si ya lo tenemos configurado no es necesario seguir este paso, si no es así, crearemos el directorio bin en nuestro home, y lo añadiremos a nuestro PATH mediante la edición del archivo ~/.bashrc.
$ mkdir -p ~/bin
$ sed -i '$iexport PATH=$HOME/bin:$PATH' ~/.bashrc |
Si no existiera dicho archivo, ejecutamos el siguiente comando:
echo 'export PATH=$HOME/bin:$PATH' > ~/.bashrc |
2) Añadir la función al archivo de configuración, ~/.bashrc
Abrimos con un editor de texto el archivo ~/.bashrc y añadimos al final del mismo lo siguiente:
function wcd
{
/usr/bin/wcd.exe $*
. $HOME/bin/wcd.go
} |
Lo guardamos y ejecutamos un emulador de terminal, comprobando que el comando wcd está operativo.
[jose@localhost ~]$ wcd --version
wcd 5.2.3 (2012-02-28) - Wherever Change Directory
Chdir para Dos y Unix.
Interfase: versión ncurses 5.9
ASCII_TREE=0
Soporte de lenguaje nativo incluido.
Localización actual emplea codificación ISO-8859-1.
Con soporte para Unicode.
Sin normalización Unicode.
Descarga los últimos ejecutables y archivos fuente de:
http://waterlan.home.xs4all.nl/
|
Si queremos que el root disponga también del uso de WCD, tendremos que seguir los mismos pasos que para el directorio del usuario, pero esta vez en el del root.
Archivos de configuración personal
| ~/.treedata.wcd |
Es el archivo de datos predefinido que WCD utilizará para buscar las coincidencias con los directorios a los que queramos cambiar. |
| ~/.extra.wcd |
Es el archivo de datos adicional que WCD utilizará para buscar las coincidencias con los directorios a los que queramos cambiar. Este
archivo sirve para añadir directorios adicionales a los
predefinidos en el archivo anterior y su creación es opcional. |
| ~/.ban.wcd |
Es el archivo que
contiene
las rutas ubicadas en el archivo de datos predefinido (.treedata.wcd)
o en el archivo de datos adicional (.extra.wcd) que no queremos
que aparezcan en la búsqueda de
directorios, el mismo se crea cuando le pasamos el parámetro -b
dentro y ejecutamos el programa dentro del directorio que pretendemos
omitir. Su
creación es opcional. |
| ~/.alias.wcd |
Es el archivo alternativo a ~/.bashrc
que podemos utilizar para almacenar la función del
programa. Su creación es opcional y para su uso se necesita
pasarle el parámetro -l a WCD. |
| ~/.stack.wcd |
En este archivo, WCD guarda los últimos directorios buscados. |
| ~/.rtdata.wcd |
Es el archivo de datos que
contiene las rutas relativas desde una <ruta>. Ver opciones +S,
-n y +n. Al igual que el resto de archivos de configuración, su
formato es de texto, y por lo tanto, son editables con cualquier editor compatible. |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando como root:
2)
MODO MANUALINUX
El principal inconveniente del comando anterior es
que
tenermos que tener el directorio de compilación en nuestro
sistema para poder desinstalar el programa. En algunos casos esto
supone muchos megas de espacio en disco. Con el paquete de scripts que
pongo a continuación logramos evitar
el único inconveniente que tiene la compilación
de
programas, y es el tema de la desinstalación de los mismos
sin
la necesidad de tener obligatoriamente una copia de las fuentes
compiladas.
wcd-5.2.3-scripts.tar.gz
$ su
# tar zxvf wcd-5.2.3-scripts.tar.gz
# cd wcd-5.2.3-scripts
# ./Desinstalar_wcd-5.2.3 |
Copia de Seguridad
como root
Con este otro script creamos una copia de seguridad de los binarios
compilados, recreando la estructura de directorios de los mismos en un
directorio de copias de seguridad (copibin)
que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de
los binarios podemos copiarlo como usuario a nuestro home
y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos
volver a restaurar la copia, tendremos que volver a copiarlo al lugar
donde se ha creado.
$ su
# tar zxvf wcd-5.2.3-scripts.tar.gz
# cd wcd-5.2.3-scripts
# ./Respaldar_wcd-5.2.3 |
Restaurar la Copia de Seguridad
como root
Y con este otro script (que se copia de forma automática
cuando
creamos la copia de respaldo del programa) restauramos la copia de
seguridad como root cuando resulte necesario.
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_wcd-5.2.3
|
Opciones de línea de comandos
[jose@localhost ~]$ wcd --help
Uso: wcd [opciones] [directorio]
directorio: Nombre del directorio al que desea cambiarse.
Se pueden emplear los comodines *, ? y [conjunto]
opciones:
-a
Añade la ruta actual al archivo de árbol
-aa
Añade la ruta actual y sus padres al archivo de
árbol
-A
RUTA
Añade árbol desde RUTA
-b
Prohíbe la ruta actual
-c,
--direct-cd
Usa modo CD directo
-d
UNIDAD
Establece la UNIDAD para almacenar los archivos de la pila y el script
go (DOS)
-e
Añade la ruta actual al archivo extra de árbol
-ee
Añade la ruta actual y sus padres al archivo extra de
árbol
-E
RUTA
Añade árbol desde RUTA al archivo extra del
árbol
-f
ARCHIVO
Usa archivo extra de árbol
+f
ARCHIVO
Añade archivo extra de árbol
-g
Ambiente gráfico
-gd
Ambiente gráfico, impresión del árbol
-G
RUTA
Establece la RUTA del script go
-GN, --no-go-script
No emplees el script go
-h,
--help
Despliega esta ayuda
-i,
--ignore-case Ignora
las diferencias entre mayúsculas y minúsculas
+i, --no-ignore-case Distingue
entre mayúsculas y minúsculas (por defecto)
-I,
--ignore-diacritics Ignora
signos diacríticos
+I, --no-ignore-diacritics Contempla
signos diacríticos (por defecto)
-j,
--just-go
Modo directo
-k,
--keep-paths
Retén las rutas
-K,
--color
Colores
-l
ALIAS
Crea un ALIAS para el directorio actual
-L,
--license
Imprime la Licencia del Programa
-m
DIRECTORIO
Crea DIRECTORIO, y añádelo al archivo de
árbol
-M
DIRECTORIO
Crea DIRECTORIO, y añádelo al archivo extra de
árbol
-n
RUTA
Emplea archivo de árbol relativo en RUTA
+n
RUTA
Añade archivo de árbol relativo en RUTA
-N,
--numbers
Emplea números
-o
Emplea la salida estándar (stdout)
-od,
--to-stdout
Imprime correspondencias
-q,
--quiet
Operación silenciosa
-r
DIRECTORIO
Remueve DIRECTORIO
-rmtree
DIR.
Remueve recursivamente desde DIRECTORIO
-s
Explora disco desde $HOME
-S
RUTA
Explora disco desde RUTA
+S
RUTA
Explora disco desde RUTA, crea archivo de árbol relativo
-t
No remuevas /tmp_mnt de las rutas
-T,
--ascii-tree
Dibuja el árbol con caracteres ASCII
-Ta, --alt-tree-nav
Navegación de árbol alternativa
-TC,
--center-tree Vista
centrada en árbol
-Tc, --compact-tree
Árbol compacto
-u
USUARIO
Emplea archivo de árbol de USUARIO
+u
USUARIO
Añade archivo de árbol de USUARIO
-v,
--verbose
Imprime mensajes de información
-V,
--version
Imprime información sobre la versión
-w, --wild-match-only Emplea
sólo concordancias inexactas
-x
RUTA
Excluye RUTA durante la exploración del disco
-xf
ARCHIVO
Excluye rutas contenidas en ARCHIVO
-z
NÚMERO
Establece el tamaño máximo para la pila
-[NÚMERO]
Mete directorio a la pila (NÚMERO veces)
+[NÚMERO]
Saca directorio de la pila (NÚMERO veces)
=
Muestra la pila
|
Iniciamos WCD 
1) Crear el archivo de datos
La primera vez que ejecutemos el programa, podemos crear
un archivo de datos de todos los directorios que tengamos en nuestro
sistema, incluidas las particiones montadas. El parámetro -A
siempre crea un árbol de directorios a partir de la ruta que le
indiquemos al programa. Un ejemplo:
[jose@localhost ~]$ wcd -A /
Wcd: Favor de esperar. Explorando el disco. Construyendo el archivo de árbol de rutas para /
|
2) Excluir directorios en la creación del archivo de datos
Si queremos excluir algún directorio en la
creación del archivo de datos, sólo tenemos que
añadir la ruta del mismo después del parámetro -x.
Sin embargo, y esto me
traía un poco de calle, tenemos que ejecutar el comando desde el
directorio a partir del cual se empezará a examinar el disco
para crear el correspondiente archivo de datos, es decir, en este caso,
desde el directorio raíz del sistema, de lo contrario, la
exclusión de directorios no funciona. Un ejemplo:
[jose@localhost ~]$ cd /
[jose@localhost /]$ wcd -x /proc -x /sys -x /root -x /tmp -A /
Wcd: Favor de esperar. Explorando el disco. Construyendo el archivo de árbol de rutas para /
|
3) Añadir directorios adicionales
Si por ejemplo, hemos creado un nuevo directorio o
añadido una nueva partición, utilizaremos siempre el
parámetro -E seguido de la ruta al directorio en cuestión. Esto crea el archivo ~/.extra.wcd y evita tener que volver a examinar el sistema entero y sobreescribir el archivo de datos predefinido del programa. Un ejemplo:
[jose@localhost ~]$ wcd -E /home/jose/Documentos
Wcd: Favor de esperar. Explorando el disco. Construyendo el archivo de árbol de rutas para /home/jose/Documentos
|
4) Omitir directorios en la búsqueda de éstos
Para omitir directorios que estén cacheados en el archivo de
datos, en la búsqueda de coincidencias con el comando que
ejecutemos, basta ejecutar WCD con el parámetro -b dentro del directorio que pretendamos omitir, esto creará un archivo en nuestro home, con el nombre .ban.wcd, al que se añadirá la ruta completa del directorio omitido. Un ejemplo:
[jose@localhost ~]$ cd /var/cache/polipo
[jose@localhost var]$ wcd -b
Wcd: /var añadido al archivo /home/jose/.ban.wcd
|
Aunque resulta mucho más rápido crear el archivo de forma
manual o editar el que hayamos creado con el comando anterior, y
añadir los directorios que creamos oportuno. Un ejemplo:
/var/cache/polipo
/mnt/win_e/Cache
/usr/src |
5) Empezar a usarlo
Cuando ya lo tengamos configurado, sólo nos queda probarlo y comprobar su rapidez de uso. Un ejemplo:
[jose@localhost ~]$ wcd qingy
|
a /etc/qingy
b /mnt/win_e/Descargas/Linux/Aplicaciones/Escritorio/Temas/qingy
c /usr/local/lib/qingy
d /usr/local/share/qingy
Perfecta concordancia para 4 directorios.
Favor de elegir uno (<Intro> para abortar):
|
Ahora sólo me queda elegir entre los 4 directorios coincidentes
con el nombre que he escrito, pulsando las teclas a, b, c o d, en este
caso pulso la a. Y automáticamente me lleva al directorio /etc/qingy. Para anular y volver a la línea de comandos, pulsaremos siempre la tecla Retorno.
-> /etc/qingy
[jose@localhost qingy]$
|
6) Uso de comodines
Claro que no es necesario poner el nombre completo, y podemos utilizar
comodines, eso sí, se mostrarán un número mayor de
posibles coincidencias.
[jose@localhost ~]$ wcd e1*
|
a /home/jose/manualinux/scripts/paquetes/e17-svn-scripts
b /mnt/win_c/windows/assembly/NativeImages_v2.0.50727_32/CustomMarshalers/e148
c /mnt/win_e/Descargas/Linux/Aplicaciones/Escritorio/e16
d /mnt/win_e/Descargas/Linux/Aplicaciones/Escritorio/e17
e /mnt/win_e/Descargas/Linux/Aplicaciones/Escritorio/Temas/e16
f /mnt/win_e/Descargas/Linux/Aplicaciones/Escritorio/Temas/e17
g /opt/e17
h /opt/e17/doc/e17genmenu
i /opt/e17/share/e_utils/data/e17genmenu
j /usr/local/share/castle/data/levels/doom/e1m1
k /usr/share/omf/e16menuedit2-0.0.2
l /usr/src/linux-2.6.29/drivers/net/e1000
m /usr/src/linux-2.6.29/drivers/net/e1000e
n /usr/src/linux-2.6.29/firmware/e100
o /usr/src/linux-2.6.30/drivers/net/e1000
p /usr/src/linux-2.6.30/drivers/net/e1000e
q /usr/src/linux-2.6.30/firmware/e100
r /usr/X11R7/lib/e16
s /usr/X11R7/share/doc/e16
t /usr/X11R7/share/e16
u /usr/X11R7/share/gnome/help/e16menuedit2-0.0.2
Fuerte coincidencia para 30 directorio w=arriba x=abajo ?=ayuda Página 2/2
Por favor, elija uno (<Retorno> para anular):
|
Con las flechas direccionales superior e inferior podemos cambiar de
página, para poder visualizar el total de resultados. Para la
selección del directorio correspondiente, pulsaremos la tecla
que aparezca al lado de la ruta del mismo.
7) Modo gráfico
Lo de modo gráfico es un decir, la típica interfaz de Ncurses, que a mí personalmente me deja indiferente (rima incluida). Un ejemplo:
[jose@localhost ~]$ wcd -g 64x64
|
</>-+- home --- jose -+- Documentos --- Entornos de Escritorio --- Iconos -+- g
|
|
`- g
|
`- .icons -+- 64x64
|
`- gnant --- 64x64
`- usr -+- local --- share --- icons --- hicolor --- 64x64
`- share -+- amsn --- desktop-icons --- 64x64
|- apps -+- kdeprint --- icons --- crystalsvg --- 64x64
| `- khtml --- icons ---
crystalsvg --- 64x64
|- hplip --- data --- images --- 64x64
`- icons -+- crystalsvg --- 64x64
|- hicolor --- 64x64
|- nuoveXT2 --- 64x64
|- Smokey-Blue --- 64x64
`- Smokey-Red --- 64x64
--------------------------------------------------------------------------------
/
/ = busca adelante, ? = busca atrás, : = ayuda
|
Con las flechas direccionales podemos ir cambiando de directorio hasta
llegar al que pretendamos ir, aquí la rapidez se queda un poco
en entredicho. Si la coincidencia de la búsqueda es exacta, el
programa nos llevará siempre al directorio en cuestión,
esto sólo aparece cuando existen más de una coincidencia,
o si hemos usado comodines, más de una aproximación a lo
que hemos escrito.
Enlaces
http://waterlan.home.xs4all.nl >> La web de WCD.
http://wcd.sourceforge.net >> Enlace alternativo hospedado en SourceForge.
|