Saltar la navegación

4.3.- Direccionamiento y tuberías.

Operadores de direccionamiento de salida

Operador de salida >
Por defecto, la salida estándar de los comandos es la misma terminal. Con el operador > direccionamos la salida a otro sitio. De esta forma, podemos guardar en un archivo el resultado de un comando. Si el archivo ya existía, se sobrescribe.
Ejemplos
C:\> dir /S C:\users > archivo.txt Guarda en C:\archivo.txt el listado de archivos y subdirectorios de todos los usuarios
C:\> date /t > windows\archivo.txt Guarda la fecha de hoy en C:\windows\archivo.txt
C:\> echo hola > archivo.txt Guarda en C:\archivo.txt la palabra hola
C:\> dir /S > C:\users\Garcia\listadoC.txt Con este comando sencillo, se ve la potencia de la terminal. Guardamos un listado completo de todo el árbol C en el archivo listado.txt. Faltaría que aparecieran los archivos ocultos y de sistemas, pero para ello hay opciones en dir
C:\> type archivo.txt > archivo2.txt Guarda en archivo2.txt el contenido de archivo.txt

Operador de salida >>
El operador >> también direcciona la salida al igual que el operador >
La diferencia, es que al direccionar a un archivo, la nueva información se añade al contenido que ya tenía el archivo

Ejemplo
Guardar en un archivo nuevo, la fecha, hora y un listado completo de todos los directorios y ficheros que hay en la unidad C: (Aquí, con un ejemplo sencillo, se muestra la potencia de la terminal)
Para este ejemplo, hay que ejecutar 3 comandos. En el primero, se utiliza >, para sobrescribir el fichero Listado.txt si existía y en los siguientes >> para añadir, sin borrar lo anterior. Se incluye un echo para que el archivo quede más organizado.
C:\> date /T > Listado.txt
C:\> time /T >> Listado.txt
C:\> echo Listado completo de archivos y directorios >> Listado.txt
C:\> dir /S >> Listado.txt
Una vez ejecutadas estas 4 líneas, Listado.txt se puede abrir con el bloc de notas, y se verá el listado completo del árbol C.

Tuberías y filtros; more, sort y find
CONCEPTO; La información de salida por defecto de un comando es la pantalla. Esta información, en vez de sacarla en la pantalla, se introduce en una tubería y se filtra con otro comando para realizar otra operación: ordenar, buscar...
El operador utilizado para encadenar las ordenes es | (Teclas AltGr+1)

En las tuberías se suelen utilizar los comandos o filtros: more, sort y find

MORE
La información de salida de un comando, la filtramos pantalla a pantalla, gracias a MORE.
Ejemplos:
C:\> type Listado.txt | more Visualiza el contenido de Listado.txt creado en el ejemplo de direccionamiento, pantalla a pantalla.
C:\> attrib /s | more Muestra todos los archivos con sus atributos del árbol C, pero pantalla a pantalla

SORT [/R] [/+número]
Sirve para ordenar un conjunto de filas. La ordenación por defecto es ascendente y con el primero carácter de cada fila. Tiene dos modificadores:
La opción /R sirve para hacer la ordenación con orden inverso (R de reverse)
La opción /+n sirve para decir qué columna queremos ordenar

Ejemplos:
C:\> dir C:\sistemas | sort Lista el contenido de un directorio, ordenado por el primer carácter
C:\> sort config.sys Muestra en pantalla el archivo config.sys ordenado por primer carácter
C:\> type config.sys | sort /+2 Muestra en pantalla el archivo config.sys ordenadas las líneas por 2º carácter.
C:\> type fichero1.txt /R /+20 | sort > fichero2.txt Ordena el archivo 1 por orden descendente por columna 20 y lo guarda en fichero2.txt

FIND [/V] [/C] [/N] [/I] “CADENA” [fichero]
Sirve para buscar una cadena de texto. Devuelve las líneas que contiene la cadena de texto buscada
Ejemplo:
Los 2 comandos siguientes son equivalentes, y devuelve en pantalla las líneas del archivo listado.txt que tengan la cadena de texto “hoja”
C:\> type C:\listado.txt | find “hoja”
C:\> find “hoja” listado.txt

Otro ejemplo:
C:\> dir/s | find "practica.docx" Devuelve tantas líneas como número de archivos que se llamen exactamente practica.docx

Opciones-modificadores del FIND
/v Muestra las líneas que no tienen la cadena indicada
/c Muestra el número de líneas que contiene la cadena indicada (Cuidado: no aparecen las líneas)
/n Muestra las líneas en las que aparece la cadena de texto y el número de línea en la que se encuentra
/i No hará distinción a la hora de buscar entre minúsculas y mayúsculas

Ejemplo 1: ¿Cuántos archivos hay en C con el nombre de practica.docx? Devolver solo número
C:\> dir/s | find "practica.docx" /c → Devuelve tantas líneas como número de archivos que se llamen exactamente practica.docx

Ejemplo 2: Devolver los archivos que tienen los 3 atributos SHR en C
Explicación: Si ejecutamos attrib, vemos que los archivos que tienen los 3 atributos, aparece la cadena "SHR". Si buscamos con esa cadena, nos devuelve/puede devolver algún archivo cuyo nombre tenga las 3 letras. Por eso al buscar, he puesto un espacio entre las letras y las comillas.
C:\> attrib/s | find " SHR " Devuelve todas las líneas que tengan la cadena " SHR "

Ficheros por lotes o batch. Extensión bat
Concepto
Un fichero por lotes, es un archivo de texto plano, (código ASCII extendido), que contiene varias órdenes. Así, cuando ejecutemos dicho fichero, se ejecuta una tarea tras otra sin la intervención del usuario.En Windows, tienen la extensión .bat

Ejemplo
Crear un fichero por lotes llamado lote.bat, que cuando se ejecute, obtenga el fichero lote.txt con la fecha, la hora y listado de todos los archivos y directorios de la unidad C.
C:\>copy con lote.bat (Escribimos en la terminal las 4 líneas siguientes, para guardarlas en lote.bat)
@echo off
Date /T > lote.txt
Time /T >> lote.txt
Dir /S C:\ >> lote.txt
Para terminar, Ctrl+Z e Intro.
La línea @echo off es para desactivar el echo. Para que no moleste al ejecutar el fichero en la terminal.

Ejecución: 2 formas:
En línea de comandos: escribimos el nombre del archivo: C:\> lote.bat
En entorno gráfico: doble clic en el nombre del fichero

Programación de los ficheros por lotes. Script de Powershell
Los ficheros bat, también se les llama programas bat, pues aparte de todos los comandos de Windows, admiten instrucciones específicas que dan muchas posibilidades a los ficheros por lotes.
Powershell es una nueva consola para la ejecución de scripts mucho más potente que cmd. Powershell no viene instalado por defecto en las versiones Home, pero se puede instalar.
Tanto la programación de ficheros por lotes, como Powershell queda fuera de los contendos de este módulo.