Vamos a ver algunos comandos básicos de todo UNIX, que nos permitirán familiarizarnos con el sistema. Para poder utilizar estos comandos ya debemos haber iniciado la sesión.
Cuando hemos iniciado la sesión estaremos delante de un prompt
(solicitud), que es la línea de comandos de UNIX. El formato de
este prompt será similar a: user@anteojito:~$
.
La mayoría de estos comandos son herramientas simples, que realizan una sola tarea. Más adelante aprenderemos como combinar lo que hacen dos o más herramientas para lograr un resultado más interesante.
Algunos de estos comandos pueden recibir opciones o parámetros, que
pueden hacerlos realizar tareas diferentes. En UNIX, casi todas las
opciones que reciba un comando estarán precedidas por el caracter
-
, y pueden combinarse según sea necesario.
Es importante notar que UNIX es sensible a las mayúsculas y minúsculas (case sensitive), de forma que si queremos obtener la salida correcta es necesario escribir los comandos que aquí se explican tal cual se presentan (casi siempre en minúsculas).
Ejecutando el comando date
obtendremos la fecha y
la hora actual. También es el comando que se usa para cambiar la
fecha de la máquina.
who
nos permite ver los usuarios que están
utilizando el sistema, incluyendo la fecha en la que se conectaron al
sistema.
Además, una versión alternativa (who am i
) nos
muestra únicamente nuestra conexión.
Podemos ver cuánto tiempo hace que se ha iniciado el sistema de
nuestra computadora ejecutando el comando uptime
. También
obtendremos alguna información adicional, como la cantidad de
usuarios que están utilizando el sistema, o la carga promedio que
tiene el procesador.
El comando clear
sirve para limpiar la pantalla. Es
equivalente al cls
de DOS.
echo
es un comando muy sencillo. Lo que hace es
repetir todo lo que recibe por línea de comandos. Si ejecutamos:
echo Hola
obtendremos la salida Hola
.
A pesar de parecer inútil, este comando nos será de bastante utilidad cuando aprendamos más sobre el intérprete de comandos del sistema.
El comando pwd
es muy sencillo, nos
muestra la ruta de directorios en la que estamos situados en este
momento. Por ejemplo, /home/user.
ls
. El equivalente en DOS es 'dir'.
Si ejecutamos ls
sin ninguna opción, nos listará los
archivos del directorio actual. Si, en cambio, ejecutamos
ls directorio
, nos listará los archivos de ese
directorio.
Puede recibir varias opciones:
-l
: muestra mucha más informacion sobre los archivos,
como el usuario y el grupo al que pertenece, el tamaño, los
permisos, etc.
-a
: muestra todos los archivos, incluyendo los ocultos.
-t
: ordena los archivos por fecha de modificación.
Estas opciones pueden combinarse, utilizando un solo signo '-', por ejemplo:
ls -lat
.
El comando touch archivo
puede tener dos
consecuencias: si archivo
no existe aún, lo crea con tamaño
0 y como propiedad de nuestro usuario. Por otro lado, si
archivo
ya existe, actualiza la fecha de modificación.
El comando cp
es el que se utiliza para copiar archivos.
Si escribimos cp viejo nuevo
, copiaremos el archivo
viejo
con el nombre nuevo
. Es decir, el archivo
origen se escribe primero y a continuación el archivo que se va a
crear. Una vez hecha la copia, tendremos dos archivos diferentes, con
el mismo contenido.
Por otro lado, también podemos ejecutar
cp archivo1 archivo2 directorio
,
de forma que los archivos archivo1
y
archivo2
se copiarán dentro de directorio
.
Muy similar a cp
, el comando mv
es el que se utiliza para mover
archivos de un lugar a otro, o para cambiarle el nombre a un archivo. Si
ejecutamos, mv viejo nuevo
, el archivo viejo
habrá pasado a
llamarse nuevo
.
Por otro lado, si ejecutamos mv archivo1 archivo2 directorio
, los
archivos archivo1
y archivo2
se moverán dentro de
directorio
.
Para borrar archivos utilizamos el comando rm
. Hay que usarlo
cuidadosamente, porque una vez que los archivos han sido borrados, no pueden
recuperarse de ninguna forma.
Si deseamos que rm
nos pregunte si queremos borrar o no un archivo,
debemos utilizar la opción -i
, mientras que si deseamos que no nos
pregunte utilizamos la opción -f
. Dependerá de la configuración
del sistema cual de estas dos opciones es la que está seleccionada por
omisión.
Utilizamos el comando mkdir directorio
para crear directorios. Pueden
utilizarse rutas absolutas o relativas. Es decir que si queremos crear el
directorio /home/user/temp
, y estamos situados dentro del directorio
/home/user
, podremos ejecutar mkdir temp
o
mkdir /home/user/temp
indistintamente.
Para borrar directorios utilizamos el comando rmdir directorio
.
Solamente funcionará si el directorio está vacío.
En caso contrario, habrá que borrar primero los archivos, para luego borrar
el directorio.
El comando cd
nos permite cambiar de directorio, igual que en DOS.
Por ejemplo, cd /
nos lleva al directorio raíz, que es de donde
surgen todos los directorios del sistema.
Para cambiar a otro directorio dentro del arbol, podemos utilizar
cd usr
, o cd /home/user
. Más adelante veremos
cómo se organiza el
árbol de directorios, y qué hay en cada uno.
Utilizado sin ningún otro parámetro, cd
nos lleva al directorio
personal del usuario (home). Otra manera de ir al directorio personal es
utilizar cd ~
, ya que el símbolo ~
identifica al directorio de
cada usuario.
Para cambiar al directorio padre del directorio actual se utiliza cd ..
(no olvidar el espacio). Mientras que para volver al directorio en el que nos
encontrábamos antes de ejecutar el último cd
, podemos ejecutar
cd -
.
En UNIX los archivos no se identifican por su extensión, como en DOS. Se les puede poner una extensión, pero es de adorno.
El comando file
nos permite tener una idea del contenido de un archivo.
Al ejecutar file archivo
, inspecciona partes del archivo para darse cuenta
qué clase de archivo es. Puede decirnos que se trata de un archivo de texto,
un directorio, una imagen, etc.
El comando du
, Disk Usage, nos muestra el espacio que ocupan
todos los directorios a partir del directorio actual. El número de la primera
columna es el espacio ocupado por el directorio y está expresado en kb.
du -s
nos muestra únicamente el total.
du -a
muestra lo que ocupan los archivos, además de los directorios.
du -h
hace el listado, indicando la unidad (human readable).
du archivo
nos dice cuánto ocupa el archivo.
El comando find
permite encontrar archivos, utilizando diversas
técnicas. En principio, si se le pasa como parámetro únicamente una
determinada ruta, por ejemplo find /home/user
, el comando buscará
todos los archivos y directorios que se encuentren a partir de esa ruta.
Utilizando algunos otros parámetros es posible buscar los archivos por diversos criterios.
find . -name "hola.txt"
encuentra todos los archivos llamados
hola.txt
que se encuentren a partir del directorio actual. Las
comillas no son obligatorias, pero son recomendables si se quieren usar
opciones más complejas (por ejemplo, utilizando metacaracteres de shell,
que se explican en la sección 4.1).
find . -size 50k
busca los archivos que ocupan 50 kilobytes a
partir del directorio actual. Si se utiliza find . -size 20c
,
buscará los archivos que ocupen 20 bytes. Y si se utiliza
find . -size 5b
, buscará los archivos que ocupen 5 bloques de 512
bytes cada uno.
find /home/user -empty
busca todos los archivos que se
encuentran vacíos, a partir del directorio /home/user
.
Es posible, además, utilizar opciones adicionales para la búsqueda, que indiquen la profundidad de la búsqueda, que agreguen otros criterios adicionales a los explicados, o que indiquen una acción a llevar a cabo una vez encontrados los archivos.
Ejecutando cat archivo
podremos ver el contenido de
archivo
. Este comando puede recibir una serie de archivos, y
el resultado será que nos mostrará un archivo a continuación del
otro.
Un caso especial se produce cuando ejecutamos cat
sin ningún nombre
de archivo. En este caso, el comando esperará a que nosotros le demos una
entrada, y la irá reproduciendo línea por línea. Hasta que presionemos
la combinación Ctrl-d, que indica que la entrada ha terminado.
El comando od
Octal Dump, nos permite ver byte a byte el
contenido de un archivo. La primera columna es la dirección de cada línea
que vemos. Utilizando las distintas opciones, podemos
visualizarlo en varios formatos:
od archivo
nos muestra el contenido del archivo expresado en
números octales, generalmente tomados de a dos bytes.
od -b archivo
nos muestra el contenido, en números octales, byte a byte.
od -c archivo
nos muestra los caracteres que forman el archivo,
uno por uno.
od -cb archivo
nos muestra los caracteres, y debajo de cada
caracter el número octal del byte.
od -h archivo
nos muestra el contenido, en números hexadecimales,
tomados de a dos bytes.
Las nuevas versiones de od
soportan muchos más formatos, utilizando la
opcion -t formato
.
El comando wc archivo
, se utiliza para contar la cantidad de líneas,
palabras y letras que tiene un archivo.
El comando less
permite paginar la salida de otros comandos, o bien, el
contenido de algún archivo.
Si ejecutamos less archivo
, veremos la primera página del archivo.
Si este archivo es lo suficientemente largo, podremos movernos hacia abajo y
hacia arriba utilizando PageUp, PageDown, Home, End, Enter, los cursores, la
barra espaciadora, etc.
También podemos realizar búsquedas dentro del archivo, para ello
utilizamos la barra invertida \
, seguida del patrón que queremos
buscar. Por ejemplo, si tipeamos \consola
, nos mostrará la primera
ocurrencia del patrón consola
. Para ver la siguiente ocurrencia,
utilizamos n
, y para ver la ocurrencia anterior N
.
Para salir, utilizamos q
.
Cada aplicación que se ejecuta dentro de un sistema UNIX es un proceso. Algunos procesos están ejecutándose sin que nosotros lo sepamos. Otros procesos comienzan a ejecutarse cuando nosotros se lo indicamos.
Cada proceso que se ejecuta dentro de nuestra computadora tiene un número que lo identifica, llamado Process ID (PID). Este número será el que deberemos utilizar para referirnos a ese proceso con otros comandos.
Vemos a continuación los comandos básicos para manejar procesos dentro de los sistemas UNIX.
El comando top
nos muestra algunos de los procesos que se están
ejecutando, ordenados por el tiempo de procesador de la computadora que
consumen. Muestra algunos datos adicionales de cada proceso, por ejemplo, en
la primera columna, podemos observar el PID de cada uno.
Además, muestra otros datos acerca del uso que se le esta dando a la máquina.
Para salir: q.
El comando ps
nos muestra la lista de procesos que se están
ejecutando en la computadora. En particular, es interesante ver la salida de
ps ax
, que nos muestra todos los procesos, tanto los de nuestro usuario
como los de otros, e incluso los procesos que no tienen usuario.
La primera columna de la salida de ps
también contiene
el PID del proceso.
La combinación de teclas Ctrl-z sirve para suspender una tarea dentro de su ejecución.
Por ejemplo, si estamos ejecutando el proceso top
y presionamos Ctrl-z, se suspenderá la ejecución de top
y volveremos a obtener
la línea de comandos. Antes de devolvernos la línea de comandos, nos
indicará cuál es el número de trabajo del proceso que hemos suspendido.
Podemos iniciar varias tareas distintas, y luego suspenderlas. De forma que el número de trabajo de las tareas suspendidas se va incrementando.
El comando bg
permite que el proceso que se halle suspendido,
continúe ejecutándose en background (de fondo). Mientras que el
comando fg
permite que un proceso suspendido pase a foreground (a
la pantalla principal).
Para poder ver qué comandos se están ejecutando en background y cuáles
han sido suspendidos o terminados, podemos utilizar el comando jobs
.
La lista que nos muestra este comando incluye el número de trabajo, que no es el mismo que el PID, y podemos utilizar este identificador para decidir cuál de las tareas pasar a foreground o background.
Por ejemplo: fg 1
pasa a foreground el trabajo número 1. Mientras
que bg 3
pasa a background el trabajo número 3.
Este comando nos sirve para interrumpir la ejecución de un determinado proceso. El comando envía una señal al proceso por la cual (normalmente) se cierra.
Podemos ejecutarlo teniendo en cuenta el PID del proceso. Por ejemplo:
kill 1234
, matará el proceso 1234. O bien, teniendo en cuenta el
número de trabajo. En ese caso: kill %2
, detendrá el trabajo
número 2.
Cuando una aplicación se está ejecutando en foreground, y deseamos detenerla, podemos utilizar la combinación de teclas Ctrl-c.
El uso de esta combinación es equivalente a ejecutar el comando kill
con el número de proceso de la aplicación que estamos utilizando.
En GNU/Linux existen muchísimos documentos de ayuda, manuales y HOWTOs, que están pensados para que cualquier persona pueda encontrar información sobre lo que está buscando.
Un comando muy importante es man
. Este comando nos mostrará las hojas
del manual del programa que estamos queriendo buscar.
Por ejemplo, man date
nos mostrará el manual del comando date
,
que ya sabemos que sirve para ver y configurar la fecha, aquí está
explicado cómo utilizarlo.
Podemos movernos dentro de las páginas de los manuales utilizando la barra
espaciadora, Enter, los cursores y el mismo sistema de búsqueda que
utilizamos en less
. Para salir, utilizamos q
.
Un comando muy similar a man
, es el comando info
. Las páginas
que nos muestra este comando suelen tener una mayor cantidad de información
acerca de la aplicación sobre la cual estamos consultando.
Por ejemplo info sh-utils
, contiene información detallada sobre
algunas de las utilidades del intérprete de comandos (shell), que se
verá más adelante.
Algunos comandos (como fg
), son parte interna del intérprete de
comandos, y por esta razón no tienen una página del manual que los
explique.
Para saber de qué manera utilizar estos comandos, usamos help
. La
ayuda que nos da este comando es más sintética que la de man
.
Por ejemplo help jobs
, nos informará sobre el uso del comando
jobs
visto anteriormente.
Dentro del directorio /usr/share/doc
, encontramos una gran cantidad de
documentos que tratan las distintas aplicaciones que tenemos instaladas en
nuestro sistema.
En particular, el directorio /usr/share/doc/HOWTO
, contiene artículos
sobre cómo hacer determinadas cosas dentro de nuestro sistema.