Curso de Linux N03. Tuberías (Pipelines), grep, sort, env, printenv, bash.

By rafaelaquino on 4/16/2023

Curso de Linux N03. Tuberías (Pipelines), grep, sort, env, printenv, bash.

Cordiales Saludos

![curso_02.png](Image from post)

Tuberías (Pipelines)

Involucra dos comandos, donde la salida del primer comando es la entrada del segundo comando. Lo logramos interponiendo entre comandos el sígno: |, la barra vertical de nuestro teclado.

Repasemos nuestro conocimiento para entender mejor. Notemos que la salida estandar del comando history es nuestra pantalla, por medio del terminal. Ejecutamos history y automaticamente nos lo muestra.

rafael@HP:~$ history
    1  clear
    2  date
    3  cal
    4  pwd
    5  whoami
    6  clear
    7  history
rafael@HP:~$ 

Ya hemos visto que podemos enviar esa salida a un archivo por medio de > o >>.

rafael@HP:~$ history >> registro.txt
rafael@HP:~$ 
rafael@HP:~$ cat registro.txt 
    1  clear
    2  date
    3  cal
    4  pwd
    5  whoami
    6  clear
    7  history
    8  history >> registro.txt
rafael@HP:~$ 
rafael@HP:~$ 

Tomemos en cuenta que > conecta un comando con un archivo, en cambio | conecta la salida del primer comando con la entrada del segundo comando.

Por ejemplo: Con history | less estamos enviando la salida del comando history a la entrada del comando less.

rafael@HP:~$ 
rafael@HP:~$ history | less

less es muy potente para revisar textos grandes, en esta oportunidad entramos a less con la salida de history con poca información a manera referencial para entender el ejemplo.

![less_a.png](Image from post)
Con **less** podemos buscar una palabra escribiendo el comando **/date** como el siguiente ejemplo.
![less_b.png](Image from post)
Aquí aparece la palabra encontrada, en este caso **date**. Imaginemos lo potente para un archivo de gran extensión.
![less_c.png](Image from post)

Recordemos que para salir de less es con la letra q.

En mi twitter coloque el comando dmidecode -t 17 para revisar la memoria RAM presente en nuestro equipo. Como la salida del comando: dmidecode -t 17 es demasiada larga, lo dividí para las primeras 27 lineas con:

sudo dmidecode -t 17 | head -n 27

Y para las ultimas 24 lineas use:

sudo dmidecode -t 17 | tail -n 24
![memoriaram.png](Image from post) Imagén que coloqué en mi [Twitter](https://twitter.com/Rafa_elaquino/status/1644042131198078978?s=20)

grep

Con el comando grep encontraremos patrones de texto dentro de un archivo o varios archivos. Veremos a continuación algunas opciones:

En el siguiente ejemplo buscaremos la palagra date dentro del archivo registro.txt con: grep date registro.txt

![grep.png](Image from post)
En el siguiente ejemplo la salida del comando **env** la enviamos a la entrada del comando **grep** buscando la palabra **SHELL**.
![grep_a.png](Image from post)
A continuación listaremos los archivos ocultos con el comando **ls -a** y su salida la redireccionamos al comando **grep** para buscar los archivos que coincidan con la terminación **rc** para eso usamos **rc$**
![less_d.png](Image from post)

Existen muchas opciones con grep que de seguro seguiremos viendo a medida que avancemos en este curso.


sort

sort permite ordenar alfabéticamente las lineas de un archivo.

Crearemos el archivo lista.txt para el siguiente ejemplo.

![sort.png](Image from post)
Con el comando : **sort lista.txt** ordenamos la lista.
![sorta.png](Image from post)
Otra forma de hacer el ordenamiento de la lista!
![sortb.png](Image from post)

env y printenv

Los comandos env y printenv nos permiten ver las variables de entorno de nuestro sistema operativo. Como el archivo es muy grande lo dividí con el comando: env | head -n 24 para las primeras 24 lineas.

env | head -n 24
![env_a.png](Image from post)
Y con el comando: **env | tail -n 12** para ver las últimas 12 líneas. ~~~ env | tail -n 12 ~~~
![env_b.png](Image from post)

IMPORTANTE: Los comando vistos aquí y en próximas publicaciones están limitados para mostrarlos y conceptuelizarlos para nuestro quehacer diario. Cada comando tiene muchas opciones que debemos investigar por nuestra propia cuenta cuando estemos trabajando con ellos. Aprovechemos el internet para conocer en profundidad el comando que estemos estudiando y en primer orden no olvidemos lo potente y todo lo que nos brinda el comando man para conocer la sintaxis y todo lo relacionado con todos los comandos que tenemos en nuestro sistema sin recurrir a internet.

![banner_bash.png](Image from post)

{1}

Comenzaremos a hacer pequeños programas en Bash para poner en práctica todo los comandos en linux que hemos aprendido.

Es una buena forma de practicar y acercarnos a los lenguajes de programación. Bash está muy vinculado a linux ya que nos permite sacarle el mayor provecho a todo lo que estamos aprendiendo, nos sorprenderá todo lo que podemos hacer con unas simples lineas de códigos dentro de un script creado en Bash.

Comencemos...

Shebang, hash-bang o sharpbang (#!)

El shebang nos permitirá hacer la llamada al interprete de bash para que se pueda ejecutar el script creado por nosotros. Esta llamada la haremos colocando al comienzo de nuestro Script: #!/bin/bash

En la lista de Shells mostradas, observamos la ruta donde se encuentra el Shell que nos interesa y con el que trabajaremos: /bin/bash

![3_a.png](Image from post) Captura de Pantalla. Lista de Shells
Distintas formas de ubicar nuestro Shell: /bin/bash

Con echo

rafael@HP:~$ echo $SHELL
/bin/bash
rafael@HP:~$ 

Con env y printenv

rafael@HP:~$ env | head -n 1
SHELL=/bin/bash
rafael@HP:~$ 
rafael@HP:~$ printenv SHELL
/bin/bash
rafael@HP:~$ 
rafael@HP:~$ printenv | head -n 1
SHELL=/bin/bash
rafael@HP:~$ 
rafael@HP:~$ 

Nuestro primer Script en Bash

Lo crearemos en esta oportunidad con cat, de la siguiente manera.

cat > bash_01.sh

Escribiremos nuestro programa:

#!/bin/bash
echo "Uno de los primeros programas en Bash"
echo "Todo un Exito"

Para salir de cat haremos la combinación "Ctrl + d".

Para verificar lo que escribimos y visualizar nuestro script:

cat bash_01.sh

Para ejecutarlo anteponemos el comando bash delante del nombre del script.

bash bash_01.sh 
![bash_01.png](Image from post)
![bannerfundamentos.png](Image from post)

Bash

Script

Shell_de_Unix

Todos a practicar, incluyéndome! Nos vemos en la próxima publicación...

Mi Twitter

Comments (3)

poshtoken's avatar @poshtoken 4/16/2023

https://twitter.com/1038814762719739904/status/1647744495994241026 The rewards earned on this comment will go directly to the people sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.

visualblock's avatar @visualblock 4/17/2023

Has sido curado por @visualblock / You've been curated by @visualblock Bienvenidas delegaciones / Delegations welcome [Encuentra nuestra comunidad aquí / Find our community here](https://discord.gg/tGuctbfYKN) [Trail de Curación / Curation Trail](https://hive.vote/dash.php?trail=visualblock&i=1)
stemsocial's avatar @stemsocial 4/21/2023

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support.