El shell (caparazón) de un sistema operativo es la interfaz que media entre el usuario y el sistema operativo. Básicamente, su función es la de interpretar, ejecutar y devolver una respuesta a lo que el usuario escribe por línea de comandos.
El shell, en definitiva, no es más que un ejecutable que interpretar los comandos transmitirlos. Existen varios tipos de shell:
- sh: Bourne shell
- bash: Bourne again shell
- csh: C shell
- ksh: Korn shell
El shell predeterminado de cada usuario se especifica al momento de su creación o bien, editando el último campo de la línea del usuario en el archivo /etc/passwd. Eso no quita, que el usuario, desde un shell no pueda ejecutar otro.
La línea de comando o prompt puede depender de la configuración propia del shell o de la configuración del usuario. Esta línea de comando puede terminar en:
- $: define a un usuario “normal”
- #: indica el root (superusuario o administrador)
La línea de comandos no es más que una cadena de caracteres que representan a un comando y que luego será interpretada por el shell. El comando suele ser un archivo ejecutable del sistema o del shell junto con otros argumentos opcionales (parámetros).
E/S estándar
Ejecutado un comando, se crea un proceso y con él, tres flujos:
- Entrada estándar (stdin): es por donde el proceso lee los datos (en forma predeterminada el teclado) aunque puede tratarse de cualquier otro dispositivo o de un archivo también.
- Salida estándar (stdout): es por donde el proceso escribirá la salida, por defecto es la pantalla, aunque también puede tratarse de otro dispositivo o de un archivo.
- Error estándar (stderr): es por donde el proceso escribirá los mensajes de error, de igual forma al stdout, por defecto es la pantalla, aunque también puede tratarse de otro dispositivo o de un archivo.
stdin, stdout y stderr se suelen identificar con los números 0, 1 y 2.
Redirecciones
La E/S estándar se puede redirigir a archivo, lo que suele resultar bastante útil.
- > redirige la salida estándar al archivo que se ubique a su derecha, este archivo es sobrescrito para el caso que exista o creado en caso contrario.
- >> agrega al archivo de su derecha el resultado de la salida estándar
Por ejemplo, para redirigir a un archivo el resultado de un ls:
ls -rtl > /tmp/dir_tmp.txt
- Para redirigir el error estándar, habría que anteceder al > con el número 2, es decir 2>.
- El caracter <, indica la redirección de la entrada estándar.
Por ejemplo, para redirigir el contenido de un archivo al comando cat:
cat < /tmp/dir_tmp.txt
- La utilización de la redirección << permite la lectura de la entrada estándar, hasta que se encuentre la cadena indicada a la derecha de los signos.
Por ejemplo: para leer la entrada estándar hasta que se encuentre la palabra STOP.
cat << STOP
Pipes
Finalmente, el uso de pipes (especificados con la barra vertical |) permite asignar la salida estándar de un comando a la entrada del otro y así sucesivamente cuantas veces se quiera.
Por ejemplo: para realizar un listado de archivos de un directorio y luego ordenarlo:
ls -al /tmp/ | sort
Por ejemplo, para contabilizar la cantidad de archivos de un directorio que contienen la palabra tar:
ls -l /tmp | grep tar | wc -l
O bien, si queremos un ejemplo algo más elaborado, puedes conocer el Top 5 de los comandos más utilizados.
Vía: Kioskea.net



