Gateos por la shell

Jueves 5 de febrero de 2004. En construcción. Introducción super-básica para l@s que nunca han usado GNU/Linux.

 Gateos por la shell de GNU/Linux

[ ls | cd | pwd | mkdir |

rmdir | rm | cp | mv | vi/emacs/nano/joe | more/less |

mutt/pine/elm | passwd | logout / shutdown | man | chmod | groups |

chown/chgrp | lynx/w3m/links | ftp | ssh | gpg | who / users | talk / ytalk | ln -s ]

Lo que sigue no pretende ser un curso formal de GNU/Linux o Unix, sino un punto de apoyo para quien no haya manejado nunca este sistema operativo y se vea ahora enfrente de una shell. No presupone ningún conocimiento de GNU/Linux, pero sí de informática a nivel de usuario. Cuando hayáis aprendido a gatear por la shell os recomendamos que sigáis con Linux Primeros Pasos (LIPP) u otros manuales, que podéis encontrar en las páginas del Proyecto LuCAS.

Partiremos de la base de que el sistema operativo ya está instalado, ya sea en tu propio ordenador o en uno remoto al que te has conectado vía telnet o ssh.

Si es así tendrás ante ti un escueto mensaje que diga algo así como

fanelli login:

Lo que el ordenador te está pidiendo es tu nombre de usuario, que el administrador de la máquina te habrá proporcionado. Tecléalo y pulsa Intro.

A continuación te pide tu contraseña

Password:

Por seguridad (no sea que alguien esté mirando por encima de tu hombro) no la podrás ver mientras la tecleas. Al loro con las mayúsculas y minúsculas, si te equivocas tendrás que volver a empezar. Una vez que hayas introducido correctamente tu contraseña, estarás en la shell, en una línea de comandos. Si has usado alguna vez MS-DOS, ya sabes de que va. De hecho los comandos de MS-DOS se basan en los viejos comandos de Unix.

El prompt probablemente sea algo así como

/home/eustaquio$

La primera parte del prompt es el directorio en que te encuentras, que en este caso es tu home, tu área de trabajo, donde normalmente guardarás tus documentos.

El símbolo del dólar ($) quiere decir simplemente que el sistema está preparado para recibir tus órdenes. Las órdenes se componen generalmente de un comando y uno o más argumentos, y quizá de alguna opción que modifique el comando.

Empecemos ya a ver algunos comandos útiles:

ls

ls (list files) te muestra un listado de los ficheros del directorio en que te encuentras. Equivale a la orden dir de D.O.S. En el directorio home suele haber ficheros ocultos, que podrás ver tecleando ls -a (-a es una opción del comando ls, al que modifica para que muestre también los fichero ocultos). Por cierto, no borres los ficheros ocultos que pueda haber en tu home, son ficheros de configuración importantes.

Para ver más detalles sobre los ficheros, teclea ls -l (long listing, lista larga). La línea que obtendras será de este estilo:

-rwxr-xr-x    1 isaac    users      508590 dic 28 19:27     optimize

De momento, vamos a saltarnos los 2 primeros campos. "isaac" es el usuario propietario del fichero, y "users" es el grupo al que pertenece. El siguiente número es la longitud del fichero en bytes, y por último la fecha de la última modificación.

Volvamos con el primer campo, el primer carácter indica el tipo del fichero, los más comunes son "-" para ficheros regulares y "d" para directorios, aunque hay más. Los siguientes nueve caracteres indican los permisos del fichero. Los tres primeros para el propietario, los siguientes para el grupo y los últimos para el resto de usuarios. La "r" significa lectura, la "w" escritura y la "x" ejecución. De modo que para este fichero, todo el mundo puede leerlo y ejecutarlo, pero sólo su propietario puede escribirlo.

El siguiente campo es el número de enlaces del fichero, y queda fuera de nuestro objetivo.

Para reducir los resultados de un listado puedes usar comodines. * sustituye a cualquier número de carácteres, mientras que ? sustituye a un solo carácter. Por ejemplo ls b* muestra todos los ficheros en ese directorio que empiecen por "b". Además también podemos usar expresiones del tipo ls b[0-5]*.ps que nos mostraría todos los ficheros del directorio que empiecen por "b" seguida de un número del 0 al 5 y que tengan extensión "ps".

cd

cd (change directory) sirve para cambiar de directorio. Por ejemplo cd public_html

Para subir al directorio inmediatamente superior la orden es cd .. (ojo al espacio antes de los 2 puntos). Puedes indicar toda una ruta en la orden, por ejemplo: cd ../../var/www

Tecleando simplemente cd volvemos a nuestra home desde cualquier punto en que nos podamos encontrar.

pwd

Si a base de hacer cd's te has perdido y no sabes donde estás, el comando pwd (print working directory) te lo dirá.

mkdir

mkdir (make directory, hacer directorio): para crear un directorio, por ejemplo: mkdir mi_carpeta. El nuevo directorio se creará dentro del directorio en el que te encuentres, a no ser que señales otra ruta.

rmdir

rmdir (revove directory, borrar directorio): pues eso, para borrar el directorio que has creado antes: rmdir mi_carpeta. ¡Ojo! Para poder borrar un directorio éste ha de estar vacío.

rm

rm (remove files): Este comando sirve para borrar ficheros. Por ejemplo: rm archivo. Antes de usarlo piénsatelo 2 veces pues en el mundo UN*X no hay marcha atrás y los ficheros se borran definitivamente.

Puedes usar los comodines para borrar varios ficheros de una sola vez. Por ejemplo rm *.htm borrará todos los ficheros con extensión .htm en ese directorio.

Una opción todavía más peligrosa es rm -r, que borra recursivamente (es decir, en todos los subdirectorios) los ficheros que coincidan con el parámetro que le hayamos dado. Así, rm -r * borrá para siempre todos los ficheros en el directorio actual así como en todos sus subdirectorios. Muy peligroso.

Mucha gente configura su shell de modo que el comando rm sea en realidad rm -i. Esta opción pide confirmación antes de ejecutar el comando.

cp

cp (copy): Copia un fichero de un sitio (o nombre a otro). Por ejemplo: cp archivo1.txt archivo2.txt crea una copia del archivo1.txt y lo llama archivo2.txt. cp archivo subdir/archivo.txt crea un nuevo fichero llamado archivo.txt en el subdirectorio "subdir". cp es parecido a mv, pero no borra el fichero original.

mv

mv (move): Traslada un fichero de un sitio a otro, o lo cambia de nombre. Por ejemplo mv archivo1.txt archivo2.txt cambia el nombre del fichero de archivo1.txt a archivo2.txt.

mv archivo.txt subdir/archivo.txt traslada el fichero del directorio actual al subdirectorio "subdir". En este caso el nombre del fichero no cambia, sólo su ubicación.

vi

vi es un editor de texto (la misma idea que el bloc de notas de Windows), que acompaña a todas las distribuciones de UNIX.

vi puede ser lanzado desde la línea de comandos tecleando vi nombrefichero. Si el fichero ya existe, vi lo abrirá y pasarás a editarlo. Si no existe, vi lo creará. También hay una versión mejorada llamada vim

Otros editores de texto son emacs (extremadamente potente), nano (extremadamente sencillo) y joe.

more

more es un "paginador". Te muestra el contenido de un fichero pantalla a pantalla. Para salir de more, pulsa q.

También puedes redireccionar (piping) la salida de otro comando a more. Si por ejemplo al listar el contenido de un directorio éste tiene tantos elementos que la lista no cabe en la pantalla, ls | more te mostrará la lista pantalla a pantalla.

Otros pagers son less y most.

mutt

Introduciendo esta orden se lanzará este potente cliente de correo libre. Otros clientes de correo igualmente populares son pine y elm.

passwd

passwd (contraseña) empezará pidiéndote tu contraseña actual, y después te permitirá cambiarla a una nueva, que tendrás que introducir 2 veces. Las contraseñas deben ser fuertes (no ser una palabra con sentido, incluir mayúsculas, minúsculas, números y signos de puntuación...), y en general es buena idea cambiarla de vez en cuando.

logout

Con este comando terminas tu sesión UNIX. Si estás usando tu propio ordenador y quieres apagarlo, el comando es shutdown -h now, que en principio deberás ejecutar como usuario root.

man

man muestra las páginas de manual de diversos temas, por ejemplo, man sort. Las páginas están organizadas en secciones, por ejemplo, la sección 1 contiene los comandos de shell, la 2 las llamadas al sistema, etc. Si buscas algo que está en varias secciones debes especificar la sección, man 2 write.

chmod

chmod nos permite cambiar los permisos de ficheros y se puede emplear de dos maneras: absoluta y relativa.

De manera absoluta quiere decir que no tenemos en cuenta los permisos que el fichero pudiera tener antes, simplemente le indicamos los que deseamos que tenga ahora. Para indicarle esto lo haremos mediante notación octal, de manera que "rwx" será "421", así, si queremos poner al fichero permisos "rwxr-x--x", deberemos hacer chmod 751.

La otra posibilidad es simplemente modificar los permisos que hubiera anteriormente, por ejemplo, chmod u+x da permiso de ejecución al propietario y deja el resto de permisos como estaban. Para dar permiso de lectura y escritura al grupo usaríamos chmod g+rw y para el resto de usuarios chmod o+rw.

groups

groups nos permite saber los grupos en los que está cualquier usuario y si lo usamos sin argumentos nos dirá los grupos a los que pertenecemos.

chown y chgrp

chown y chgrp se utilizan para cambiar el usuario y grupo a los que pertenece un fichero. Ambos se usan de manera similar, p.e. chown isaac p1.txt y chgrp www index.html. chown sólo puede ser usado por el superusuario, chgrp puede ser empleado por cualquier usuario para cambiar el grupo de un fichero que le pertenece a cualquier otro grupo a los que pertenece el usuario.

lynx, w3m y links

lynx, w3m y links son navegadores web en modo texto. Los dos últimos soportan "frames" y tablas.

ftp

ftp es un programa que usa el protocolo FTP (File Transfer Protocol) para la transferencia de ficheros. El uso más normal es ftp ftp.rediris.es, entonces se nos pedirá nombre de usuario y contraseña. Una vez dentro, los principales comandos son cd para cambiar de directorio, get para descargar un fichero y put para subir un fichero.

ssh

ssh nos permite conectarnos a un computador remoto además de proveernos de una comunicación segura encriptada. Si el nombre de usuario en el computador remoto es el mismo que en el local basta con hacer ssh sindominio.net, si el nombre de usuario es distinto deberemos usar ssh -l username sindominio.net.