Unix / Linux

a) Breve descripción de Unix / Linux

Unix es un sistema operativo poderoso desarrollado originalmente en los laboratorios Bell de AT&T. Es muy popular debido a sus características de multiusuario y multiprocesamiento, flexible y portable. Listo para operar en red, con apliaciones como el correo electrónico, editores, compiladores, bibliotecas, graficadores,  y otras muchas más de uso específico

Actualmente el sistema de mayor uso es Linux, un clon gratuito de Unix, desarrollado desde cero y mantenido por voluntarios en todo el mundo. Existen diversas distribuciones de Linux, las más conocidas son las derivadas de RedHat, Debian, Slackware entre otras. En la red del IRyA se ha optado por las distribuciones Fedora y Centos, derivadas de RedHat, ya que son las más compatibles con los programas que se usan en nuestra red.

Unix está compuesto de capas. La primera es el kernel, la cual corre en la máquina e interactúa y maneja al hardware. Todas las aplicaciones y comandos en Unix interactúan con el kernel en lugar de el hardware directamente, esto hace una segunda capa. En la parte mas alta de las apliaciones y comandos se encuentra el "programa interprete de comandos": el shell, quien es el que maneja las interacciones entre el usuario, sus aplicaciones y los comandos Unix disponibles en el sistema. Una tercera capa, que puede no estar en el sistema, es el ambiente gráfico de ventanas, como el X. El sistema de ventanas usualmente interactúa con el shell, pero puede interactuar directamente con las aplicaciones.

b) Elementos básicos de Unix

Es necesario familiarizarse con los 6 elementos básico de Unix:

  1. comandos  son las instrucciones que les das al sistema para decirle que es lo que quieres hacer.
  2. archivos son una colección de datos con un nombre dado
  3. directorios es análogo a un archivero, que contiene muchos archivos o directorios, cada directorio tiene un nombre tambien. Tanto para los archivos como para los directorios, los nombres pueden constar de 1 a 256 caracteres
  4. tu ambiente  es una colección de parámetros que describe o modifica como tu sesión de cómputo va a ser llevada a cabo, contienen cosas tales como donde están los comandos o aplicaciones en la computadora, a que impresora envias a imprimir, etc
  5. procesos es un comando o apliación que está corriendo en la computadora. La secuencia de instrucciones dadas a la computadora al momento en que iniciaste una tarea en particular y hasta que lo terminas
  6. trabajos Un trabajo puede contener a uno o mas procesos

c) Acceso al Sistema

Sesiones en Unix

Para poder usar el sistema, se requiere primeramente entrar a una sesión, para lo cual se debe estar dado de alta mediante un nombre de usuario (login) y una contraseña  (password").

Cuando se accede desde la consola (esto es en la computadora física) se tien el ambiente gráfico operando, por lo que aparecerá una ventana con la leyenda "login:" en este campo introduzca su nombre de usuario y a continuacion te pide el "Password",  esta es la contraseña que solo tu conoces y que no se muestra en la pantalla. Si la clave es correcta se inicia la sesión, en caso contrario hay que intentarlo de nuevo.

Es importante recordar que Unix es un sistema que diferencía entre mayúsculas y minúsculas, tanto el login como el password deben ser escritos respetando el tipo de caracter, de lo contrario no será posible accesar al sistema. Cuando el login o el password no corresponden, el sistema manda el mensaje "Login failed, please try again," y hay que intentarlo de nuevo.

Para cambiar tu password usa el comando "yppasswd" desde alguna terminal (shell de comandos). El sistema solicitará el password actual,  luego en nuevo password dos veces. Ninguno de los password será desplegado en pantalla. Es recomendable cambiar el password la primera vez que se entra a sesión y después periódicamente, tratando de usar un password seguro, algunas sugerencias son:

  1. El password debe ser de 8 o más caracteres
  2. Usar una combinación de caracteres alfanuméricos (aBz146) y especiales (#%&+\) de tal forma que no sea facilmente "adivinable"
  3. No usar nombres propios, de mascotas, de lugares o palabras del diccionario
Para cambiar el shell por default usar el comando: yppasswd -l
El sistema pedirá que se introduzca el password actual, en seguida el nuevo shell, este debe ser uno válido:
/bin/csh
/bin/tcsh
/bin/bash
/bin/sh

Si el cambio se realizó correctamente el sistema enviará el mensaje:

The login shell has been changed on jurhiata.crya.privado.

 

Comandos en Unix

Unix tiene una gran variedad de comandos que permite manipular no solo los archivos y datos, sino también el ambiente de trabajo. Un comando en Unix consiste introducir el nombre del comando Unix seguido por sus argumentos (opciones) y <return>.

comando [-opciones] <return>

Reglas para los comandos en Unix

  1. Los comandos en Unix diferencian mayúsculas de minúsculas (case-sensitive), la mayoria son en letras minúsculas
  2. Los comandos en Unix pueden ser introducidos en el prompt del shell
  3. Los comandos en Unix deben terminar con un RETURN
  4. Las opciones en Unix generalmente inician con "-" (signo de menos)
  5. Se pueden incluir mas de una opción en la mayoria de los comandos

Redireccionando entrada y salida

En Unix la entrada estándar es el teclado y la salida es la pantalla. Unix es flexible y premite redireccionar tanto la entrada como la salida:

el ">" (redirecciona la salida)

date > salida

direcciona la hora y dia actual a un archivo llamado "salida". Recuerda que casa vez que se usa este comando redireccionadolo, el archivo de salida se sobreescribe, borrando lo anterior existente .

el ">>" (concatena a un archivo)

date >> salida  

(direcciona y concatena la salida a un archivo )

el "<" (redirecciona la entrada)

programa < datos

permite introducir los datos requeridos por un programa a través de un archivo de entrada en lugar de introducirlos desde el teclado, es importante darle el formato adecuado.

el "< >" (redireciona la entrada y salida)

programa < datos > salida

el archivo "datos" va a ser usado como entrada para el programa la salida será almacenada en el archivo "salida". Si se deseara acumular datos de diferentes corridas o programas use el ">>" para redireccionar la salida.

procesos

El comando ps muetra los procesos ejecutándose en el sistema, ejemplo:

root# ps -aux


USER   PID  %CPU  %MEM    SZ   RSS  TT   S   START   TIME  COMMAND

root    0    0.0   0.0     0      0  ?    T   Mar 02  0:01  sched

root    1    0.0   0.1  1224    352  ?    S   Mar 02  0:05  /etc/init -

root    2    0.0   0.0     0      0  ?    S   Mar 02  0:00  pageout

root   67    0.0   0.4  2296   1584  ?    S   Mar 02  0:00  /usr/lib/sysevent/


donde

USER es quien esta corriendo el proceso (usuario)
PID es el número de proceso que asigna el sistema al comando o programa que se esta ejecutando
%CPU es el porcentaje de CPU utilizado por el proceso
%MEN es el porcentaje de memoria RAM usado por el proceso
START nos dice la hora de inicio del comando
TIME el tiempo que lleva ejecutandose y
COMMAND el nombre de comando o programa.

Corriendo procesos en segundo plano (background)

En ocasiones no es necesario estar atendiendo el desarollo de algún comando o programa que se este ejecutando, cuando esto es posible, una forma de mantener corriendo un proceso sin tener que atenderlo es correrlo en "background", esto es, el proceso sigue ejecutandose normalmente sin que produzca alguna salida a pantalla. La forma de hacerlos es poniendo al final de la linea de comando el caracter "&", ejemplo:

comando &

con esto el proceso corre en backgroud, para ver los procesos en background use el comando "jobs" para regresar el proceso a foreground use el comando:  fg "job"

Prioridad de procesos

El comando "nice" es usado para determinar la prioridad de un comando. La prioridad de un proceso determina cuanto atención el sistema dara a determinado proceso, a mayor prioridad, un trabajo finalizará antes que otro igual pero con menor prioridad, ejemplo:

nice -19 comando &

La prioridades disponibles para los usuarios va de 1 a 19, 19 corresponde a la prioridad mas baja. En otras palabras, el valor más grande del comando nice corresponde a la prioridad mas baja.

d) Manipulando archivos y directorios

Archivos

Creación de archivos

Se verá ahora un poco más acerca de los archivos, para empezar, todos tienen un nombre, el cual pude estar compuesto por cualquier caracter, con excepción del "/" y tampoco se recomienda usar el "espacio", ya que dificulta su manejo. Se recomienda emplear letras minúsculas y nombres no muy largos, esto con el fin de evitar mayor esfuerzo al teclear. Cuando se pone un solo punto en medio del nombre del archivo, se le conoce a la parte derecha como extensión y con ello es mas facil identificar el tipo de archivo de que se trata. Asi por ejemplo, para los archivos tipo texto, se usa normalmente la extensión "txt". Unix no requiere extensiones, sin embargo su uso es para ayudar a identificar los diferentes tipos de archivos en el sistema. Algunos programas en Unix si requieren extensión (generalmente los compiladores), por ejemplo .h para archivos de cabecera, .c para archivos fuente de C, .f para fortran, .p para pascal y .s para ensamblador.

Algunos archivos empiezan con un punto (.), por ejemplo .cshrc o .login, este tipo de archivos no aparecen normalmente cuando se lista el directorio ya que para Unix son archivos (o directorios) ocultos, generalmente contienen información sobre el ambiente de trabajo y configuraciones.

Un conjunto específico de archivos y directorios es referido como un "sistema de archivos" (particiones), estos a su vez están relacionados con el tamaño y estructura del disco. Generalmente los usuarios tienen sus archivos y directorios en diversos sistemas de archivos.

Muchos archivos son creados usando un editor de texto, el cual permite introducir y guardar el texto, posteriormente podemos hacer correcciones, agregar texto, borrar, manipular el archivo. Los más usados son el vi, textedit, pico, emacs, etc. Sin embargo es posible crear un archivo sin usar un editor de texto. Esto es usando el comando "cat" y el simbolo ">" para redireccionar la salida, ejemplo:

cat > nuevo_archivo

nuevo_archivo es el nombre dado al archivo. El comando cat generalmente lee y despliega de la entrada y salida estandar, mediante el simbolo ">" se redirecciona la salida a un archivo. cat va a leer y escribir cada liena tecleada hasta que encuentre un caracter de fin de archivo. En el ejemplo anterior escriba algunas palabras y la tecla <return>, solamente se puede corregir sobre la misma linea usando la tecla DELETE. AL final de la ultima linea de <return> y luego CTRL-D. Para desplegar el archivo use "cat nuevo_archivo". Para archivos largos, puede usar el comando "more", el cual despliega por pantallas y espera hasta que presione la tecla "barra espaciadora" para avanzar a la siguiente pantalla o <return> para avanzar a la siguiente linea. Presinonado "?" muestra más ayuda.

Listando archivos

El comando "ls" lista los archivos en el directorio actual, que no empiecen con un punto.

ls -a             lista todo el contenido del directorio, incluyendo los archivos "ocultos"
ls -l              lista el contenido del directorio en formato largo, incluyendo permisos, tamaño, propietario
ls -F             lista el contenido del directorio e identifica a cada tipo de archivo (directorio, ejecutable, etc)
ls -t             ista el contenido del directorio y los ordena por fechas, primero los mas recientes

El comando "ls" permite combinar las diferentes opciones en una sola cadena. Cuando se tienen muchos archivos en un directorio, es útil el empleo de la barra vertical o pipa ( | ) ya que despliega el contenido del directorio por pantallas, ejemplo:

ls -altF | more

Manipulando archivos

Para copiar un archivo use el comando "cp"

cp fuente destino

donde "fuente" es el archivo que desea copiar y "destino" es el archivo copiado. Si el archivo "destino" ya existiera, el comando "cp" lo sobreescribiria perdiendose el anterior, es recomendable para usuarios con poca experiencia agregar la opción -i para obtener un prompt de confirmación antes de hacer la copia, por ejemplo:

cp -i fuente destino

Para renombrar o mover archivos use el comando "mv"

mv archivo archivo_nuevo

donde "archivo" es el archivo original y "archivo_nuevo" es el nuevo. Si el archivo "archivo_neuvo" ya existiera, "mv" lo reemplazaria, por lo que se recomienda usar este comando con la opción -i como en el caso de "cp".

Para borrar un archivo use el comando "rm"

rm archivo

Importante: "rm" puede ser muy peligroso, una vez borrado un archivo no es posible recuperarlo, usese con cuidado, es fuertemente recomendable usar este comando con la opción -i para obtener el prompt de confirmación.

Creando ligas, comando "ln"

Es posible referirse a un archivo en particular por diferentes nombres en diferentes directorios. El comando "ln" crea una liga que "apunta" al archivo. Nótese que las ligas son simplemente nombres alternativos para un solo archivos, "ln" no renombra el archivo (como "mv"), tampoco hace una copia (como "cp"), solamente permite accesar un archivo desde diferentes directorios o nombres. Cualquier cambio que se haga el el archivo se reflejara en sus ligas, si se borrara la liga, esto no borraria el archivo original. Para crear una "liga simbólica" en un mismo directorio use el comando:

ln -s archivo_original nombre_liga

Para crear una liga en un directorio diferente al del archivo original use:

ln -s archivo_original /otro/directorio/nombre_liga

en este caso es posible que archivo_original y nombre_liga tengan el mismo nombre ya que estan en directorios diferentes. Si alguien hiciera una liga a alguno de tus archivos y posteriormente tu borraras el archivo, esto le afectaria porque ya no podria accesarlo.

Permisos de archivos y directorios

Cada archivo o directorio en Unix tiene tres tipos de permisos (o protecciones), que definen si alguna acción puede ser llevada a cabo, los permisos son:

(r) lectura
Un usuario que tienen permiso de lectura de un archivo, puede ver su contenido o hacer una copia del mismo. Para directorios, permiso de lectura habilita a un usuarios a que despliegue el contenido de dicho directorio.
(w) escritura
Un usuario que tiene permiso de escritura para un archivo, puede alterarlo o borrar el contenido de dicho archivo. Para un directorio, el usuario puede crear y borrar archivos en ese directorio.
(x) ejecución
Un usuario que tiene permiso de ejecución para un archivo, puede ejecutar el contenido del archivo. Para un directorio, el permiso de ejecución da acceso al usuario a dicho directorio.

Para cada archivo o directorio, los permisos de lectura, escritura y ejecución debe ser definido para cada uno de las diferentes clases de usuarios:

(u) usuario
El usuario que es dueño del archivo o directorio
(g) grupo
Algunos usuarios explicitamente definidos que pueden conpartir archivos
(o) otros
todos los usuarios con acceso al sistema.

A continuación se muestra la salida del comando "ls -lgF":

-rwxr-xr-x 1 root sys 71 Oct 27 10:21 S99cls*
drwxr-xr-x 2 root sys 1536 Jan 16 16:55 admin/

Como se obsera, la primera columna corresponde a los permisos:

El primer caracter indica si se trata de un archivo (-) o directorio (d). Del 2 al 4 nos da los permisos del propietario; del 5 al 7 los permisos del grupo y los ultimos 3 para todos los demás.
La segunda columna indica el número de ligas que apuntan hacia ese archivo, en muchos casos el número es 1.
La tercera columna indica el propietario del archivo y la cuarta al grupo que pertenece.
La quinta columna indica el tamaño del archivo en bytes y la sexta la fecha de creación o modificación.
La séptima columna  dice el nombre del archivo.

El propietario del archivo puede cambiar los permisos del mismo mediante el comando "chmod", por ejemplo:

chmod ugo+x archivo

igualmente para negar algún permiso use el signo "menos" (-).

Otra forma de dar los permisos es mediante un número en octal de tres digitos, 1 es para dar el permiso y 0 para negarlo, esto da una serie de números binarios como en la siguiente tabla:

Símbolo Binario Octal
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

chmod 644 archivo

ls -l archivo

-rw-r--r-- 1 root 52791 Nov 14 12:13 archivo

Como se observa, es posible dar los permisos en forma numerica o en forma simbólica. Practiquese cualquier combinación deseada.

Caracteres comodines

El uso de caracteres comodines permite copiar, borrar, listar, mover, etc archivos y directorios:

el "?" corresponde a un caracter en el nombre de un archivo o directorio
el "*" corresponde a cualquier caracter (todos) dentro del archivo o directorio
s[aqz] corresponderá a sa, sq y sz
s[2-7] corresponderá a s2, s3, s4, s5, s6 y s7.
Se recomienda especial cuidado con el caracter "*" ya que hacer " rm *" borrará todos los archivos del directorio.

Directorios

Estructura jerárquica de directorios

Los directorios en Unix son similares a los archivos regulares; ambos tienen nombre y contienen información. Los directorios sin embargo contienen otros archivos y directorios. Muchas de las reglas y comandos que se aplican a los archivos se aplican a los directorios.

Todos los archivos y directorios en Unix estan ordenados en una estructura jerárquica arborea.

En la parte más alta se encuentra el directorio raíz, se le identifica con el simbolo "/" (una diagonal). Despues del directorio raíz se tienen los subdirectorios principales del sistema, generalmente: usr, dev, etc, lib, bin, tmp, opt, home. Por ejemplo el directorio /bin es un subdirectorio o "hijo" de "/". En este caso el directorio raíz ( / ) es el directorio "padre" del directorio bin. Cada ruta descendente termina con un archivo o directorio.

Muchos directorios en Unix tienen nombres y contenidos tradicionales. Por ejemplo, el directorio bin contiene archivos binarios, los cuales son archivos ejecutables y de aplicaciones. El directorio lib contiene archivos biblioteca (library), los cuales son una colección de rutinas usadas normalmente en programas por los compiladores. El directorio dev contiene archivos de los dispositivos del sistema (devices), los cuales son componentes de software de terminales, impresoras, discos, etc. El directorio tmp es para almacenamiento temporal, como cuando un programa crea un archivos durante su ejecución y al terminar lo borra. El directorio etc es para archivos de administración y confuguración miscelaneos y comandos. En sistemas grandes, es posible que esta estructura se repita a niveles inferiores, /usr/local es un buen ejemplo.

Directorio "home"

El directorio "home" es el directorio donde se inicia al entrar a una sesión, es el directorio más alto para la cuenta. El directorio "home" es en general del mismo nombre que la cuenta (login) del usuario, esto por razones administrativas/nemotécnicas.

Cada archivo y directorio en el sistema tiene una ruta para ser accesado, a partir del directorio raíz. Es posible referirse a un punto dentro de la estructura jerárquica de dos maneras: usando su ruta completa (o absoluta) o su ruta relativa. La ruta absoluta traza la posición completa del archivo o directorio desde raiz ( / ), usando diagonales ( / ) para conectar cada punto en la ruta. Por ejemplo la ruta completa para un archivo llamado "file2" podria ser /home/usuario/documentos/file2.

Las rutas relativas inician con el directorio actual ( o también llamado directorio de trabajo). Si /home/usuario fuera tu directorio de trabajo actual, entonces la ruta relativa para "file2" sería documentos/file2.

Si se usa el C shell, TC shell o el Bourne shell, Unix provee algunas abreviaciones para algunos directorios especiales. El caracter "~" (tilde) se refiere al directorio home. El directorio home de cualquier usuario puede ser abreviado de /home/usuario a ~usuario. Mas aún, puedes abreviar de /home/usuario/archivo a ~usuario/archivo. El directorio de trabajo actual se abrevia con un punto (.) y el directorio inmediato superior con dos puntos (..).

Al entrar a una sesión, el sistema Unix  inicia en el directorio home, el comando "pwd" despliegas la ruta completa del directorio home.

pwd /home/usuario

Como se ha visto, para mostrar el contenido de un directorio se usa el comando "ls", es posible abreviar con la tilde (~) para desplegar el directorio home. Usando las opciones adecuadas podemos obtener mas información, por ejemplo:

ls -F ~

la opción -F agrega una marca para distinguir los diferentes tipos de archivos: sin marca para los archivos regualres: "/" para directorios; "@" para ligas y "*" para ejecutables.

Para cambiarse de directorio se usa el comando "cd", asi por ejemplo cd ~/trabajos es equivalente a cd  /home/usuario/trabajos. En el primer caso usamos la abreviación (~) y en el segundo la ruta completa. Es posible abreviar al cambio de directorio home, esto es, si en algún momento dado te encuentras tabajando en algun directorio diferente al de tu home, es suficiente con que des el comando "cd" <return> sin argumentos para llegar a tu home.

Manipulando directorios

Para mover un directorio use el siguiente comando

mv directorio1 [/ruta/]directorio2

mueve a directorio1 a directorio2. Si este directorio1 contuviera archivos y directorios se conservan dentro de directorio2.

Para borrar un directorio, primero hay que situarse fuera de dicho directorio (arriba). Use el comando rmdir y el nombre del directorio para borrarlo. Con rmdir no es posible borrar directorios que no esten vacios, esto para prevenir destruir accidentalmente archivos o directorios útiles. Para borrar el contenido de dicho directorio, usar el comando rm y rmdir para borrar archivos y directorios respectivamente paso a paso. Hay otra forma de hacerlo rapidamente (aunque también peligrosa), el comando "rm -r" (la opción -r es recursiva), ejemplo:

rm -r trabajos

se borrarán el directorio trabajos y su contenido! Usese con moderación :).

e) Manuales en linea y lista de los comandos mas usados

Manuales en linea (man)

Unix tiene disponible manuales en linea conocido como "man pages", para accesarlos use el comando:

man nombre_comando

las páginas del manual contiene información sobre el comando, una descripción, opciones, ejemplos y referencias con otros manuales o documentación adicional. Use la opción -k hacer una busqueda aproximada en los manuales relacionados con algún nombre en común

man -k "cadena"

o use el comando "apropos" para obtener el mismo resultado.

Lista selecta de comandos

Comandos de inicio y estado

Comando
propósito
exit/logout
termina tu sesión de Unix
passwd
cambia el password, solicitandote el anterior y el nuevo dos veces
stty
fija las opciones de la terminal
date
despliega o fija la hora/fecha actual
finger
despliega información acerca de los usuarios
w
muestra quienes estan en sesión
ps
despliega información acerca de los procesos
env
despliega o cambia el ambiente de trabajo
set
comando de shell que fija las variables de la sesión
alias
comando de shell que define abreviaciones de comandos
history
comando de shell que despliega los últimos comandos ejecutados
telnet
permite conectarse a un sistema remoto
rsh
permite ejecutar un shell remoto
rlogin
permite accesar un sistema remoto
ssh
permite conectarse a un sistema remoto en forma segura
ftp/sftp
Transfiere archivos entre sistemas remotos/similar pero en forma segura
rehash
actualiza la variable de ambiente "path"
source
actualiza algún archivo, generalmente de configuración
which/where
muestra la ruta de algún comando o programa que esté en el path
xhost 
permite o inega el acceso al despliegue gráfico
sh/csh/tcsh/bash
tipos de shell
man
muestra los manuales en linea

Comandos de archivos y directorios

Comando
Propósito
cat
concatena y despliega archivos
more
muestra un archivo por pantallas, permite navegar a través del archivo de texto
touch
crea un archivo vacio o actualiza la fecha de uno existente
mv
mueve o renombra archivos 
cp
copia archivos
rm
borra archivos. NOTA: una vez borrado algún archivo no es posible recuperarlo, ¡tenga cuidado!
ls
lista el contenido de un directorio
mkdir
crea un directorio
rmdir
borra un directorio (vacio)
cd
cambia a otro directorio
pwd
muestra el directorio de trabajo actual
du
indica el espacio ocupado en disco
df
muestra el espacio ocupado y disponible del sistema
chmod
cambia el modo (permisos) de un archivo o directorio
file
determina el tipo de archivo
quota -v
despliega el espacio ocupado en disco por esa cuenta

Comandos para formateo e impresión

Comando
Propósito
lpr
envia un trabajo a la impresora
lpq
muestra los trabajos en la cola de la impresora
lprm
quita los trabajos de la cola de la impresora
lpstat
muestra información del estado de las impresoras
cancel
quita un trabajo de la cola de impresión
a2ps
combierte un archivo asscii en formato postscript
mpage
envia un archivo a la impresora, permite acomodar varias páginas por hoja impresa

Herramientas de edición

Comando
Propósito
vi
editor visual orientado a caracteres
pico
otro editor de texto de fácil uso
textedit
editor de texto, requiere ambiente gráfico OpenWindows
emacs/xemacs
editor de texto bastante poderoso, varias utilerias, requiere ambiente gráfico
diff
muestra las diferencias entre archivos
grep
busca una cadena o patrón en un archivo de texto (filtro)
sort
ordena las lineas en un archivo
wc
cuenta lineas, palabras y caracteres en un archivo
head
muestra las 10 primeras lineas de un archivo
tail
muestra las 10 últimas lineas de un archivo

Controles de programa, redireccionamientos y filtros

Comando
Propósito
CTRL-C
interrumpe el proceso o comando actual
CTRL-D
genera un carácter de fin de archivo o termina una sesión de shell
CTRL-S
detiene el flujo de salida a la pantalla
CTRL-Q
continua con el flujo de salida a la pantalla
CTRL-Z
suspende el proceso o comando actual
jobs
lista los trabajos en "background"
sleep
suspende la ejecución por un intervalo de tiempo (en segundos)
kill
ternima o reinicia un proceso
nice
corre un programa con baja prioridad
renice
altera la prioridad de un trabajo que esta corriendo
&
corre un proceso en "background" cuando se pone al final de la linea de comando
>
redirecciona la salida a un archivo
>>
redirecciona la salida al final de un archivo
<
redirecciona la entrada de un comando o programa
|
entuba la salida de un comando y la envia como entrada de otro
bg
corre un trabajo actual o específico en "background"
fg
regresa un trabajo actual o específico a "foreground"
!!
repite el último comando ejecutado