Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4

Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4

Continuando con nuestra serie sobre útiles consejos y trucos de línea de comandos de Bash, en el artículo de hoy, exploraremos solo lo que necesita, y comenzaremos con un manual en pwd y cómo descubrir el camino se inició un script de.

En este tutorial aprenderás:

  • Consejos, trucos y métodos de comandos de comandos útiles
  • Cómo interactuar con la línea de comandos de Bash de manera avanzada
  • Cómo afilar sus habilidades de Bash en general y convertirse en un usuario bash más competente
Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución de Linux
Software Línea de comando bash, sistema basado en Linux
Otro Cualquier utilidad que no esté incluida en el shell bash de forma predeterminada se puede instalar utilizando sudo apt-get instalación de utilidad de utilidad (o yum instalación para sistemas basados ​​en redhat)
Convenciones # - requiere que los comandos de Linux se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux se ejecuten como un usuario regular no privilegiado

Ejemplo 1: Directorio de trabajo de ruta? O no?

Es posible que estemos acostumbrados a llamar pwd en la línea de comando para decirnos el nombre de nuestro directorio actual:

$ pwd/home/roel/workspace 

Pero si queremos obtener el directorio del que se inició un script, el uso de esta variable de un script también funciona de la misma manera?

$ Cat test_pwd.sh #!/bin/bash my_path1 = "$ pwd" echo "$ my_path1" my_path2 = "$ (pwd)" echo "$ my_path2" 
Copiar

Usaremos dos formas de recuperar el camino: miramos (para el primero My_path1 asignación) en el Pwd (Nivel del sistema operativo) variable de presentación automáticamente, y en el segundo caso (para el segundo My_path2 asignación) ejecutamos pwd en una subshell (ps) y asignarlo a My_path2. Ejecutemos lo mismo:

ps ./test_pwd.sh/home/roel/workspace/home/roel/workspace 

Se ve bien, correcto? Sí, tal vez, pero una vez que nos cambiamos a un directorio diferente, y llamamos al script usando su nombre de ruta completo o relativo, el Pwd variable (o el pwd comando) dentro del script devolverá el directorio en el que estábamos cuando se inició el script. Verifiquemos esto:

$ mkdir prueba $ cd prueba $ ... /test_pwd.sh/home/roel/workspace/test/home/roel/workspace/test 

Lo que podemos ver aquí es que pwd (o el $ PWD variable) siempre devolverá la ruta actual real.

Esto puede ser un problema: es posible que deseemos iniciar un subíndice, o acceder a un archivo, desde el mismo directorio (o un subdirectorio del mismo) que el que estaba en el script estaba en. Este es a menudo el caso de scripts bash más complejos que llaman múltiples subíndices y/o archivos de datos y configuración.

Entonces, ¿cuál es una forma uniforme de obtener el camino desde el cual se inició el guión?

Uno puede considerar usar el Dirname "\ $ 0" dominio:

$ Cat Test2.sh #!/bin/bash echo "\ $ 0" dirname "\ $ 0" 
Copiar

DirName producirá el nombre de directorio - relativo de cualquier opción que se le pase, y en este caso eso es \ $ 0 - Una variable especial que se establece cuando un script comienza al nombre del script como se inició. Vamos a probarlo:

ps ./Test2.mierda ./Test2.mierda . Prueba de $ CD $ ... /test2.sh… /test2.SH… 

Mejor, supongo, y puede ayudar un poco (para tener una idea principalmente), pero aún no nos da un nombre de ruta totalmente calificado. Para esto, podemos usar un envoltorio de subshell doble nombre en combinación con una ruta calificada completa real obtenida de un pwd ejecución:

$ cat make_it_work.sh #!/bin/bash my_path = "$ (cd" $ (dirname "\ $ 0") "&& pwd)" echo "$ my_path" 
Copiar

Veamos si funciona:

ps ./hazlo funcionar.sh/home/roel/espacio de trabajo 

Hasta ahora todo bien, pero funciona cuando lo ejecuta desde un subdirectorio?

$ CD test && pwd/home/roel/workspace/test $ .../make_it_work.sh/home/roel/workspace $/home/roel/workspace/make_it_work.sh/home/roel/espacio de trabajo 

Sí!

Primero cambiamos a prueba y verificar que estamos en el prueba directorio, si ese directorio de cambio (cd) El comando fue exitoso (según las instrucciones de &&).

En ambos casos, si se llama de manera relativa (… /), o con un nombre de ruta totalmente calificado (/Home/Roel/Workspace/), el resultado es que vemos el directorio desde el cual se inició el script (/Home/Roel/Workspace/) y no el directorio de trabajo actual real, o pwd (/Home/Roel/Workspace/Test).

En resumen, puedes usar el My_path = "$ (cd" $ (dirname "\ $ 0") "&& pwd)" Script de una línea para obtener el nombre de directorio correcto, totalmente calificado, desde sus scripts. Después de esto, usar una adición relativa funcionará bien. Por ejemplo, puedes usar $ My_path/include/mysubscript.mierda e incluso $ My_path /... /one_dir_up_file.TXT etc.

Ejemplo 2: Greping solo lo que necesitas

Alguna vez has usado grep? GREP es una utilidad de línea de comandos de comandos versátiles que le permite seleccionar texto desde un archivo fácilmente. La mayoría de las veces se usa de la siguiente manera:

$ Cat Test Line 1 Mi línea Línea 2 Tus líneas Línea 3 Nuestra línea $ Grep 'Línea 2' Línea de prueba 2 Tus líneas 


Tenemos un archivo de entrada con 3 líneas, y buscamos una prueba específica (línea 2) En ese archivo. Pero, ¿qué tal si solo quieres las líneas que tienen el múltiplo de línea (i.mi. líneas) mencionado en ellos? Y, ¿qué tal si solo quería tener solo la palabra antes, incluido el líneas bit, pero no el real línea x producción?

En ese caso, podemos GREP solo para lo que necesitamos usar el -O ('Solo') opción para GREP:

$ grep -o 'líneas' líneas de prueba $ grep -o '\ w \+ líneas' Pruebe sus líneas 

Bingo! Primero primero para la palabra 'líneas', que se encontró. Luego prefijamos eso con un espacio y una expresión regular que establece en pseudo-text: encuentre un límite de palabra (\ W), al menos una vez y tantas veces que corresponda (\+) seguido de un espacio. El resultado es que su (que tiene límites de dos palabras; un inicio y un final) está incluido. línea 2 no esta incluido. Si bien tiene límites de palabras, no hay sufijo de líneas a ese.

Si desea obtener más información sobre expresiones regulares en Bash, consulte Bash Regexps para principiantes con ejemplos, avanzado bash regex con ejemplos y también le pueden gustar las expresiones regulares semi-relacionadas con ejemplos.

Conclusión

En este artículo, exploramos pwd y miró cómo usar pwd desde dentro de un guión en combinación con nombre Para recuperar la ruta de directorio totalmente calificada de la cual se inició el script, de una manera que siempre funcionará. También miramos a Greping solo lo que necesitamos usando el -O opción y, en este caso, expresión regular para que coincidan con los límites de las palabras.

Déjanos un comentario con tus mejores consejos y trucos de la línea de comandos de Bash!

  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 1
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 2
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 3
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 5

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Mastering Bash Script Loops
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 1
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 3
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 2
  • Cosas para instalar en Ubuntu 20.04
  • Bucles anidados en guiones Bash
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 5
  • Ubuntu 20.04 Guía