Detalle de comandos

Detalle de Comandos

Detallaremos los comandos básicos que son de mayor utilidad en GNU/Linux, tratando de detallar en cada uno de ellos las opciones más utilizadas y las que necesitaremos más frecuentemente para un mejor funcionamiento de nuestro sistema. Muchos de estos comando se encontraran complicados a esta parte del curso, pero más adelante se entenderá su utilización. Por el momento tendrán que ser tomados solo como referencia y luego, al darse el tema especifico que los utiliza, se podrá consultar esta descripción para poder utilizarlo. Las opciones en su amplia mayoría se le dan al comando luego de un signo "-", por ejemplo ls -F. Además de las opciones con una sola letra, en muchas oportunidades nos encontraremos con opciones indicadas con palabras completas. Estas se expondrán seguidas de un doble signo "-", de la forma cat --number que es equivalente a cat -n. Los archivos que irán como argumento del comando se referenciaran de la forma <archivo[1]> <archivo[2]> <archivo[n]>. Para mayor información respecto a cada uno de estos comandos, se cuenta con las páginas de manual que nos mostraran todas las posibilidades. La sintaxis para leer las páginas de manual es la común

[shrek@pantano:~]$ man <comando>

alias: Este comando nos mostrará la lista de alias que existe en nuestro sistema. Los alias son nombres creados por los usuarios para ejecutar un comando o una serie de comando de manera más rápida. Estos están definidos en /etc/bashrc y tienen permiso de escritura por el usuario root. Un ejemplo de la salida del comando es el siguiente

alias fd='mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls'
alias l='ls -laF --color=tty'
alias ldir='mount /mnt/floppy && ls /mnt/floppy && umount /mnt/floppy'
alias ls='ls --color=tty'
alias m='minicom -s -con -L'
alias minicom='minicom -s -con -L'
alias tm='tail -f /var/log/messages'
alias tmm='tail -f /var/log/maillog'
alias tms='tail -f /var/log/secure'
alias ufd='cd /mnt && umount /floppy && ls'
alias which='type -path'

awk: Es un lenguaje de programación que nos sirve para realizar búsquedas de patrones en archivos de textos. Entraremos en mayor detalle en el capítulo (reemplazar).

cal: Este comando, sin argumentos, nos mostrará el calendario del mes actual en el corriente año. Alguno de sus argumentos más usados son los que le indican el mes y el año que se quiere visualizar. Para ello solo hace falta invocarlo seguido por el número del mes y el año en cuatro dígitos.

[shrek@pantano:~]$ cal 8 2004
   agosto de 2004
do lu ma mi ju vi sá
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
[shrek@pantano:~]$

cat: Concatena e imprime archivos en la salida estándar. Con "cat" podremos tanto visualizar por pantalla como redireccionar hacia otro archivo, un archivo de texto común. También podríamos concatenar varios archivos para que sean visualizados todos juntos.

[shrek@pantano:~]$ cat archivo[1] archivo[2] archivo[3] ... archivo[n]

Opciones:

-b, --number-nonblank

Numera todas las líneas que contengan algún texto comenzando por 1.

-e

Es equivalente a -vE.

-n, --number

Numera todas las líneas de salida comenzando por 1.

-s, --squeeze-blank

Remplaza múltiples líneas en blanco con una sola línea en blanco.

-t

Es equivalente a -vT.

-u

Solo utilizado para compatibilidad con UNIX; es ignorado.

-v, --show-nonprinting

Muestra los caracteres de control.

-A, --show-all

Equivalente a -vET.

-E, --show-ends

Muestra un signo "$" inmediatamente después del final de línea.

-T, --show-tabs

Muestra los caracteres de tabulación (TAB), como '^I'.

--help

Muestra un mensaje de ayuda para el comando.

--version

Muestra la información de la versión que se esta usando del comando.

cd: (change Directory) Cambia a otro directorio. Si se invoca sin ningún argumento, nos llevara a nuestro directorio HOME. Esto lo hace ya que existe una variable de entorno cargada por el shell que indica cual es nuestro home. Esta variable se llama HOME y será estudiada más adelante al ver Variables de Entorno shell.

chmod: Cambia los permisos de acceso a los ficheros. La forma de los símbolos que podrá utilizar como argumento será [ugoa...][[+- =][rwxXstugo...]...][,...]' . Muchos de estos símbolos tendrán que ir separados por comas. La combinación de letras [ugoa...] especificará si el cambio al archivo se le esta especificando a nivel del usuario (u), grupo (g) u otros (o) o en su defecto a todos (a). El operador "+" casa que el permiso seleccionado sea añadido, en cambio el símbolo "-" significa lo opuesto. Los símbolos rwx significan permisos de lectura (r), escritura (w) y ejecución (x). Se especificaran los otros símbolos más adelante. Existe también una forma numérica de indicar los permisos de forma octal (0- 7).

clear: Limpia la pantalla si es posible.

date: Sin argumentos mostrara en pantalla el día, mes número de día, hora y año.

[shrek@pantano:~]$ date
vie jul  2 14:45:59 ART 2004
[shrek@pantano:~]$ 
Si agregamos un símbolo + delante del comando y un modificador, podremos obtener distintas partes de una fecha. Estos modificadores tendrán que ir antepuestos por un símbolo %.

Estos son algunos modificadores de posición

%

El literal %

n

Una nueva línea

t

Un tabulador horizontal

Modificadores de tiempo:

%H

Hora en formato 00..23

%I

Hora en formato 01..12

%k

Hora en formato 00..23

%l

Hora en formato 01..12

%M

Minutos en formato 00..59

%p

AM o PM

%r

Tiempo en formato de 12 horas (hh:mm:ss )

%s

Segundos a partir del 01-01-1970 a las 00:00:00.

%S

Segundos (00..59)

%T

Tiempo en formato de 24 horas.

%X

Tiempo en formato local (%H:%M:%S)

%Z

Zona de tiempo, o nada si no esta determinado.

Modificadores de Días

%a

Abreviación de días de la semana (Dom..Sab)

%A

Muestra el nombre completo del día de la semana (Domingo..Sábado)

%b

Abreviación del mes en curso (Ene..Dic)

%B

Muestra el nombre completo del mes en curso.

%c

Muestra el día y la hora en el formato "jue 06 abr 2000 23:48:01 ART"

%d

Día del mes (01..31)

%D

Día en formato mm/dd/aa

%h

Igual que %b

%j

Día del año (001..366)

%m

Mes del año (01..12)

%U

Número de semana del año donde el Domingo es el primer día (00..53)

%w

Número del día dentro de la semana (0..6) donde 0 corresponde al Domingo.

%W

Número de semana del año donde el Lunes es el primer día (00..53)

%x

Día en formato dd/mm/aa

%y

Muestra los dos últimos dígitos del año.

%Y

Año en formato de 4 dígitos (1970 .. )

El reloj del sistema también puede actualizar el reloj del sistema a través del modificador -d de la siguiente forma:

date -d mm/dd/yy

Cambia la fecha.

date -d hh:mm:ss
Cambia la hora. La opción --help muestra un mensaje de ayuda mientras que --version Muestra información de la versión.

find: Encuentra archivos recursivamente. Los archivos que coincidan con la una expresión lógica serán mostrados en pantalla. Find no sigue a los link simbólicos, sino que los muestra como archivos.

Uso de Operadores: En esta descripción el argumento n es usado para identificar a un número decimal entero donde +n es mayor que n y -n es menor que n y n es exactamente n. -fstype <tipo> Verdadero si el tipo de archivo coincide con "tipo". Típicamente 4.2 o nfs. -name <archivo> Verdadero si el archivo es igual a <archivo>. Puede usarse los modificadores del shell como comodín donde "?" representa una sola letra y "*" representa toda una cadena. -size n Verdadero si el archivo es de n bloques de largo (512 bytes por bloque) -inum n Verdadero si el archivo tiene el inodo igual a n. Veremos los inodos en el capítulo 8.5.3. -atime n Verdadero si el archivo fue accedido en n días. -mtime n Verdadero si el archivo fue modificado en n días. -ctime n Verdadero si el archivo fue cambiado en n días. -exec command Verdadero si la ejecución del "command" retorna 0. -ok command Parecido a -exec solo que el "command" es escrito en la pantalla y se pregunta si es ejecutado a lo que se tendrá que responder "Y" o "N". -print Siempre es verdadero, muestra el path donde esta buscando. -ls Siempre es verdadero, imprime además todos los datos de un "ls" normal y más: número de inodo, tamaño en kilobytes (1024 bytes), modo de protección y número de enlace duro, usuario, grupo, tamaño en bytes y tiempo de la última modificación. Si el archivo es un link simbólico, se mostrará hacia donde apunta con "->". -cpio device Siempre verdadero, escribe el archivo en un dispositivo de cinta. -newer <archivo> Verdadero si los archivos fueron modificados más recientemente que el tiempo de modificación que tiene <archivo> -xdev Siempre verdadero, no desciende a directorios que posean otro tipo de filesystem's FAST-FIND: Se trata de una base de datos alojada en /usr/lib/find que es actualizada periódicamente y es donde se van guardando las búsquedas anteriores. Se puede actualizar con el comando siendo root con el comando updatedb que se encuentra en el mismo directorio.

cp: copia el contenido del archivo1 en el archivo2 con la sintaxis siguiente

[shrek@pantano:~]$ cp <archivo1> <archivo2>... <archivo[n]> <destino>
donde archivo1, archivo2 hasta archivo[n] serán copiados a destino. Algunas opciones:

-a, --archive

Preserva la posible estructura y atributos del archivo a copiar

-b, --backup

Realiza un backup de los archivos copiados por si se renombran o son borrados

-f, --force

Borra sin avisar el archivo de destino si este existe

-i, --interactive

Pregunta por pantalla la confirmación de sobrescribir un archivo destino

Otra forma de utilizar el comando cp es haciendo una copia recursiva de directorio1 con subdirectorios y todo a directorio2. Si directorio2 no existe, se creará. Esto se logra con la opción -c.

echo: Simplemente envía a pantalla los argumentos pasados.

[shrek@pantano:~]$ echo "Hola mundo"
Hola Mundo

finger: Por defecto muestra en pantalla todos los usuarios logeados incluyendo nombre de login, nombre completo, nombre de la terminal donde esta logeado, hora en que entro al sistema, hostname además de otros datos personales como los números de teléfono si es que existen.

[shrek@pantano:~]$ finger
Login Name Tty Idle Login Time Office Office Phone
root  root *1  22   Apr 8 18:42
sebas p0 Apr 8 18:42 (192.168.1.1)
Idle es un entero que muestra la cantidad de tiempo que el usuario esta logeado en el sistema. Opciones:

-s

Igual que ejecutar el finger común

-l

Representa la información en múltiples líneas

[shrek@pantano:~]$ finger -l
Login: shrek                            Name: Shrek
Directory: /home/shrek                  Shell: /bin/bash
On since Tue Aug 10 14:41 (ART) on tty2 6 hours 35 minutes idle
No mail.
No Plan.

Si se quisiera saber los usuarios que están logeados en un sistema diferente al nuestro, y si el sistema el cual estamos explorando lo permite al tener habilitado el puerto 79 (finger), tendríamos que ejecutar el comando seguido de una "@" e inmediatamente después el nombre del host del que queremos saber quien esta logeado.
[shrek@pantano:~]$ finger @farfaraway.com

grep: Imprimirá las líneas que coincidan con la expresión que coloquemos inmediatamente luego del comando. Por ejemplo, si tiráramos por pantalla el archivo /var/log/messages tal vez tendríamos demasiadas líneas para ver, pero si solo queremos ver aquellas líneas que contengan la expresión "tty1" solo tendríamos que hacer un cat al archivo y utilizando el símbolo de canalización "|" podríamos hacer que la salida del cat se procese con el comando grep para darnos la salida deseada.

[root@pantano:/home/shrek]# cat /var/log/messages|grep tty1
Jul 25 16:53:04 pantano login[433]: ROOT LOGIN ON tty1
Jul 25 18:41:40 pantano login[433]: ROOT LOGIN ON tty1
Jul 25 18:42:10 pantano login[457]: ROOT LOGIN ON tty1
[root@pantano:/home/shrek]#
Opciones:

-A num

Muestra las num líneas siguiente a la última línea que haya coincidido con el patrón pedido.

-B num

Muestra las num líneas anteriores a la primera línea que haya coincidido con el patrón pedido.

-c

Muestra por pantalla él número de líneas que coinciden con el patrón.

-b

Muestra antes que las líneas que coinciden, la cantidad de bytes que han pasado por el comando luego de salir cada línea.

Para mayores usos y dado que la opción anterior será la que más se utilice, se recomienda la lectura de las paginas de su manual.

kill: Por defecto envía una señal de terminación (terminate 15) al proceso que se indique por medio del numero de proceso (PID). Las señales que se le pueden enviar a un proceso se listan con la opción - l. Estas son:

  1. SIGHUP

  2. SIGINT

  3. SIGQUIT

  4. SIGILL

  5. SIGTRAP

  6. SIGIOT

  7. SIGBUS

  8. SIGFPE

  9. SIGKILL

  10. SIGUSR1

  11. SIGSEGV

  12. SIGUSR2

  13. SIGPIPE

  14. SIGALRM

  15. SIGTERM

  16. SIGCHLD

  17. SIGCONT

  18. SIGSTOP

  19. SIGTSTP

  20. SIGTTIN

  21. SIGTOU

  22. SIGURG

  23. SIGXCPU

  24. SIGXFSZ

  25. SIGVTALRM

  26. SIGPROF

  27. SIGWHINCH

  28. SIGIO

  29. SIGPWR

Para más información sobre las señales consultar signal(7) en las páginas de manual. De estas señales indicaremos las más utilizadas. Estas son 9, 1 y 15. Para indicar el número de señal que queremos enviar a un proceso, se le antepone el signo "-".

[root@pantano:/usr/bin]# kill -9 266
Esto provocará que el proceso muera repentinamente. La diferencia entre la señal 9 y la 15 es que al enviar al proceso una señal 15 este será marcado como un proceso terminado. En cambió la señal 9 mata el proceso inmediatamente. La señal 1 o SIGHUP reinicia el proceso al que se envía la señal, lo que también se podrá realizar con el modificador -HUP.
[root@pantano:/usr/bin]# kill -HUP 266
Se deberá tener en cuenta que el usuario solo podrá mandar señales a los procesos que le pertenecen. En cambio el usuario root podrá hacerlo a cualquier proceso que este corriendo en el sistema.

less: es un programa similar a more que permite ir viendo una salida en pantalla que ocuparía más de una. La diferencia sustancial con el more es que nos permite desplazarnos de abajo hacia arriba y de arriba hacia debajo de la salida por pantalla. Permite a su vez que se utilicen una serie de comandos. Sumario de comandos básicos del less.

h H

Muestra la ayuda.

q :q Q :Q ZZ

Salir.

e ^E j ^N CR

Adelante una línea (o N líneas).

y ^Y k ^K ^P

Atrás una línea (o N líneas).

f ^F ^V SPACE

Adelante una pantalla (o N líneas).

b ^B ESC-v

Atrás una pantalla (o N líneas).

ESC-SPACE

Adelante una pantalla.

/ patrón

Busca hacia adelante n's líneas en donde coincida el patrón.

logout: Sale de la terminal.

lpq: Muestra en pantalla el contenido de la cola de impresión. Si se quiere un reporte por cada usuario, el comando deberá estar seguido del nombre del usuario.

lpr: Genera un trabajo de impresión del archivo seleccionado. Si no se especifica archivo, lpr leerá los datos desde la entrada estándar. Opciones: -Pprinter Envía la salida a la impresora printer. -#copies Procede a crear "copies" copias del trabajo enviado a la cola de impresión.

[shrek@pantano:~]$ lpr -#3 index.c
También se podría realizar leyendo el archivo con el comando cat y enviarlo al comando lpr con la cantidad de copias que se requieren.
[shrek@pantano:~]$ cat index.c |lpr -#3
Existen muchos comandos más para aplicar formatos específicos a la salida impresa, los que se podrán consultar en las páginas de manual.

lprm: Remueve los trabajos de la cola de impresión. Sin argumentos, "lprm", borrara todos los trabajos activos del usuario que invoco el programa. Puede ser removido un trabajo determinado utilizando el comando lpq para saber el número de trabajo y el comando lprm para eliminarlo indicando en la impresora que se encuentra.

[shrek@pantano:~]$ lpq -Plp
pantano: waiting for 192.168.1.1 to come up
Rank Owner Job Files   Total Size
1st  sebas 0   passwd  636 bytes
2nd  sebas 1   passwd  636 bytes
[shrek@pantano:~]$ lprm -Plp 1
donde lp es el nombre de la impresora.

ls: Lista todos los archivos del directorio que indiquemos.

-a, --all

Lista todos los archivos, incluidos los archivos de punto (.archivo)

-d, --directory

Lista solo los directorios.

-c

Lista los archivos ordenados desde la fecha más próxima a la del momento en que se ejecuta el comando.

-f

No ordena los archivos, los muestra según la ubicación en el disco.

--full-time

Muestra los archivos con todos los datos de tiempo.

-i, --inode

Imprime el índice de inodos de cada archivo.

--color=yes

Indica al comando ls que muestre los resultados en colores.

Para mayor información, mirar las páginas de manual.

man: Muestra las páginas de manual del comando o programa que se le pase como argumento. mail: Es un programa sencillo para el envió de e-mails, tanto en una red como en Internet. Siendo este un comando por demás de auto explicativo y que en su mayoría solo se utilizara para realizar rápidos mensajes de email, se recomienda la lectura de las páginas de manual para poder ver todos los alcances que tiene.

mkdir: Crea directorios nuevos. Se deberá indicar luego del comando el directorio o los directorios a crear.

[shrek@pantano:~]$ mkdir cartas
Se creara el directorio cartas en el directorio sebas

more: Es un filtro que mostrara por pantalla el archivo que le enviemos o que sea redireccionado a el y parara por cada pantalla mostrada. Opciones: -c Borra la pantalla antes de desplegar la información por pantalla. -d Mostrara los mensajes de error e indicara que hacer para solucionarlo.

mv: Mueve archivos y directorios. Existen tres formas para utilizar el mv y se muestran más abajo. La primera forma es cuando se quiere cambiar el nombre de un archivo. Supongamos que queremos cambiar el nombre del archivo1 a archivo2. Si archivo2 existe, este será borrado y en su lugar estarán los datos del archivo1. La opcion 2 es que lo que se quiera mover sea un directorio. Solo se podrá hacer si el nuevo nombre del directorio no existe. La tercera opción es cuando se quiere mover mas de un archivo a una ubicación particular. Existen para realizar esto las siguientes opciones:

-f

Fuerza la ejecución del comando mv aunque se trate de un proceso restringido como el borrado de un directorio.

-i

Habilita el proceso interactivo. Se podrá especificar el archivo o directorio que se quiere renombrar o mover.

passwd: Cambia o pone la clave de paso a un usuario. Solo el root podrá cambiar el password de otro usuario. El usuario podrá cambiar su propia clave con este comando.

ps: Mostrara información por pantalla de los procesos que están corriendo en ese comento. Opciones:

-a

Opción por defecto. Mostrará los procesos de los cuales el usuario es el dueño.

-x

Mostrará absolutamente todos los procesos que se estén ejecutando.

-f

Mostrará la jerarquía de los procesos mostrando los padres de cada uno y sus descendientes.

pwd: Mostrará la ruta del directorio donde estamos parados actualmente.

[shrek@pantano:~]$ cd /usr/local/bin
[shrek@pantano:/usr/local/bin]$ pwd
/usr/local/bin
[shrek@pantano:~]$

rm: Remueve archivos y directorios. Opciones:

-i

Pregunta antes de borrar cada archivo.

-f

Fuerza el borrado de una archivo sin mostrar los mensajes de error.

-r

Borrado recursivo.

rmdir: Borra directorios. Las opciones anteriores también se aplican.