Antes de comenzar es importante destacar que todos los nombres de archivos y comandos son “case-sensitive” (hacen diferencia entre mayúsculas y minúsculas, lo cual no ocurre en sistemas operativos como DOS). Por ejemplo, el comando “make
” es diferente a “Make
” o “MAKE
”. Lo mismo ocurre en el caso de nombres de archivos o directorios.
Ahora que ya podemos presentarnos como usuarios y sabemos como indicar archivos con su camino completo, ¿cómo podemos cambiar nuestro directorio de trabajo?
El comando para movernos por la estructura de directorios es cd
, abreviación de “cambio de directorio”. Hay que destacar, que la mayoría de los comandos Unix más usados son de dos o tres letras. La forma de uso del comando cd
es:
cd <directorio>
donde <directorio>
es el nombre del directorio al que queremos ingresar.
Como ya vimos, al entrar al sistema comenzamos en el directorio “home”. Si queremos ir al subdirectorio articulos
, deberíamos usar la orden:
/home/diego$ cd articulos
/home/diego/articulos$
Como podemos ver, el prompt cambia para mostrar el directorio actual de trabajo. Ahora que ya estamos en el directorio articulos
podemos ver el contenido del archivo historia
con el comando:
/home/diego/articulos$ cat historia
Ahora estamos en el subdirectorio articulos
. Para volver al directorio padre de éste, usamos la orden:
/home/diego/articulos$ cd ..
/home/diego$
(Nótese el espacio entre “cd
” y “..
”). Cada directorio tiene una entrada de nombre “..
” la cual se refiere al directorio padre. De igual forma, existe en cada directorio la entrada “.
” la cual se refiere a sí mismo. Así que el siguiente comando nos deja donde estamos:
/home/diego/articulos$ cd .
/home/diego/articulos$
También pueden usarse nombres con el camino absoluto en el comando cd
. Para ir al directorio de carlos
con cd
, introduciremos la siguiente orden:
Siempre y cuando tengamos permiso para ingresar a dicho directorio, como veremos más adelante.
/home/diego/articulos$ cd /home/carlos
/home/carlos$
También, usando cd
sin argumentos nos llevará a nuestro directorio “home”:
/home/carlos$ cd
/home/diego$
El simple movimiento por el árbol de directorios es poco útil, necesitamos un nuevo comando: ls
. Este comando muestra en pantalla la lista de archivos y directorios, si no se indica otra cosa, del directorio activo. Por ejemplo:
Nótese que los listados aparecen ordenados alfabéticamente. Las letras mayúsculas son “menores” a las minúsculas.
/home/diego$ ls
articulos
cartas
/home/diego$
Aquí podemos ver que diego
tiene tres entradas en su directorio actual: Mail
, articulos
y cartas
. Esto no nos dice demasiado, ¿son archivos o directorios? Podemos usar la opción “-F
” del comando ls
para obtener mas información.
/home/diego$ ls -F
Mail/
articulos/
cartas/
/home/diego$
Por el carácter “/
” añadido al final de cada nombre sabemos que las tres entradas son directorios. La orden “ls -F
” puede también añadir al final un asterisco (“*
”), esto indica que es un archivo ejecutable (programa). Si “ls -F
” no añade nada, entonces es un archivo normal.
Por lo general cada comando Unix puede tomar una serie de opciones definidas en forma de argumentos. Estos usualmente comienzan con el carácter “-
”
Similar al uso del carácter “/
” en DOS.
, tal como vimos antes con “ls -F”. La opción “-F
” le dice a ls
que dé información sobre el tipo de cada entrada.
Si a ls
le pasamos un nombre de directorio, mostrará su contenido:
/home/diego$ ls -F articulos
ingles
historia
tesis
notas/
/home/diego$
Para ver un listado más interesante, veamos el contenido del directorio /etc
.
/home/diego$ ls /etc
Images ftpusers lpc rc.new shells adm getty magic rc0.d startcons bcheckrc gettydefs motd rc1.d swapoff brc group mount rc2.d swapon brc~ inet mtab rc3.d syslog.conf csh.cshrc init mtools rc4.d syslog.pid csh.login init.d pac rc5.d syslogd.reload default initrunlvl passwd rmt termcap disktab inittab printcap rpc umount fdprm inittab.old profile rpcinfo update fstab issue psdatabase securetty utmp ftpaccess lilo rc services wtmp
/home/diego$
Los usuarios de DOS notarán que los nombres de los archivos pueden ser más largos que 11 caracteres (8 del nombre y 3 de la extensión) y pueden contener puntos en cualquier posición.
En Unix no existe el concepto de “extensión” de un archivo. Es solamente una convención que el nombre de algunos archivos termine con un punto y alguna secuencia de letras (no necesariamente tres) que denoten su tipo.Incluso es posible que un archivo contenga más de un punto en su nombre.
Vayamos al directorio raíz con “cd ..
” y desde allí vayamos al directorio /usr/bin
:
/home/diego$ cd ..
/home$ cd ..
/$ cd usr
/usr$ cd bin
/usr/bin$
También podemos movernos dentro de directorios en múltiples pasos, como en “cd /usr/bin
”. Tratemos de movernos por varios directorios usando cd
y de ver su contenido con ls
. En algunos casos podremos encontrarnos con el desagradable mensaje de error “Permission denied” (permiso denegado). Esto se debe a cuestiones de seguridad del sistema. Para moverse o listar un directorio debemos de tener una serie de permisos. Hablaremos sobre ello más adelante.
Es el momento de aprender a crear directorios. Para ello se usa el comando mkdir
. Probemos lo siguiente:
/home/diego$ mkdir nuevo
/home/diego$ ls -F
Mail/
articulos/
cartas/
nuevo/
/home/diego$ cd nuevo
/home/diego/nuevo$ ls
/home/diego/nuevo$
Acabamos de crear un directorio nuevo y movernos dentro de él. Como no contiene ningún archivo, veamos cómo copiar archivos desde un lugar a otro.
La copia de archivos es efectuada por el comando cp
:
/home/diego/nuevo$ cp /etc/termcap .
/home/diego/nuevo$ cp /etc/shells .
/home/diego/nuevo$ ls -F
shells termcap
/home/diego/nuevo$ cp shells bells
/home/diego/nuevo$ ls -F
bells shells termcap
/home/diego/nuevo$
El comando cp
copia los archivos listados en la línea de comandos al archivo o directorio pasado como último argumento. Nótese que usamos el directorio “.
” para referirnos al directorio actual.
El comando mv
mueve archivos en lugar de copiarlos. La sintaxis es muy sencilla:
/home/diego/nuevo$ mv termcap sells
/home/diego/nuevo$ ls -F
bells sells shells
/home/diego/nuevo$
Nótese como termcap
ya no existe, y en su lugar está el archivo sells
. Este comando puede usarse para renombrar archivos, como acabamos de hacer, pero también para mover archivos a directorios diferentes.
Nota: mv
y cp
sobreescribirán los archivos destino (si ya existen) sin consultar. Sea cuidadoso cuando mueva un archivo a otro directorio: puede haber ya un archivo con el mismo nombre que será sobreescrito y su contenido se perderá para siempre.
Para borrar un archivo, usamos el comando rm
.
/home/diego/nuevo$ rm bells sells
/home/diego/nuevo$ ls -F
shells
/home/diego/nuevo$
En el directorio nuevo
sólo ha quedado el archivo shells
. Nótese que rm
por defecto no preguntará antes de borrar un archivo, por lo tanto debemos ser muy cuidadosos.
Un comando relacionado con rm
es rmdir
. Éste borra un directorio, pero sólo si está vacío. Si el directorio contiene archivos o subdirectorios, nos informará del error.
Los comandos cat
y less
son usados para ver el contenido de archivos. less
muestra el archivo pantalla a pantalla, permitiéndonos movernos hacia adelante y atrás, mientras que cat
lo muestra completo de una vez.
Para ver el contenido del archivo shells
podemos usar la orden:
/home/diego/nuevo$ less shells
Durante la ejecución de less
podemos usar [RePág]
y [AvPág]
para retroceder y avanzar por páginas, y las teclas de cursor hacia arriba y abajo para retroceder y avanzar por líneas.[PgUp]
y[PgDown]
en los teclados en inglés
[Q]
finalizará la ejecución de less
. Hay otros comandos disponibles, los citados son sólo los más básicos.
Salgamos de less
y probemos “cat /etc/termcap
”. El texto probablemente pasará demasiado rápido como para poder leerlo. El comando cat
; viene de “concatenar”, que es para lo que realmente sirve, pero también puede ser usado para concatenar el contenido de varios archivos. Esto se verá mas adelante.
Prácticamente cada sistema Unix proporciona una utilidad conocida como “páginas de manual”. Estas páginas contienen documentación en línea para todos los comandos del sistema, recursos, archivos de configuración, etc. El comando usado para acceder a las páginas de manual es man
. Por ejemplo, si estamos interesados en conocer otras opciones del comando ls
, podemos escribir:
/home/diego$ man ls
y veremos la página de manual para ls
.
Desafortunadamente para los principiantes, la mayoría de las páginas de manual contienen detalles técnicos del comando sin ningún ejemplo ni explicación adicional acerca de su uso. Pese a esto, estas páginas son una gran fuente de información que permiten refrescar la memoria si olvidamos la sintaxis de un comando.
Una respuesta muy común a una pregunta de un principiante en un foro de Unix será “RTFM”, por “Read The F*****g Manual”.Pruebe
man
con los comandos que ya hemos tratado y con los que vayamos introduciendo. Notará que alguno de los comandos no tiene página de manual. Esto puede deberse a diferentes motivos. El comando puede ser interna del intérprete de comandos (como el caso de cd
), o un "alias" (renombre de otro comando), en cuyo caso no tendrán una página propia.