La Guía para principiantes de Shell Scripting 3 Comandos y cadenas más básicos
Aprendió cómo crear scripts, usar argumentos y compilar bucles. Ahora, veamos algunos comandos más básicos, la manipulación de archivos de texto y la redirección de entradas y salidas a archivos y otros comandos..
Algunos comandos básicos útiles
Ya le hemos brindado un desglose básico de los scripts de shell y un esquema basado en ejemplos de bucles for, pero asegúrese de revisar esos artículos si ha perdido nuestra guía de scripts de shell hasta el momento..
La línea de comandos es maravillosa por muchas razones, y la redirección es una de las más destacadas. Si tuvieras que tomar nota de y reproducir la salida de cada comando para poder realizar más acciones o usar eso para otra cosa, todos nos habríamos vuelto locos hace mucho tiempo. La redirección nos permite usar esa salida y guardarla o usarla inmediatamente como entrada para otro comando. También podemos usar archivos como entradas para otros comandos..
Antes de continuar, vamos a cubrir algunos comandos básicos que pueden ser de uso en muchos lugares diferentes.
eco - Este comando simplemente imprime (muestra) la totalidad de su argumento en la línea de comandos como salida
echo argumento con espacios
Como puede ver, los caracteres especiales deben ser "escapados" para que sean tratados normalmente. Esto se hace usando una barra invertida (\) delante del personaje. Es una mejor idea usar citas. El comando echo también funciona con variables..
Como puede ver, las comillas simples y dobles se comportan de manera diferente. Para obtener más información, consulte ¿Cuál es la diferencia entre comillas simples y dobles en Bash Shell??
gato - Este comando muestra el contenido de los archivos de texto como salida..
cat file_to_be_read
Digamos que creamos este archivo de texto en nano:
Cuando usamos el comando cat en el archivo, podemos ver su salida.
grep: este es uno de los comandos más poderosos y útiles disponibles en Linux. Es sinónimo de Global / Regular Expression Print. Mira a través de un archivo e imprime cualquier línea que coincida con un patrón particular. Debido a que este patrón se basa en la "expresión regular", una línea concisa puede producir una multitud de patrones que se deben emparejar. Para no, sin embargo, puede introducir un tern para la búsqueda.
archivo de patrón grep
Te aseguro que grep puede hacer más, pero por ahora sigamos con las cosas más fáciles.
Redireccionando Salidas
Para redirigir la salida de un comando a un archivo, usamos un carácter especial, el símbolo mayor que (>).
Vamos a cambiar nuestra lista, ¿de acuerdo? Ingrese el siguiente comando:
echo pepperoni> lista
Puedes ver que el eco ya no muestra la línea, y cuando miramos el contenido del archivo de "lista", vemos lo que hicimos eco allí..
También tenga en cuenta que los contenidos anteriores de "lista" fueron eliminados. Pruébalo otra vez:
Esto puede ser útil cuando desea reutilizar un archivo, pero a menudo solo queremos agregar a un archivo existente. Para esto, usamos dos símbolos mayores que:
echo pimientos amarillos >> lista
¡Fácil! Vamos a usar este comando para crear una lista más grande, vamos a?
Aquí vamos. Creo que puedes ver por qué tantos geeks usan la línea de comandos para hacer listas de tareas y cosas por el estilo, pero se pone aún mejor.
Tomemos la salida de un comando y pongámoslo en un archivo:
ls -al /> ~ / rootlist
Hacer listas de archivos, editarlas y luego ejecutar los comandos en los que desea nunca ha sido tan sencillo. Y, mientras estamos haciendo estas funciones básicas en la línea de comandos, también funcionan bien en scripts.
Tubería o encadenamiento
La canalización se llama así porque usa la tubería, (|; compartida con la tecla \ en la mayoría de los teclados). Esencialmente, toma la salida de un comando y lo alimenta directamente a otro. Puede crear largas cadenas de comandos para obtener un resultado deseado muy específico de esta manera, y es muy conveniente para comandos como grep.
Actúa de forma muy parecida a ">", excepto que se puede encadenar varias veces y su efecto es más general ya que no necesita pasar por un archivo de texto.
Como puede ver, grep distingue entre mayúsculas y minúsculas. Puedes usar la bandera "-i" para hacer que ignore el caso.
Redireccionando Entradas
También puede tomar entradas de archivos para comandos usando el símbolo menor que (<).
gato < list
"Eso no es diferente de usar un argumento", podría decir. Bueno, estarías en lo cierto en este caso. Donde la redirección de entrada realmente es útil es en el encadenamiento de comandos.
Digamos que queremos filtrar cualquier palabra que tenga "pep" en ella desde nuestro archivo actual "lista" a un nuevo archivo llamado "revisiones".
revisiones grep pep
Vamos a rehacer este comando, y añadir algo de clasificación.
revisiones grep pep
Esto usará "pep" como el término de búsqueda del archivo de entrada "lista", ordénelo en orden alfabético (todos los términos en mayúsculas seguidos de todos los términos en minúsculas), luego publíquelo en el archivo de "revisiones".
Para ilustrar el comando de clasificación, veamos el siguiente ejemplo:
Como puede ver, agregar la marca "-f" al comando de ordenación le permite ignorar el caso. Esto nos facilita el orden alfabético de las líneas en archivos de texto e ignorar el uso de mayúsculas cuando no importa.
Un guión simple
Vamos a crear un script que tenga la siguiente forma:
script searchterm listfile
Tomará el término y usará grep para buscar en un archivo de lista, ordenar los resultados y luego enviarlos a otro archivo.
Aquí está el directorio en el que probaremos el script en:
Y, podemos crear una lista de lo que hay aquí, luego ejecutar el script.
¡Ahí tienes! Cuanto más aprenda las reglas de las expresiones regulares, más exactamente podrá armar un comando de búsqueda. Y, cualquier cosa que sea válida entre comillas puede ser sustituida por su primer argumento.!
En lo que respecta a la clasificación, puede hacer más que solo ordenar alfabéticamente. Eche un vistazo a la página de manual de algunos de los siguientes comandos:
- tsort - una función de clasificación topológica más avanzada
- tr: le permite asignar caracteres específicos a otros caracteres y transcribir entre ellos.
- uniq - elimina cualquier no único (leer: duplicado)
- awk: un lenguaje / función de procesamiento de texto realmente avanzado que se puede usar para separar campos en nombres de archivos
- cortar, pegar / unir: comandos útiles para aislar campos de archivos de texto y agregar nuevos datos a columnas
- look - búsquedas como grep hace, pero usa un archivo de diccionario (que puede ser especificado por el usuario) para la búsqueda
- wc: le permite obtener recuento de palabras, recuento de líneas, recuento de caracteres y más
Analizamos algunos conceptos básicos más que pueden ser tan útiles en la línea de comandos como en los scripts. Los datos basados en texto a menudo están en el corazón de las cosas que utilizamos a diario, por lo que poder trabajar con ellos, buscarlos y manipularlos es clave..
¿Cuáles son algunos de tus guiones favoritos? ¿Tiene algún script de uso especial para archivos basados en texto? Comparte lo que sabes en los comentarios.!