Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicio de
Creación, visualización y edición de archivos de texto
laboratorio
4.1 Redireccionamiento de la salida a un archivo o programa
Objetivos
Tras finalizar esta sección, los estudiantes deberían poder realizar lo siguiente:
Describir los términos técnicos "entrada estándar", "salida estándar" y "error estándar".
Un programa, o un proceso, en ejecución necesitan leer entradas desde alguna parte y escribir
salidas en la pantalla o en archivos. Un comando ejecutado desde shell prompt normalmente lee
su entrada desde el teclado y envía su salida a su ventana de terminal.
Un proceso usa canales numerados denominados descriptores de archivo para recibir entradas y
enviar salidas. Todos los procesos tendrán al menos tres descriptores de archivo para
comenzar. Entrada estándar (canal 0) lee entradas desde el teclado. Salida estándar (canal 1)
envía una salida normal a la terminal. Error estándar (canal 2) envía mensajes de error a la
terminal. Si un programa abre conexiones independientes para otros archivos, puede usar
descriptores de archivo con números superiores.
Nombre de Conexión
Número Descripción Uso
canal predeterminada
Entrada
0 stdin Teclado Solo lectura
estándar
Salida Solo
1 stdout Terminal
estándar escritura
Error Solo
2 stderr Terminal
estándar escritura
Otros Lectura y
3+ filename ninguno
archivos escritura
Ayuda
Uso Explicación
visual
descartar mensajes de
2> /dev/null error stderr mediante el
redireccionamiento a /dev/null
>file 2>&1
redirigir stdout y stderr para sobrescribir el
&>file
mismo archivo
>>file 2>&1
redirigir stdout y stderr para agregar al
&>>file
mismo archivo
Importante
Por esto, algunas personas prefieren usar los operadores de redireccionamiento de fusión:
Sin embargo, otros administradores de sistemas y programadores que usan además otras shells
relacionadas con bash ("shells compatibles con Bourne") para comandos para crear scripts piensan
que se deben evitar los operadores de redireccionamiento de fusión más nuevos, dado que no
están estandarizados ni implementados en todas aquellas shells y tienen otras limitaciones.
Los autores de este curso tienen una postura neutral respecto de este tema, y es probable que se
encuentren ambas sintaxis en el campo.
Detallar los nombres de archivos regulares y ocultos del directorio de inicio en un archivo.
[student@desktopX ~]$ ls -a > /tmp/my-file-names
En los siguientes ejemplos, se generan errores porque los usuarios normales no tienen
acceso a los directorios del sistema. Redirigir errores a un archivo mientras se visualiza la
salida de un comando normal en la terminal.
[student@desktopX ~]$ find /etc -name passwd 2> /tmp/errors
Una tubería es una secuencia de uno o más comandos separados por |, el carácter de tubería. Una
tubería conecta la salida estándar del primer comando con la entrada estándar del siguiente
comando.
Las tuberías permiten que la salida de un proceso sea manipulada y formateada por otros
procesos antes de su salida a la terminal. Una imagen mental útil es imaginar que los datos
"fluyen" a través de la tubería de un proceso a otro, y que son alterados levemente por cada
comando en la tubería a través de la cual pasan.
nota
Ejemplos de tuberías
Este ejemplo toma la salida del comando ls y usa less para mostrarla en la terminal de a una
pantalla por vez.
[student@desktopX ~]$ ls -l /usr/bin | less
La salida del comando ls se envía por tubería a wc -l, que cuenta la cantidad de líneas recibidas
de ls y la imprime en la terminal.
[student@desktopX ~]$ ls | wc -l
En esta tubería, head enviará las primeras 10 líneas de salida de ls -t, y el resultado final se
redirigirá a un archivo.
[student@desktopX ~]$ ls -t | head -n 10 > /tmp/ten-last-changed-files
Tuberías, redireccionamiento y tee
Cuando el redireccionamiento se combina con una tubería, la shell primero configura toda la
tubería y luego redirige la entrada/salida. Esto significa que si el redireccionamiento de la salida se
usa en el medio de una tubería, la salida irá al archivo y no al siguiente comando en la tubería.
En este ejemplo, la salida del comando ls irá al archivo, y less no mostrará nada en la terminal.
[student@desktopX ~]$ ls > /tmp/saved-output | less
El comando tee se usa para proporcionar soluciones alternativas para esto. En una
tubería, tee copiará su entrada estándar y además redirigirá su salida estándar a los archivos
denominados como argumentos para el comando. Si imagina los datos como agua que fluye a
través de una tubería, puede visualizar tee como una junta en T en la tubería que dirige la salida
en dos direcciones.
Si se usa tee al final de una tubería, la salida final de un comando se puede guardar y enviar a la
terminal al mismo tiempo.
[student@desktopX ~]$ ls -t | head -n 10 | tee /tmp/ten-last-changed-files
Este ejemplo más sofisticado aprovecha el hecho de que existe un archivo de dispositivo especial
que representa la terminal. El nombre del archivo de dispositivo para una terminal específica
puede determinarse mediante la ejecución del comando tty en su shell prompt. Luego, se puede
usar tee para redirigir la salida a ese archivo para mostrarla en la ventana de terminal, mientras
que la salida estándar se puede pasar a algún otro programa a través de la tubería. En este
caso, mail enviará por correo electrónico la salida a student@desktop1.example.com.
[student@desktopX ~]$ tty
/dev/pts/0
[student@desktopX ~]$ ls -l | tee /dev/pts/0 | mail student@desktop1.example.com
Importante
El error estándar puede redirigirse a través de la tubería, pero no se pueden usar los operadores
de redireccionamiento de fusión (&> y &>>) para esto.
La siguiente es la manera correcta de redirigir la salida y el error estándar a través de una tubería:
Referencias
Páginas de manual bash(1), cat(1), head(1), less(1), mail(1), tee(1), tty(1), wc(1)
4.2 Práctica: Redirección y canalizaciones de entrada y salida
Establezca una coincidencia entre los siguientes elementos y sus equivalentes de la tabla.
Arrastre y suelte los elementos en la celda junto a la respuesta correcta. Cada celda debe contener
una respuesta. Si usted desea modificar una respuesta, arrástrela a otra ubicación, o haga clic
en Restablecer para que la evaluación regrese a su configuración inicial.
Una vez que haya finalizado el cuestionario, haga clic en Check (verificar). Las respuestas correctas
tendrán un fondo azul y las respuestas incorrectas estarán tachadas. Si desea intentar de nuevo,
haga clic en Restablecer. Nota: Si tiene problemas para que la evaluación funcione por segunda
vez, intente actualizar el explorador. Haga clic en Mostrar Solución para ver todas las respuestas
correctas.
Sintaxis de redirección
Resultado necesario
usada
Objetivos
Tras finalizar esta sección, los estudiantes deberían poder realizar lo siguiente:
Crear archivos nuevos y editar archivos existentes de texto desde el shell prompt.
Vim es una versión mejorada del editor vi que se distribuye con los sistemas Linux y UNIX. Vim es
altamente configurable y eficaz para usuarios avanzados; incluye funciones como edición en
pantalla partida, formateo de color y resaltado para la edición de texto.
Cuando se abre por primera vez, Vim arranca en modo comando, utilizado para navegar, cortar y
pegar, y otro tipo de manipulación de texto. Ingrese en cada uno de los otros modos con
pulsaciones de tecla de caracteres únicos para acceder a funciones de edición específicas:
Una pulsación de la tecla i ingresa al modo insert, en el cual todo el texto ingresado se
convierte en contenido de archivo. Al presionar Esc se vuelve al modo comando.
Una pulsación de la tecla v ingresa al modo visual, en el cual se pueden seleccionar varios
caracteres para la manipulación de texto. Utilice V para líneas múltiples y Ctrl+v para
seleccionar en bloque. La misma pulsación de tecla utilizada para ingresar al modo visual
(v, V o Ctrl+v) se utiliza para salir.
La pulsación de la tecla : comienza el modo comando extendido para tareas como escritura
del archivo para guardarlo y salida del editor Vim.
El instructor demostrará una sesión típica de edición de archivo empleando solo pulsaciones de
teclas básicas de Vim.
2. Repetir este ciclo de entrada de texto tantas veces como lo requiera la tarea:
Ingresar el texto.
3. Repetir este ciclo de eliminación de texto tantas veces como lo requiera la tarea:
4. Para guardar o salir, elegir una de las siguientes opciones para escribir o descartar
ediciones del archivo:
2. Repetir este ciclo de selección de texto tantas veces como lo requiera la tarea:
3. Para guardar o salir, elegir una de las siguientes opciones para escribir o descartar
ediciones del archivo:
Ingresar :q! para salir de Vim, pero descartar todos los cambios del archivo desde
la última escritura.
nota
Tenga la precaución de no ofrecerle al usuario avanzado de Vim atajos y trucos si no maneja bien
los básicos. Se requiere práctica para que Vim sea eficaz. Se recomienda continuar aprendiendo
nuevas pulsaciones de teclas para incrementar la utilidad de Vim. Quienes desean saber hasta
dónde se puede extender su utilidad deben buscar en Internet “Vim tips” (sugerencias de Vim).
Se incluye una presentación detallada de Vim en el curso Red Hat Enterprise Linux 7
Administración de sistemas II.
Referencias
En este ejercicio de laboratorio, usará un recurso instalado localmente para practicar técnicas de
edición de vim de nivel inicial.
Resultados:
Experiencia con vim y conocimiento sobre el uso de vimtutor para adquirir capacidades.
Para realizar este ejercicio, utilice el tutorial de Vim existente incluido con el editor Vim. El
paquete vim-enhanced instalado proporciona vimtutor. En cada paso del ejercicio, consulte la
lección correspondiente en vimtutor para practicar. Regrese aquí una vez que finalice el paso de la
lección. Realice los siguientes pasos en serverX, a menos que se le indique lo contrario.
En la clase, solo las teclas de flechas del teclado se usaron para la navegación. Anteriormente
en vi, los usuarios no podían confiar en las asignaciones del teclado en funcionamiento para las
teclas de flechas. Por lo tanto, vi se diseñó con comandos con teclas de caracteres estándar
solamente, como las teclas agrupadas convenientemente h, j, k y l. A continuación se incluye una
manera de recordarlas:
hang back (atrás), jump down (abajo), kick up (arriba), leap forward (adelante).
En esta lección se enseña a salir sin necesidad de conservar un cambio en un archivo no deseado.
Todos los cambios se pierden, pero esto es mejor que dejar un archivo fundamental en un estado
incorrecto.
Vim ofrece teclas más rápidas y eficientes para eliminar una cantidad exacta de palabras, líneas,
oraciones y párrafos. Sin embargo, las tareas de edición pueden realizarse usando x solamente
para la eliminación de un único carácter.
Se necesita una cantidad mínima de teclas para entrar o salir del modo de edición, usar las teclas
de edición y eliminar contenido. Para la mayoría de las tareas de edición, la primera tecla que se
presiona es i.
Guarde el archivo; para ello, escriba (w) y salga (q). Esta es la última lección en la que se aborda la
cantidad mínima de teclas necesaria para realizar cualquier tarea de edición.
Hay otras seis lecciones que comprenden varios pasos en vimtutor. Ninguna ha sido asignada
como lección adicional de este curso, pero no dude en usar vimtutor por su cuenta para adquirir
más conocimientos sobre Vim.
4.5 Edición de archivos de texto con un editor gráfico
Objetivos
Tras finalizar esta sección, los estudiantes deberían poder realizar lo siguiente:
La aplicación gedit es un editor de texto con todas las funciones para el entorno de escritorio
GNOME. Inicie gedit; para ello, seleccione Applications → Accessories → gedit en el menú
GNOME. Al igual que otras aplicaciones gráficas, gedit puede iniciarse sin navegar por el menú.
Presione Alt+F2 para abrir el cuadro de diálogo Enter a Command. Escriba gedit y presione Enter.
Para crear un archivo nuevo en gedit, haga clic en el icono de papel en blanco de la barra
de herramientas o seleccione File → New (Ctrl+n) desde el menú.
Para guardar un archivo, haga clic en el icono de guardar en unidad de disco duro de la
barra de herramientas o seleccione File → Save (Ctrl+s) desde el menú.
Varios archivos pueden abrirse simultáneamente, cada uno con una sola pestaña debajo de la
barra de menús. Las pestañas muestran el nombre de un archivo después de que se guardó la
primera vez.
Haga clic y mantenga presionado el botón izquierdo del mouse antes del primer carácter
que desea seleccionar.
Arrastre el mouse sobre todo el texto que desea hasta que quede resaltado como una
única selección y luego suelte el botón izquierdo. No vuelva a hacer clic en el botón
izquierdo porque anulará la selección del texto.
Para pegar la selección, pueden emplearse diversos métodos y obtener el mismo resultado. Primer
método:
Haga clic en el botón derecho del mouse en cualquier parte del área del texto que acaba
de seleccionar.
A continuación se incluye una técnica con el mouse más breve para practicar:
Desplace el mouse sobre la ventana de destino y haga clic en el botón central del mouse
solo una vez para pegar el texto en la posición del cursor.
Este último método solo permite copiar, no cortar. El texto original permanece seleccionado y
puede eliminarse. Al igual que con otros métodos, el texto se conserva en la memoria y puede
pegarse reiteradamente.
Figura 4.12: Selección y pegado de texto con el botón del medio del mouse
Haga clic en la ubicación en la que el texto debe colocarse a fin de posicionar el cursor.
Ctrl+c y Ctrl+v no copiarán ni pegarán dentro de una ventana de terminal. Ctrl+c en realidad
finalizará el proceso en ejecución actual dentro de una ventana de terminal. Para copiar y pegar
dentro de una ventana de terminal, use Ctrl+Shift+c y Ctrl+Shift+v.
Referencias
yelp help:gedit
gedit Wiki
En este ejercicio de laboratorio, editará un archivo con gedit, seleccionará texto y lo pegará en el
editor.
Resultados:
Una lista editada de archivos de configuración hallada en el directorio de inicio del usuario.
Realice los siguientes pasos en serverX, a menos que se le indique lo contrario. Inicie sesión
como student y comience en el directorio de inicio de student.
1. Redirija un listado extenso de todos los archivos del directorio de inicio, incluidos los
ocultos, dentro de un archivo denominado gedit_lab.txt. Confirme que el archivo contiene
el listado.
[student@serverX ~]$ cd
[student@serverX ~]$ ls -al > gedit_lab.txt
[student@serverX ~]$ cat gedit_lab.txt
2. Abra el archivo con el editor de textos gedit. Incluya el símbolo & al final para que la shell
pueda retornar cuando se esté ejecutando gedit.
[student@serverX ~]$ gedit gedit_lab.txt &
Inserte el texto en la parte superior del documento de archivos. Cambie a la ventana gedit.
Usando las teclas de flecha, coloque el cursor en la esquina superior izquierda del documento.
Presione el botón medio del mouse para pegar el texto.
c. Presione Enter una o más veces al final del texto insertado para abrir las líneas en
blanco arriba del listado de archivos.
4. Inserte una descripción para este documento, que incluya su nombre de usuario y el
nombre del host, en la línea 2.
Inserte el texto en la segunda línea del documento de archivos. Cambie a la ventana gedit. Usando
las teclas de fecha, coloque el cursor en el carácter más a la izquierda de la segunda línea. Presione
el botón medio del mouse para pegar el texto.
c. Presione Enter o Delete, según sea necesario, para mantener las líneas en blanco
sobre el listado de archivos.
5. Elimine las líneas de archivos que no son directorios ni archivos de configuración ocultos.
b. Elimine las dos líneas que representan el directorio actual y el directorio principal.
En este ejercicio de laboratorio, editará un archivo con el modo visual Vim para simplificar las
ediciones reiteradas.
Resultados:
Conocimiento de las utilidades y técnicas requeridas para realizar la edición de archivos. El archivo
final editado será una lista de los archivos seleccionados y los datos tabulares.
Realice los siguientes pasos en serverX, a menos que se le indique lo contrario. Inicie sesión
como student y comience en el directorio de inicio de student.
[student@serverX ~]$ cd
3. Elimine las tres primeras líneas ya que dichas líneas no son nombres de archivo habituales.
Ingrese el modo visual basado en líneas con una V mayúscula.
Use las teclas de flecha para ubicar el cursor en el primer carácter de la primera fila. Ingrese el
modo visual basado en líneas con V. Desplácese hacia abajo usando la tecla de flecha dos veces
para seleccionar las primeras tres filas. Elimine las filas con x.
4. Elimine las columnas de permiso para grupo y otros en la primera fila. En este paso,
ingrese en el modo visual con la v minúscula, que le permite seleccionar caracteres
únicamente en una sola línea.
Use las teclas de flecha para ubicar el cursor en el primer carácter. Ingrese el modo visual con v.
Use las teclas de flecha para ubicar el cursor en el último carácter, como se muestra en la captura
de pantalla. Elimine la selección con x.
5. Elimine las columnas de permiso para grupo y otros en el resto de las filas. Este paso usará
un modo visual de selección de bloque más eficiente para evitar tener que repetir la
edición de una sola línea varias veces. Esta vez, ingrese el modo visual con la secuencia de
control Ctrl+v, que permite seleccionar un bloque de caracteres en varias líneas.
Use las teclas de flecha para ubicar el cursor en el primer carácter. Ingrese en el modo visual con la
secuencia de control Ctrl+v. Use las teclas de flecha para ubicar el cursor en el último carácter de
la columna de la última línea, como se muestra en la captura de pantalla. Elimine la selección
con x.
6. Elimine la columna propietario de grupo y deje solo una columna "student" en todas las
líneas. Use la misma técnica de selección de bloque como el último paso.
Use las teclas de flecha para ubicar el cursor en el primer carácter de la columna de propietario del
grupo. Ingrese el modo visual con Ctrl+v. Use las teclas de flecha para ubicar el cursor en el último
carácter y la última fila de la columna de propietario del grupo, como se muestra en la captura de
pantalla. Elimine la selección con x.
7. Elimine la columna de tiempo, pero deje el mes y el día en todas las líneas. Una vez más,
use el modo visual de selección de bloque.
Use las teclas de flecha para ubicar el cursor en el primer carácter. Ingrese al modo visual
con Ctrl+v. Use las teclas de flecha para ubicar el cursor en el último carácter y la última fila de la
columna de la hora, como se muestra en la captura de pantalla. Elimine la selección con x.
8. Elimine las filas Escritorio y Público. Esta vez, ingrese el modo visual con la V mayúscula,
que selecciona automáticamente las líneas completas.
Use las teclas de flecha para ubicar el cursor en cualquier carácter de la fila Escritorio. Ingrese el
modo visual con la V mayúscula. Se selecciona la línea completa, como se muestra en la captura
de pantalla. Elimine la selección con x. Repita estos pasos para la fila Público.
9. Guarde y salga. Realice una copia de seguridad con la fecha (en segundos) para crear un
nombre de archivo único.
10. Envíe los contenidos del archivo como mensaje y no como adjunto al usuario student.
[student@serverX ~]$ cat editing_final_lab.txt | mail -s "lab file" student
11. Incluya una línea de puntos al archivo para reconocer el inicio del contenido más nuevo.
[student@serverX ~]$ echo "----------------------------------------" >>
editing_final_lab.txt
12. Agregue un listado de procesos completo, pero solo de procesos que son propiedad del
usuario actual student y que se estén ejecutando en la terminal utilizada actualmente.
Visualice el listado de procesos y envíelo al archivo que tenga una línea de comandos.
[student@serverX ~]$ ps -f | tee -a editing_final_lab.txt
13. Confirme que el listado de procesos esté en la parte inferior del archivo de ejercicio de
laboratorio.
----------------------------------------
UID PID PPID C STIME TTY TIME CMD
student 2005 2001 0 16:01 pts/0 00:00:00 /bin/bash
student 26923 2005 0 19:14 pts/0 00:00:00 ps -f
student 26924 2005 0 19:14 pts/0 00:00:00 tee -a editing_final_lab.txt