Contenido


Aprenda Linux, 101

Cómo crear y cambiar vínculos físicos y simbólicos

Uso de múltiples nombres para el mismo archivo

Comments

Contenido de la serie:

Este contenido es la parte # de # de la serie: Aprenda Linux, 101

Manténgase en contacto por contenidos adicionales de esta serie.

Este contenido es parte de la serie:Aprenda Linux, 101

Manténgase en contacto por contenidos adicionales de esta serie.

Generalidades

En este artículo, aprenda a crear y gestionar vínculos físicos y simbólicos. Aprenda a:

  • Crear vínculos físicos y simbólicos
  • Identificar vínculos y conocer su tipo
  • Comprender las diferencias entre copiar y vincular archivos
  • Usar vínculos para tareas de administración de sistemas

Este artículo lo ayudará a prepararse para el Objetivo 104.6 del Tema 104 del examen 101 de Junior Level Administration del Linux Professional Institute (LPIC-1). Este objetivo tiene un valor de 2.

Requisitos previos

Para poder aprovechar al máximo los artículos de esta serie, usted deberá tener un conocimiento básico de Linux y contar con un sistema Linux en funcionamiento sobre el cual pueda practicar los comandos que se tratan en el artículo. En ocasiones, las distintas versiones de un programa producirán formatos diferentes de salida, de manera que es posible que sus resultados no tengan la misma apariencia que los listados y las figuras que aquí se muestran. En particular, gran parte de los resultados que mostramos depende en gran medida de los paquetes instalados en nuestros sistemas. Sus resultados podrán ser algo diferentes, pero usted podrá reconocer las características comunes de importancia.

Introducción a los vínculos

En un dispositivo de almacenamiento, un archivo o directorio se encuentra dentro de una colección de bloques. La información sobre el archivo se encuentra en un inodo, que registra información como por ejemplo el propietario, cuándo se accedió por última vez al archivo, cuál es su tamaño, si posee o no un directorio, 7 quién puede leerlo o escribir en el mismo. El número de inodo es también conocido como el número de serie del archivo y es único dentro de un sistema de archivos determinado. Una entrada de directorio contiene un nombre para un archivo o directorio y un apuntador al inodo donde se almacena la información sobre el archivo o directorio.

Un vínculo es simplemente una entrada de directorio adicional para un archivo o directorio, que permite dos o más nombres para lo mismo. Un vínculo físico es una entrada de directorio que apunta a un inodo, mientras que un vínculo blando o vínculo simbólico es una entrada de directorio que apunta a un inodo que proporciona el nombre de otra entrada de directorio. El mecanismo exacto para almacenar el segundo nombre puede depender tanto del sistema de archivos como de la extensión del nombre. Los vínculos simbólicos también se denominan symlinks.

Usted puede crear vínculos físicos sólo para archivos y no para directorios. La excepción es la de las entradas de directorios especiales de un directorio para el mismo directorio o para su directorio principal (. y ..), que son vínculos físicos que llevan la cuenta de la cantidad de subdirectorios. Debido a que los vínculos físicos apuntan a un inodo, y los inodos son únicos dentro de un sistema de archivos determinado, los vínculos físicos no pueden pasar entre sistemas de archivos. Si un archivo tiene múltiples vínculos físicos, el archivo sólo se eliminará cuando se elimine el último vínculo que señale al inodo, llevando la cuenta de vínculos a 0.

Los vínculos blandos, o symlinks, solamente apuntan a otro archivo o directorio por su nombre más que por su inodo. Los vínculos blandos pueden cruzar los límites de los sistemas de archivos. La eliminación de un vínculo blando no elimina el archivo o directorio de destino, y la eliminación del archivo o directorio de destino no elimina automáticamente los vínculos blandos.

Cómo crear vínculos

En primer lugar, veamos cómo se crean los vínculos físicos y blandos. Más tarde en este artículo analizaremos las maneras de identificar y usar los vínculos que creamos aquí.

Vínculos físicos

Usted deberá usar el comando ln para crear vínculos físicos adicionales a un archivo existente (pero no a un directorio, incluso si el sistema establece . y .. como vínculos físicos).

El Listado 1 muestra cómo crear un directorio que contiene dos archivos y un subdirectorio con dos vínculos físicos al file1 (archivo1), uno de ellos en el mismo directorio y el otro en el subdirectorio. Hemos agregado una palabra a file1, y luego otra palabra a file3 y mostramos los contenidos del vínculo en el subdirectorio para mostrar que todos ellos de hecho apuntan a los mismos datos.

Listado 1. Creación de vínculos físicos
ian@attic4:~$mkdir -p lpi104-6/subdir
ian@attic4:~$touch lpi104-6/file1
ian@attic4:~$touch lpi104-6/file2
ian@attic4:~$ln lpi104-6/file1 lpi104-6/file3
ian@attic4:~$ln lpi104-6/file1 lpi104-6/subdir/file3sub
ian@attic4:~$echo "something" > lpi104-6/file1
ian@attic4:~$echo "else" >> lpi104-6/file3
ian@attic4:~$cat lpi104-6/subdir/file3sub
something else

Usted obtendrá un error si intenta crear vínculos físicos entre sistemas de archivos o para directorios. El Listado 2 muestra que mis directorios principal y de búsqueda se encuentran en sistemas de archivos diferentes y que falla el intento de crear un vínculo físico entre ellos, al igual que el intento de crear un vínculo físico al directorio lpi104-6.

Listado 2. Fallas en la creación de vínculos físicos
ian@attic4:~$ df . research 
Filesystem 1K-blocks Used Available Use% Mounted on 
/dev/sda7 71205436 9355052 58233352 14% /
/dev/sdb3 137856204 27688208 103165264 22% /home/ian/ian-research
ian@attic4:~$ ln lpi104-6/file1 research/lpi104-6/file3 
ln: creating hard link `research/lpi104-6/file3' => 
`lpi104-6/file1': No such
file or dir ectory ian@attic4:~$ ln lpi104-6 lpidir104-6 
ln: `lpi104-6': hard link not allowed for directory

Vínculos blandos

Usted deberá usar el comando ln con la opción-spara crear vínculos blandos. Los vínculos blandos usan nombres de archivos o directorios que pueden ser relativos o absolutos. Si usted está usando nombres relativos, por lo general le convendrá que el directorio de trabajo actual sea el directorio donde usted crea el vínculo; de otro modo, el vínculo que usted cree estará relacionado a otro punto del sistema de archivos. El Listado 3 muestra dos maneras de crear un vínculo blando para el file1 que acabamos de crear, y también cómo crear vínculos blandos en lugar de los dos vínculos físicos que fallaron en el Listado 2.

Listado 3. Creación de vínculos blandos
ian@attic4:~$# Create symlink using absolute paths
ian@attic4:~$ln -s ~/lpi104-6/file1 ~/lpi104-6/file4
ian@attic4:~$# Create symlink using relative paths
ian@attic4:~$cd lpi104-6/
ian@attic4:~/lpi104-6$ln -s file1 file5
ian@attic4:~/lpi104-6$cd ..
ian@attic4:~$# Create symlink across file systems
ian@attic4:~$mkdir ~ian/research/lpi104-6
ian@attic4:~$ln -s ~/lpi104-6/file1 ~ian/research/lpi104-6/file4
ian@attic4:~$# Create symlink for directory
ian@attic4:~$ln -s lpi104-6 lpidir104-6

Al igual que antes, usted puede usar cualquiera de los vínculos o el nombre del archivo de destino para hacer referencia al archivo o directorio. El Listado 4 muestra algunos ejemplos.

Listado 4. Uso de vínculos blandos
ian@attic4:~$echo "another line" >>
~ian/research/lpi104-6/file
ian@attic4:~$# cat a
symlink
ian@attic4:~$cat lpi104-6/file5
something else another line 
ian@attic4:~$# cat a hard link
ian@attic4:~$cat
lpi104-6/file1
something else another line 
ian@attic4:~$# display directory contents using symlink
ian@attic4:~$ls lpidir104-6
file1 file2 file3 file4 file5 subdir

Mientras creamos el vínculo, creemos también un vínculo que use rutas relativas cuando nuestro directorio en funcionamientonosea el directorio donde deseamos el vínculo. Veremos qué es lo que esto hace en la siguiente sección.

Listado 5. Creación de un mal vínculo blando
ian@attic4:~$ln -s lpi104-6/file1
                    lpi104-6/file6

Cómo identificar los vínculos

En la sección anterior, usted vio cómo se crean los vínculos, pero no como se distinguen los vínculos que usted ha creado. Veamos esto a continuación.

Cómo buscar información

En muchos sistemas actuales, el comando ls recibe el alias de ls --color=auto, el cual imprime diferentes tipos de objetos de sistemas de archivos en diferentes colores. Los colores son configurables. Si usted usa esta opción, los vínculos físicos pueden aparecer con un fondo azul oscuro, y los symlinks con un texto color cian, como se ilustra en la Figura 1.

Figura 1. Cómo usar la opción --colors de ls para identificar vínculos
Using the --colors option of ls to identify links
Using the --colors option of ls to identify links

Si bien los colores pueden resultar convenientes para las personas que pueden distinguirlos, no son de mucha utilidad para los demás, y ciertamente no resultan de mucha utilidad para armar shells de scripts o programas. Si no se utilizan colores, se necesita más información como la que brinda un listado extenso que usa ls -l. En el Listado 6 nosotros desactivamos explícitamente el resultado con color, pero usted podrá también llamar de manera explícita al comando/bin/ls.

Listado 6. Identificación de los vínculos
ian@attic4:~$ ls --color=none -lR lpi104-6
lpi104-6: total 12 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 
file1 -rw-r--r-- 1 ian ian 0 2010-05-26 14:11 
file2 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 
file3 lrwxrwxrwx 1 ian ian 24 2010-05-27 17:15 
file4 -> /home/ian/lpi104-6/file1 lrwxrwxrwx 1 ian ian 5 2010-05-27 17:15 
file5 ->     
file1 lrwxrwxrwx 1 ian ian 14 2010-05-27 17:37 
file6 -> lpi104-6/file1 drwxr-xr-x 2 ian ian 4096 2010-05-26 14:11 
subdir lpi104-6/subdir: total 4
-rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file3sub
ian@attic4:~$/bin/ls -l
~ian/research/lpi104-6/file4
lrwxrwxrwx 1 ian ian 24 
2010-05-25 11:51
/home/ian/research/lpi104-6/file4 ->
/home/ian/ lpi104-6/file1
ian@attic4:~$/bin/ls -l lpidir104-6
lrwxrwxrwx 1 ian ian 8
2010-05-27 17:16 lpidir104-6 -> lpi104-6

La segunda columna de resultados es unconteo de vínculosque muestra la cantidad de vínculos físicos hacia este archivo, de manera que sepamos que file1, file3, y file3sub tienen múltiples vínculos físicos que apuntan al objeto que representan, aunque aún no poseamos información suficiente para saber que todos ellos representan al mismo objeto. Si usted elimina un archivo que posee un conteo de vínculos mayor que 1, el conteo de vínculos del inodo se reduce en 1, pero el archivo no se elimina hasta que su conteo de vínculos no llegue a 0. El resto de los vínculos físicos al mismo archivo mostrará un conteo de vínculos que ahora estará reducido en 1.

En la primera columna de resultados, usted podrá ver que el primer carácter es una 'l' (L minúscula) para los vínculos simbólicos. También podrá ver elobjetivodel vínculo después de los caracteres ->. Por ejemplo, file4 -> /home/ian/lpi104-6/file1. Otro indicio es que el tamaño es el número de caracteres del nombre del objetivo del vínculo. Observe que los conteos de vínculos dentro del directorio Listings no se actualizan con vínculos simbólicos. La eliminación del vínculo no afecta al archivo objetivo. Los symlinks no evitan que los archivos sean eliminados; si se mueve o elimina un archivo objetivo, entonces se romperá el symlink. Por este motivo muchos sistemas usan colores en el directorio Listings, a menudo celeste para los vínculos activos y rojo para los vínculos rotos.

Usted puede usar la opción-idel comandolspara visualizar las cantidades de inodos para las entradas de los archivos y directorios. El Listado 7 muestra tanto resultados extensos y breves para nuestro directorio lpi104-6.

Listado 7. Cómo mostrar la información de los inodos
ian@attic4:~$ls -i
lpi104-61680103 file1 1680103 file3 1680107 file5 1680101 subdir 1680104
file2 1680108 file4 1680110 file6 
ian@attic4:~$ls -il lpi104-6total
12 1680103 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file1 1680104 -rw-r--r-- 1 ian
ian 0 2010-05-26 14:11 file2 1680103 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file3
1680108 lrwxrwxrwx 1 ian ian 24 2010-05-27 17:15 file4 ->
/home/ian/lpi104-6/file1 1680107 lrwxrwxrwx 1 ian ian 5 2010-05-27 17:15 file5
-> file1 1680110 lrwxrwxrwx 1 ian ian 14 2010-05-27 17:37 file6 ->
lpi104-6/file1 1680101 drwxr-xr-x 2 ian ian 4096 2010-05-26 14:11 subdir

Usted también podrá usar el comando find (buscar) para buscar vínculos simbólicos usando la expresión find -type l como se muestra en el Listado 8.

Listado 8. Uso de find para ubicar symlinks
ian@attic4:~$ find lpi104-6 research/lpi104-6 -type
l lpi104-6/file6 lpi104-6/file5 lpi104-6/file4
research/lpi104-6/file4

Symlinks rotos

En el Listado 5, afirmamos haber creado un mal vínculo blando. Éste es un ejemplo de symlink roto. Debido a que los vínculos físicos siempre apuntan a un inodo que representa un archivo, siempre son válidos. Sin embargo, los symlinks pueden romperse por muchas razones, que incluyen:

  • No existían el archivo original o el objetivo del vínculo cuando el vínculo fue creado (como en el Listado 5).
  • El objetivo de un vínculo fue eliminado o se le cambió el nombre.
  • Se eliminó o se le cambió el nombre a algún elemento de la ruta al objetivo.

Ninguna de estas condiciones causa un error, de manera que usted debe pensar con detenimiento acerca de lo que le podría pasar a sus symlinks mientras los crea. Sobre todo, su elección entre rutas de acceso absolutas o relativas probablemente será influenciada por lo que usted espera que suceda con los objetos que está vinculando sobre la vida de los vínculos.

Si usted usa una salida de datos coloreada, los symlinks rotos probablemente aparezcan con texto de color rojo sobre un fondo negro, como en el caso del file6 en la Figura 1. De otro modo, usted deberá usar las opciones -H o -L de ls para eliminar la referencia del vínculo y obtener información sobre el objetivo. La opción -H elimina la referencia de los vínculos en la línea de comandos y la opción -L elimina la referencia de los vínculos adicionales que son parte de la visualización. El Listado 9 muestra la diferencia en la salida de datos creada por estas dos opciones.

Listado 9. Eliminación de la referencia de los vínculos con ls -H y con ls -L
ian@attic4:~$/bin/ls -lH lpidir104-6total 12
-rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file1 -rw-r--r-- 1 ian ian 0 2010-05-26
14:11 file2 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file3 lrwxrwxrwx 1 ian ian 24
2010-05-27 17:15 file4 -> /home/ian/lpi104-6/file1 lrwxrwxrwx 1 ian ian 5
2010-05-27 17:15 file5 -> file1 lrwxrwxrwx 1 ian ian 14 2010-05-27 17:37
file6 -> lpi104-6/file1 drwxr-xr-x 2 ian ian 4096 2010-05-26 14:11 subdir
ian@attic4:~$/bin/ls -lL lpidir104-6/bin/ls: cannot access
lpidir104-6/file6: No such file or directory total 20 -rw-r--r-- 3 ian ian 28
2010-05-27 17:17 file1 -rw-r--r-- 1 ian ian 0 2010-05-26 14:11 file2 -rw-r--r-- 3
ian ian 28 2010-05-27 17:17 file3 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file4
-rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file5 l????????? ? ? ? ? ? file6 drwxr-xr-x
2 ian ian 4096 2010-05-26 14:11 subdir

Observe el mensaje de error que indica que el file6 no existe y también el resultado del mismo con los caracteres '?', que nuevamente indican que el archivo no fue encontrado.

Un último asunto sobre nuestro vínculo simbólico roto. Los intentos para leer el archivo fallarán, ya que el archivo no existe. Sin embargo, los intentos de escribirlo funcionarán si usted posee el permiso apropiado para el archivo objetivo, como se muestra en Listado 10. Observe que necesitamos crear el lpi104-6/lpi104-6 antes de poder escribir el archivo.

Listado 10. Lectura y escritura desde y hasta un symlink roto
ian@attic4:~$ cat lpi104-6/file6 cat:
lpi104-6/file6: No such file or directory ian@attic4:~$ echo "Testing file6"
> lpi104-6/file6 bash: lpi104-6/file6: No such file or directory
ian@attic4:~$ mkdir lpi104-6/lpi104-6 ian@attic4:~$ cat lpi104-6/file6 cat:
lpi104-6/file6: No such file or directory ian@attic4:~$ echo "Testing file6"
> lpi104-6/file6 ian@attic4:~$ cat lpi104-6/file6 Testing file6 ian@attic4:~$
ls lpi104-6/lpi104-6 file1

¿Quién crea vínculos hacia mí?

Para averiguar qué archivos son vínculos físicos hacia un inodo en particular, usted puede usar el comando find y la opción -samefile con un nombre de archivo o la opción -inum con un número de inodo, como se muestra en el Listado 11.

Listado 11. Cómo encontrar vínculos físicos al mismo archivo
ian@attic4:~$find lpi104-6 -samefile
lpi104-6/file1lpi104-6/subdir/file3sub lpi104-6/file3 lpi104-6/file1
ian@attic4:~$ls -i lpi104-6/file11680103 lpi104-6/file1
ian@attic4:~$find lpi104-6 -inum
1680103lpi104-6/subdir/file3sub lpi104-6/file3 lpi104-6/file1

Para averiguar qué archivos crean vínculos simbólicos a un archivo determinado, usted puede usar el comando find y la opción -lname con un nombre de archivo, como se muestra en el Listado 12. Los vínculos pueden usar una ruta de acceso relativa o absoluta, de manera que a usted probablemente le convenga un asterisco al principio del nombre para encontrar todas las concordancias.

Listado 12. Cómo encontrar los vínculos simbólicos a un archivo o directorio
ian@attic4:~$ find
lpi104-6 research/lpi104-6 -lname "*file1" 
lpi104-6/file6 lpi104-6/file5
lpi104-6/file4 research/lpi104-6/file4

Copiar versus vincular

Según lo que usted intenta lograr, en algunas ocasiones usará vínculos y en otras será mejor crear una copia de un archivo. La diferencia principal es que los vínculos proveen múltiples nombres para un solo archivo, mientras que una copia crea dos grupos de datos idénticos bajo dos nombres diferentes. Usted seguramente usará copias para crear una copia de seguridad y también para probar un nuevo programa sin poner en riesgo sus datos operativos. Usted usa vínculos cuando necesita un alias para un archivo (o directorio), posiblemente para proveer una ruta de acceso más conveniente o corta. In la siguiente sección, veremos otros usos para los vínculos.

Como usted ha visto, cuando se actualiza un archivo, todos los vínculos hacia él ven la actualización, lo cual no sucede cuando usted copia un archivo. También ha observado que los vínculos simbólicos pueden romperse pero que con operaciones de escritura posteriores se pueden crear un nuevo archivo. Use los vínculos cuidadosamente.

Vínculos y administración de sistemas

Los vínculos, especialmente los simbólicos, se usan con frecuencia en la administración de sistemas Linux. Los comandos a menudo tienen alias, para que el usuario no tenga que conocer el número de versión para el comando actual, pero pueda acceder a otras versiones usando nombres más largos de ser necesario. Como se muestra en el Listado 13, el comando gcc es un symlink y dentro de mi sistema hay tres nombres diferentes para él.

Listado 13. Comandos para poner alias a una versión en particular
ian@attic4:~$which
gcc/usr/bin/gcc ian@attic4:~$ls -l
/usr/bin/gcclrwxrwxrwx 1 root root 7 2009-12-28 23:17 /usr/bin/gcc
-> gcc-4.4 ian@attic4:~$find /usr/bin -lname
"*gcc-4.4"/usr/bin/x86_64-linux-gnu-gcc-4.4 /usr/bin/gcc
/usr/bin/x86_64-linux-gnu-gcc

Otros usos entran en juego cuando varios nombres de comandos usan el mismo código subyacente, como por ejemplo los diversos comandos que sirven para detener o reiniciar un sistema. A veces, un nuevo nombre de comando, como genisofs, reemplazará un nombre de comando más antiguo, pero el nombre antiguo (mkisofs) se guarda como un vínculo al nuevo comando. Y la facilidad de alternativas usa vínculos de manera amplia, para que usted pueda elegir qué alternativa usar para un comando, como por ejemplojava. El Listado 14 muestra algunos ejemplos.

Listado 14. Ejemplos del comando alias
ian@attic4:~$ find /sbin -lname
"initctl" /sbin/restart /sbin/start /sbin/stop /sbin/status /sbin/reload
ian@attic4:~$ ls -l $(which mkisofs) lrwxrwxrwx 1 root root 11
2009-12-28 23:17 /usr/bin/mkisofs -> genisoimage ian@attic4:~$ ls -l
$(which java) lrwxrwxrwx 1 root root 22 2010-01-17 15:16 /usr/bin/java
-> /etc/alternatives/java

Los nombres de biblioteca son también administrados en gran medida usando symlinks, ya sea para permitir que los programas se vinculen a un nombre general mientras se consigue la versión actual, o también para administrar sistemas como los sistemas de 14-bit que son capaces de ejecutar programas de 32-bit. En el Listado 15 se muestran algunos ejemplos. Observe que algunos usan rutas absolutas, mientras que otros usan rutas relativas.

Listado 15. Vínculos de biblioteca
ian@attic4:~$ ls -l
/usr/lib/libm.so lrwxrwxrwx 1 root root 14 2010-05-27 11:23 /usr/lib/libm.so
-> /lib/libm.so.6 ian@attic4:~$ find /usr/lib/ -lname
"*libstdc++*" /usr/lib/gcc/x86_64-linux-gnu/4.4/libstdc++.so
/usr/lib/libstdc++.so.6 ian@attic4:~$ ls -l
/usr/lib/gcc/x86_64-linux-gnu/4.4/libstdc++.so lrwxrwxrwx 1 root root 23
2010-01-19 08:49 /usr/lib/gcc/x86_64-linux-gnu/4.4/libstdc++.s o ->
../../../libstdc++.so.6

Para obtener más información sobre vinculación, consulte las páginas man para el comando ln y los demás comandos que usted ha visto en este artículo.


Recursos para Descargar


Temas relacionados

  • Use la hoja de ruta para LPIC-1 de developerWorks para buscar los artículos de developerWorks que lo ayudarán a estudiar para obtener la certificación de LPIC-1 en base a los objetivos de abril de 2009.
  • En el sitio del Programa LPIC, encontrará objetivos detallados, listas de tareas y preguntas de muestra para los tres niveles de la certificación en administración de sistemas Linux de Linux Professional Institute. En particular, vea los objetivos de abril de 2009 para el examen LPI 101 y el examen LPI 102. Siempre consulte el sitio del Programa LPIC para ver los últimos objetivos.
  • Revise toda la serie de preparación para los exámenes de LPI en developerWorks para conocerlos fundamentos de Linux y para prepararse para obtener su certificado de administrador de sistemas en base a los objetivos de los exámenes de LPI anteriores a abril del 2009.
  • Para ver ejemplos adicionales sobre cómo usar los vínculos simbólicos en la administración de sistemas Linux, consulte:
  • En la zona Linux de developerWorks, usted podrá encontrar cientos de tutoriales y artículos explicativos, así como descargas, foros de discusión, y muchos otros recursos para desarrolladores y administradores de Linux.
  • Evalúe los productos IBM de la manera que prefiera: Descargue una versión de prueba de producto, pruebe el producto online, use el producto en un entorno de nube, o dedique un par de horas en el SOA Sandbox para aprender a implementar SOA (Arquitectura orientada a servicios) de manera efectiva.
  • Siga developerWorks en Twitter, o suscríbase a una fuente de tweets Linux en developerWorks.

Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=502002
ArticleTitle=Aprenda Linux, 101: Cómo crear y cambiar vínculos físicos y simbólicos
publish-date=07222010