Está en la página 1de 9

Conceptos Fundamentales sobre UNIX

Laboratorio 14.3.4 – Funcionalidades de los Shells Korn y Bash


(Tiempo estimado: 45 min.)

Objetivos:

• Desarrollar una comprensión de las funcionalidades de los shells Korn y Bash


• Repasar el shell
• Repasar los alias
• Crear alias
• Mostrar alias
• Borrar y pasar por alto un alias
• Mostrar el historial de comandos
• Re-ejecutar comandos
• Editar la línea de comandos
• Completar un nombre de archivo
• Personalizar el prompt del shell del alumno

Trasfondo:
En este laboratorio, el alumno trabajará con el shell Korn o Bash, o ambos, para comprender sus
funcionalidades y capacidades. El shell es la interfaz del usuario principal en un sistema UNIX. El
concepto de shell se introdujo en el Capítulo 1 junto con otros componentes clave del sistema
operativo UNIX tales como el kernel y el sistema de archivos. El entorno UNIX proporciona soporte
para muchos shells incorporados, por ejemplo Bourne, Korn, Bash y C, y shells de terceros. Este
laboratorio proporciona un breve repaso de la función del shell y se concentra en los shells más
populares utilizados hoy en día en los sistemas UNIX, los shells Korn y Bash. El laboratorio detalla
las características únicas de cada shell y brinda oportunidades para convertirse en un usuario más
eficiente. En este laboratorio el alumno trabajará con alias, historial, re-ejecución de comandos y
prompts personalizados.

Herramientas / Preparación:
a) Antes de iniciar este laboratorio, el alumno deberá repasar el Capítulo 14, Sección 1 –
Repaso del Shell, Sección 2 – Funcionalidades Adicionales del Shell, y Sección 3 –
Variables del Shell y Prompts Personalizados.
b) El alumno necesitará lo siguiente:
1. Una ID de login de usuario, por ejemplo user2 y contraseña asignadas por el
instructor.
2. Una computadora que funcione con el sistema operativo UNIX y los shells Korn o
Bash.
3. Computadoras en red en el aula con el sistema de archivos de la clase instalado.

Notas:
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________

1–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
_______________________________________________________________________________
Utilice el diagrama del árbol de directorios del sistema de Archivos de la Clase para que lo
asista en este laboratorio.

Estructura del Árbol de Archivos de la Clase

Paso 1. Hacer login al CDE.


Haga login con el nombre de usuario y la contraseña que le fueron asignados por su instructor en el
recuadro de entradas del CDE.

Paso 2. Acceder a la Línea de Comandos.


Haga clic con el botón derecho en el fondo del espacio de trabajo y haga clic en Tools (Herramientas).
Seleccione Terminal desde el menú para abrir una ventana de terminal.

Paso 3. Repaso sobre el shell.


Un shell es una interfaz entre el usuario y el kernel. El shell actúa como intérprete o traductor. En
otras palabras, el shell acepta los comandos emitidos por el usuario, interpreta estos comandos, y
ejecuta los programas apropiados. Los shells pueden ser dirigidos por la línea de comandos, o
pueden ser gráficos. El administrador del sistema decide qué shell será el shell por defecto de un
determinado usuario cuando crea la cuenta del mismo. Este laboratorio se concentrará en los shells
Korn (ksh) y Bash, que son los shells más ampliamente utilizados en Solaris y Linux. El alumno
puede utilizar el comando ps (process status – procesar estado) para ver qué shell se está utilizando
o puede tipear: echo $SHELL.

Shell Bourne ($): el shell Bourne fue el programa de shell original para el entorno UNIX.
Stephen Bourne desarrolló el shell Bourne para el entorno UNIX AT&T System V.2. Este
shell no soporta los comandos alias o history ni capacidades de edición desde la línea
de comandos y es utilizado principalmente por los administradores de sistemas. El prompt
del shell Bourne es un signo dólar ($).

Shell Korn ($): el shell Korn es un superconjunto del shell Bourne y fue desarrollado por
David Korn en los Laboratorios Bell. El shell Korn tiene muchas de las funcionalidades del
shell Bourne más otras adicionales tales como el uso de alias, historial y edición desde la
línea de comandos. Éste es el shell más ampliamente utilizado y es el estándar industrial
para los usuarios de sistemas. El prompt del shell Korn es también un signo dólar ($).

2–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
Shell C (%): shell basado en el lenguaje de programación C. Al igual que el shell Korn, el
shell C posee funcionalidades adicionales tales como el uso de alias e historial. El shell C
fue desarrollado por Bill Joy de Sun Microsystems y aún hoy se lo utiliza ampliamente. El
prompt del shell C es un signo de porcentaje (%).

El Shell Bourne-Again, o bash ($), tiene la apariencia de los shells Bourne y Korn e incorpora
funcionalidades de los shells C y Korn. Bash es el shell más popular en Linux y es el shell por defecto
para la mayoría de las distribuciones. El prompt del shell Bash es también un signo de dólar ($).
Utilizando la información ya expuesta, complete los espacios en blanco en las siguientes oraciones.

a. Un shell actúa como intérprete o traductor entre el usuario y el kernel.

b. El shell por defecto para un usuario típico es decidido por el administrador del sistema.

c. El alumno puede determinar qué tipo de shell se está utilizando emitiendo el comando
ps.

d. El Shell C (%) se basa en el lenguaje de programación C y fue desarrollado por Bill Joy
de Sun Microsystems. Este shell utiliza el signo de porcentaje (%) como prompt.

e. El shell Bourne ($) fue el shell original y no soporta el uso de alias o historial.

f. Los shells Korn ($) utilizan el signo dólar ($) como prompt y soporta el uso de alias,
historial y edición desde la línea de comandos.

Paso 4. Repaso de los alias.


Un alias es una forma de dar a un comando un nombre diferente para su uso en el shell. Los alias
proporcionan una excelente forma de mejorar la eficiencia y productividad en el uso de los comandos
del shell. Cuando se los configura desde la línea de comandos, los alias sólo se activan para el shell
en el cual se los creó. Agregar alias a los archivos del alumno .kshrc o .bashrc, tema que se tratará
en el siguiente laboratorio, los activará al hacer login o cada vez que se abre una nueva ventana o
shell.

Formato del Comando: alias nombre_del_alias=valor

No hay espacios entre el comando alias, el signo igual (=), y el comando o comandos a los cuales
se les asigna el alias. Utilice comillas simples para los comandos que posean opciones, espacios u
otros caracteres especiales. Vea los ejemplos que se muestran más abajo.

Las razones por las cuales se utilizan los alias se resumen a continuación, junto con algunos
ejemplos acerca de cómo crearlos. La sintaxis que se muestra aquí funciona sólo con los shells Korn
y Bash.

Sustituir un comando corto con uno largo. El alumno puede reducir la cantidad de teclas
presionadas en los comandos comúnmente utilizados creando un alias para el comando.
Ejemplo: $ alias c=clear

3–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
Crear un único comando a partir de una serie de comandos. El alumno puede encadenar
varios comandos y asignar a los comandos un nombre de alias corto para reducir la cantidad
de teclas presionadas.
Ejemplo: $ alias home=’cd;ls’

Crear formas alternativas de comandos existentes. Algunos comandos tales como rm


(borrar archivos y directorios) y cp (copiar archivos) pueden ser peligrosos. Un alias permitirá
al usuario cambiar el significado de estos comandos para que incluyan la opción -i para que
se le pregunte al usuario antes de sobrescribir accidentalmente un archivo o directorio.
Ejemplo: $ alias copy=’cp -i’

Utilizando la información anterior, complete los espacios en blanco en las siguientes oraciones.

a. Un alias es una forma de dar a un comando un nombre diferente para su uso con el
shell y puede resultar en un incremento de la productividad.

b. Cuando se los configura desde la línea de comandos, los alias sólo son activados por el
shell en el cual se los creó.

c. Utilice comillas simples para los comandos con opciones, espacios u otros caracteres
especiales.

d. No hay espacio entre el comando de alias, el signo igual (=) y el o los comandos
asignados al alias.

Paso 5. Crear alias.

a. Cree un alias llamado h, letra h minúscula, para sustituir al comando history. ¿Qué
comando se utilizó? alias h=history

b. Pruebe el nuevo alias h. ¿Qué es lo que hace? Me da el historial

c. Cree un alias llamado p, letra p minúscula, que muestre cada proceso que se esté
ejecutando en el sistema con un listado completo y de a una pantalla a la vez. ¿Qué
comando se utilizó? alias p=”ps -ef | more”

d. Pruebe el nuevo alias p. ¿Qué es lo que hace? Crea un listado en páginas de lo


ejecutado del sistema.

e. Cree un alias llamado mv que sustituya con el comando mv -i el comando mv para


evitar sobrescribir accidentalmente los archivos al moverlos. ¿Qué comando se utilizó?
alias mv=”mv -i”

f. Pruebe el nuevo alias mv. Primero copie el archivo dante en el directorio practice, luego
intente mover dante al directorio practice utilizando el alias mv. ¿Qué es lo que hace?
Se sobreescribe el archivo

Paso 6. Mostrar los alias.

4–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
Para mostrar los alias, utilice el comando alias sin argumentos/opciones. El uso del comando
alias sin opciones mostrará todos los alias configurados para la sesión actual. Algunos alias están
pre-definidos en el shell Korn.

a. Muestre todos los alias de la sesión actual del alumno. ¿Pueden verse ahora todos los
alias creados previamente? Si se puede ver todos los alias.

b. Utilice el comando alias y utilice el pipe para dirigir el resultado al comando wc –l.
Esto contará las líneas de resultado del comando alias. Sustraiga las que creó el
alumno del total. ¿Cuántos otros alias estaban predefinidos como parte del shell Korn
del alumno? 8

Paso 7. Borrar y pasar por alto un alias.


El alumno puede desconfigurar un alias previamente definido por medio del comando unalias. Esto
borrará el alias que el alumno ya no desea utilizar y el alias ya no aparecerá en el listado de alias.

Formato del Comando: unalias nombre_del_alias

a. Borre o desconfigure el alias h que el alumno definió previamente. ¿Qué comando se


utilizó? unalias h

b. Muestre todos los alias para la sesión actual del alumno. ¿Puede verse el alias h?
Ya no puede verse

c. El alumno también puede pasar por alto temporalmente un alias. Para pasar por alto el
alias y utilizar la versión original de un comando, utilice una barra invertida antes del
comando ($\rm file1 file2). Por ejemplo, el alumno dispone de un alias rm que
ejecuta el comando rm –i y tiene que borrar muchos archivos y no desea que se le
pregunte por cada uno. El alumno puede pasar por alto el alias rm para que al utilizar el
comando rm, éste no se ejecute con la opción interactivo –i.

d. Utilice la opción de pasar por alto el alias mv que el alumno creó previamente y utilice la
versión original del comando mv para mover el archivo dante desde el directorio practice
al directorio home del alumno. ¿Hubo un prompt antes de sobrescribir? \mv dabte
practice/

e. Tipee exit en la línea de comandos para cerrar la ventana terminal actual del alumno y
luego iniciar otra nueva ventana terminal. Introduzca el comando alias para mostrar los
alias actualmente definidos para esta sesión. ¿Aparece ahora alguno de los alias que el
alumno definió previamente? No ¿Por qué o por qué no?
Solo duran para el Shell que los creo y si se cierra ya no existen.

Paso 8. Mostrar el historial de comandos.


La funcionalidad history (historial) registra los comandos tipeados en el shell. En el shell Korn, history
se configura automáticamente cuando el usuario entra al shell por primera vez. Cada vez que el
usuario tipea un comando, esta función lo registra como evento en un archivo de historial. El shell
Korn mantiene un registro de los últimos 128 comandos introducidos pero sólo muestra los últimos
16 comandos por defecto. La cantidad de últimos comandos introducidos que registra el shell Bash
es determinado por la variable HISTSIZE y puede ser tan alta como 1000. Tipee echo $HISTSIZE
para determinar la cantidad actual.

5–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
Formato del Comando: history [opciones]

Para exhibir una lista de los últimos 10 comandos en el shell Korn utilice history –10. El comando
equivalente en Bash es history 10, sin el guión.

Introduzca el comando history sin opciones. ¿Cuál fue el resultado? Un historial de los
comandos usados.

a. Muestre las últimas 5 líneas del historial. ¿Cuál fue la última línea mostrada?
Los últimos 5 comandos usados.

Paso 9. Repetición de comandos.


El comando r (re-ejecutar o repetir) es uno de muchos alias predefinidos del shell Korn. Éste permite
al usuario repetir comandos a partir del listado del historial. Bash utiliza el comando !! para repetir
comandos anteriores.

Shell Bash Shell Korn Acción


!! r Repite el comando anterior
!5 r5 Repite el evento número 5
! -2 r -2 Repite el anteúltimo comando
! ls r ls Repite el último comando a partir de ls
cd !$ No hay Cambia de directorio al último argumento de
equivalente la línea de comandos anterior
rm !* No hay Borra los archivos utilizados como
equivalente argumentos en la línea de comandos previa

a. Tal como se lo mencionó anteriormente, el comando r es un alias predefinido del shell


Korn. Introduzca el comando alias. Examine el listado de alias, ¿qué comando ejecuta
realmente el alias r? sistema Si el alumno deseara saber más acerca del comando fc,
¿qué podría hacerse al respecto? echo fc.

b. Ejecute los siguientes comandos de a uno a la vez en una línea de comandos separada:
ls –l, date, echo HI, clear, ls, cal. Ahora introduzca el comando history.
Identifique el número de comando de uno de los comandos anteriores. ¿Cuál era el
número de comando y el comando? 651 ls -l, 652 date, 653 echo HI, 654 clear, 655 ls,
656 cal y 657 history

c. Repita ese comando utilizando el comando repeat para el shell que está utilizando y el
número de línea del historial. ¿Utilizaba re-ejecución el comando anterior? Si se hizo el
comando anterior.

d. Repita un comando anterior que se inicie con la letra ’a’. Esto repetirá el comando alias
en este caso. ¿Qué comando se utilizó? repeat a*

e. Experimente con alguno de los otros comandos de repetición de la tabla que figura más
arriba.

Paso 10. Editar desde la Línea de Comandos.


El modo de edición en-línea permite al alumno editar un comando anterior en la línea de comandos
actual utilizando el teclado a partir del editor preferido por el alumno. Esto es de ayuda cuando el

6–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
usuario desea alterar una línea de comandos previamente ejecutada, y en ocasiones larga, en lugar
de volver a tipearla. Cuando se la habilita, esta funcionalidad sólo se activa para el shell actual. Esta
característica se configura y se utiliza de la misma manera tanto en el shell Korn como en el Bash.

Formato del Comando: set [-+]o vi o set [-+]o emacs

El uso de set –o vi activa la edición de la línea de comandos y especifica vi como el editor preferido
del usuario mientras que set +o vi la desactiva. Una vez que se ha activado la edición, presionar la
tecla Esc activa el editor en-línea. El usuario tiene entonces acceso a los comandos de vi para
navegar a través de la lista del historial y modificar comandos previamente ejecutados. La siguiente
tabla muestra algunos de los comandos de edición de línea vi más comúnmente utilizados. Nota:
las teclas de flechas no pueden utilizarse para reposicionar el cursor durante la edición en-línea.

Comandos de Edición en Línea de Comandos


Comando vi Significado
k Se desplaza hacia atrás a través de la lista del
historial
j Se desplaza hacia delante a través de la lista
del historial
l Se desplaza hacia la derecha un carácter
h Se desplaza hacia la izquierda un carácter
i Inserta caracteres
r Reemplaza un carácter
cw Cambia una palabra
x Borra un carácter

a. Introduzca un comando tal como: more dir1/coffees/beand donde el nombre del


archivo beans está mal escrito. Presione Enter y recibirá un mensaje de error.

b. Active la edición en la línea de comandos para que el alumno pueda editar la línea de
comandos anterior. Presione Esc para introducir el modo de comandos de vi. Presione
k para desplazarse hacia arriba (‘kick up’) a través del historial de comandos hasta que
el alumno llega al comando que tenía un error en él.

c. Utilice los comandos vi de la tabla que figura más arriba para moverse al carácter del
comando y presione r para reemplazar la letra d con la letra s. Presione Enter para
ejecutar el comando. ¿Se ejecutó correctamente el comando esta vez?
____________________

d. Practique el uso de la funcionalidad de edición desde la línea de comandos volviendo a


invocar y editando líneas de comando anteriores.

7–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
Paso 11. Completar nombres de archivos.
Tanto el shell Korn como el Bash contienen otra funcionalidad que completa el nombre de un archivo
o comando. El comando set –o vi activa tanto la edición desde la línea de comandos como las
funcionalidades para completar nombres de archivo. Tipee los primeros caracteres de un nombre de
archivo o comando seguido por una secuencia específica de teclas para instruir al shell para que
complete el resto del nombre de archivo o comando.

Para utilizar esta funcionalidad para completar un nombre de archivo:

1. Tipee un comando, tal como ls, cat, rm, etcétera, seguido de uno o más caracteres de
un nombre de archivo.

2. Presione las teclas Esc y barra invertida (Esc\) en orden secuencial, para el shell Korn, o
la tecla Tab, para el shell Bash.

Si el shell encuentra más de un archivo en el directorio actual que comience con las letras
introducidas, el alumno puede introducir el carácter o los caracteres siguientes del nombre de archivo
deseado. Luego presione Esc\ en el shell Korn o Tab en el shell Bash.

Otra forma de utilizar esta funcionalidad es solicitar al shell que muestre un listado de archivos que
coincida con el nombre de archivo introducido. Para mostrar esta lista utilice Esc= en el shell Korn o
TabTab, introducida dos veces, en el shell Bash. Cuando el archivo deseado se determina a partir
de la lista, reintroduzca el comando utilizando uno o dos caracteres adicionales y luego presionando
Esc\ o Tab nuevamente.

a. Cámbiese al directorio home del alumno.

b. Copie el archivo file1 al archivo file1.january. Haga otra copia nombrándolo file1.february
y nuevamente nombrando al nuevo archivo file1.march.

c. Tipee ls –l file1 seguido de las teclas [Esc]= (ksh) o Tab dos veces (bash). ¿Mostró el
shell una lista de archivos a partir de file1? Si

d. ¿Qué teclas tipearía el alumno junto al archivo file1.february sin tipear el nombre de
archivo completo? ________________________________

Paso 12. Personalizar el prompt del shell del alumno.


Los shells Korn y Bash utilizan el shell Bourne como base para sus funcionalidades. Estas
funcionalidades compartidas incluyen un archivo de inicialización de login y variables. Éste es un
placeholder o marcador de posición para la información utilizada para personalizar el shell. Además,
los shells Korn y Bash proporcionan uso de alias, rastreo de comandos y edición desde la línea de
comandos, que el alumno ha venido utilizando en este laboratorio. Estas funcionalidades permiten
al usuario ser más productivo. El archivo de inicialización que se utiliza para almacenar esta
información se trata en el siguiente laboratorio.

El prompt por defecto para los shells Korn y Bash es el signo de dólar ($). El usuario puede
personalizar su propio prompt del shell según su elección utilizando la variable del prompt del shell
predefinida PS1 (Prompt String 1 – Cadena del Prompt 1) (PS1=$). PS1 puede incluir un amplio
rango de expresiones tales como cadenas de caracteres, comandos u otras variables. La variable
PS1 es una variable del shell. Cualquier cambio en la configuración de la variable permanecerá hasta
que se salga del shell o hasta que se abra un subshell. Para hacer disponible el prompt personalizado

8–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.
de una sesión a la siguiente, coloque la variable PS1 en el archivo .kshrc o .bashrc. Esto se tratará
en el siguiente laboratorio.

Formato del Comando: PS1=valor

a. Las siguientes son varias formas en las cuales puede personalizarse el prompt estándar
PS1 ($). Pruebe cada una de ellas y luego experimente con algunas de las opciones
propias del alumno.

$ PS1="Good morning$ "


Asigna el prompt a una cadena de caracteres. Reemplace “Good morning” con una
opción propia del alumno.

$ PS1="`uname -n` !$ "


Utiliza un comando (uname –n) con el número de línea del historial (!) para un prompt
único. Este comando hace que el prompt muestre el nombre del host en el cual el usuario
está trabajando. Un ejemplo sería saturn41. Los acentos graves (`) se utilizan para
sustituir el resultado del comando uname en lugar de interpretarlo literalmente. La
cadena completa está rodeada por comillas dobles.

$ PS1="$ "
Configura el prompt de nuevo al shell Korn original de signo de dólar ($) con un espacio
después de él.

$ PS1=’$PWD $’
El prompt contendrá el directorio de trabajo actual. Las comillas simples que rodean a la
cadena que contiene la variable PWD ($PWD) le indican al shell que evalúe el valor
actual de la variable PWD cada vez que cambia el directorio de trabajo.

Para configuraciones de prompt simples en el shell Bash la variable PS1 puede configurarse a:

• \u para el nombre de usuario [username]


• \d para la fecha [date]
• \h para el nombre de host [hostname]
• \$ para el signo dólar
• \W para el directorio de trabajo [working directory]

PS1=\u@\h\$, por ejemplo, resultaría en un prompt similar a jamie@colorado$.

Paso 13. Borrar los archivos y directorios creados en este laboratorio.


Borre todos los archivos y directorios creados en el directorio home del alumno durante este
laboratorio.

Paso 14. Cerrar la ventana de terminal y hacer logout.


Haga doble clic en el botón de raya que se encuentra en el extremo superior izquierdo de la pantalla,
luego haga clic en el ícono EXIT (SALIDA) del panel frontal.

9–9 Conceptos Fundamentales sobre UNIX 2.0—-Laboratorio 14.3.4 Copyright © 2002, Cisco Systems, Inc.

También podría gustarte