Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
programa c para matriz bidimensional

el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>
Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>
#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.com

imprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.

comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edad
Explicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.
Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg
8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
ser
Explicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.

Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola
10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como , , etc., donde representa el primer argumento, representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script:
Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.
- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
echo Primer argumento:
echo Segundo argumento:
Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:

argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hecho
Explicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.

en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sum
Explicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.
java principal
- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.
Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
ser
Explicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
ser
Explicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.

leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_result
Explicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.

Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.
Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.

eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseña
Nota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir }')
echo Tamaño total de archivos en $directorio: $total_size
Explicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print }' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.

Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica | `si`estación | Declaración `elif` |
---|---|---|
Objetivo | Explique la diferencia entre declaraciones if y elif en scripts de shell. | Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. |
uso | Utilizado para la condición inicial. | Se utiliza después de la condición if inicial para comprobar condiciones adicionales. |
número de bloques | Sólo puede tener uno si está bloqueado. | Puede tener varios bloques elif, pero solo un bloque else (opcional). |
Ejecución | Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). | Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). |
Estructuras anidadas | Se puede anidar dentro de otros bloques if, elif o else. | No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. |
Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
ser
Explicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:

diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hecho
Explicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hecho
Explicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).

mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=″
si [ -z $directorio ]; entonces
Uso del eco:Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.
- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacío
Explicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por ) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco:
`: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde `Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>
Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>
#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>
Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
` representa el nombre del script.Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>
Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>
#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>
Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.

Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>
Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!

leer nombre
función chr en pitón
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=″
si [ -z $directorio ]; entonces
Uso del eco:Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.
- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hecho
Explicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco:
: Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script (Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>
Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>
#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>
Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
).Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>
Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>
#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>
Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ suma
Explicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.

aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=″
si [ -z $host ]; entonces
Uso del eco:Para todas las distribuciones de Linux, el script de shell es como una varita mágica que automatiza el proceso, ahorra tiempo a los usuarios y aumenta la productividad. Este tutorial de scripting le presentará más de 25 ejemplos de scripting.
Pero antes de pasar al tema de secuencias de comandos de shell Con estos ejemplos, comprendamos los scripts de shell y los casos de uso reales de los scripts de shell.
¿Qué es el script de Shell?
Bueno, el caparazón es un CLI ( intérprete de línea de comando ), que se ejecuta en una ventana de texto donde los usuarios pueden administrar y ejecutar comandos de shell. Por otro lado, el proceso de escribir un conjunto de comandos para ejecutar en un sistema Linux. Un archivo que incluye dichas instrucciones se denomina script bash.
Usos de los scripts de Shell
A continuación se muestran algunos usos comunes de Shell Script:
- Automatización de tareas – Se puede utilizar para automatizar tareas repetitivas, como copias de seguridad periódicas y tareas de instalación de software.
- Personalización – Se pueden utilizar scripts de shell para diseñar su entorno de línea de comandos y realizar fácilmente su tarea según las necesidades.
- Gestión de archivos - Los scripts de shell también se pueden utilizar para administrar y manipular archivos y directorios, como mover, copiar, cambiar el nombre o eliminar archivos.
Ejemplos de scripts de Shell en Linux
1) ¿Qué indica el shebang (#!) al comienzo de un script de shell?
El tinglado (#!) al comienzo de un script indica el intérprete que se debe utilizar para ejecutar el script. Le dice al sistema qué shell o intérprete debe interpretar los comandos del script.
Por ejemplo: Supongamos que tenemos un script llamado myscript.sh escrito en el shell Bash:
el asunto
En este ejemplo:
- El #!/bin/bash al principio del script indica que el script debe interpretarse utilizando el shell Bash.
- Los comandos de eco se utilizan para imprimir mensajes al terminal.
2) ¿Cómo se ejecuta un script de shell desde la línea de comando?
Para ejecutar un script de shell desde la línea de comando, debemos seguir estos pasos:
- Asegúrese de que el archivo de secuencia de comandos tenga permisos ejecutables utilizando el comando chmod :
chmod +x myscript.sh>
- Ejecute el script usando su nombre de archivo:
./myscript.sh>Aquí tienes que reemplazar myscrtipt.sh con su nombre de script.
3) Escriba un script de shell que imprima techcodeview.com en la terminal.
Cree un nombre de script `myscript.sh` (estamos usando ` porque `editor, puedes elegir cualquier editor)
vim myscript.sh>#!/bin/bash
# Este script imprime techcodeview.com en la terminal
eco techcodeview.comimprimir nombre
Hacemos que nuestro script sea ejecutable usando `chmod +x`, luego lo ejecutamos con `./myscipt.sh` y obtenemos el resultado deseado techcodeview.com.
4) Explique el propósito del comando echo en los scripts de shell.
El comando de eco se utiliza para mostrar texto o variables en el terminal. Se usa comúnmente para imprimir mensajes, valores variables y generar resultados de programas.
comando de eco
En este ejemplo, hemos ejecutado `echo` directamente en la terminal, ya que funciona igual dentro del script de shell.
5) ¿Cómo se puede asignar un valor a una variable en un script de shell?
A las variables se les asignan valores utilizando el operador de asignación =.
Por ejemplo:
#!/bin/bash
# Asignar un valor a una variable
nombre=Jayesh
edad = 21
echo $nombre $edadExplicación:
- A la variable de nombre se le asigna el valor Jayesh.
- A la variable edad se le asigna el valor 21.
- echo se usa para imprimir y `$nombre` `$edad` se usa para llamar al valor almacenado en las variables.
6) Escriba un script de shell que tome el nombre de un usuario como entrada y lo salude.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
# Preguntar al usuario su nombre
eco ¿Cómo te llamas?
leer nombre
# Saludar al usuario
echo ¡Hola, $nombre! Encantado de conocerlo.Explicación:
- #!/bin/bash: Esta es la línea shebang. Le indica al sistema que utilice el intérprete Bash para ejecutar el script.
- # Preguntar al usuario su nombre: Este es un comentario. Proporciona contexto sobre el próximo código. El intérprete ignora los comentarios.
- echo ¿Cuál es tu nombre?: El comando echo se utiliza para mostrar el texto entre comillas dobles en la terminal.
- leer nombre: el comando de lectura espera a que el usuario ingrese texto y lo almacena en el nombre de la variable.
- echo ¡Hola, $nombre! Encantado de conocerte: esta línea utiliza el comando echo para imprimir un mensaje de saludo que incluye el valor de la variable de nombre, que se recopiló a partir de la entrada del usuario.
7) ¿Cómo se agregan comentarios a un script de shell?
Comentarios en scripts de shell se utilizan para proporcionar explicaciones o contexto al código. El intérprete los ignora y solo están destinados a los humanos que leen el guión. Puede agregar comentarios usando el símbolo #.
#!/bin/bash
# Este es un comentario que explica el propósito del guión.
eco gfg8) Cree un script de shell que verifique si existe un archivo en el directorio actual.
Aquí hay una secuencia de comandos que verifica si existe un archivo llamado ejemplo.txt en el directorio actual:
#!/bin/bash
archivo=ejemplo.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
echo El archivo existe: $archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=example.txt: esta línea define el archivo variable y le asigna el valor example.txt. Puede reemplazarlo con el nombre del archivo que desea verificar.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. La condición [ -e $file ] verifica si el archivo especificado por el valor de la variable de archivo existe. El indicador -e se utiliza para comprobar la existencia del archivo.
- echo El archivo existe: $archivo: si la condición es verdadera (es decir, el archivo existe), esta línea imprime un mensaje que indica que el archivo existe, junto con el nombre del archivo.
- else: si la condición es falsa (es decir, el archivo no existe), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado, junto con el nombre del archivo.
- fi: esta línea marca el final de la declaración if.
Encontrar archivo
9) ¿Cuál es la diferencia entre comillas simples (') y comillas dobles () en scripts de shell?
Las comillas simples (') y las comillas dobles () se utilizan para encerrar cadenas en scripts de shell, pero tienen comportamientos diferentes:
- Comillas simples: todo lo que esté entre comillas simples se trata como una cadena literal. Los nombres de variables y la mayoría de los caracteres especiales no se expanden.
- Comillas dobles: las variables y ciertos caracteres especiales entre comillas dobles se expanden. Los contenidos están sujetos a sustitución de variables y sustitución de comandos.
#!/bin/bash
abcd=Hola
echo '$abcd' # Salida: $abcd
echo $abcd # Salida: Hola10) ¿Cómo se pueden utilizar argumentos de línea de comandos en un script de shell?
Argumentos de línea de comando son valores proporcionados a un script cuando se ejecuta. Se puede acceder a ellos dentro del script usando variables especiales como $1, $2, etc., donde $1 representa el primer argumento, $2 representa el segundo argumento, y así sucesivamente.
Por ejemplo: Si nuestro nombre de script está en `example.sh`
#!/bin/bash
eco Nombre del script: $0
echo Primer argumento: $1
echo Segundo argumento: $2Si ejecutamos el script con `.example.sh hola_1 hola_2`, generará:
argumentos cli
11) ¿Cómo se utiliza el bucle for para recorrer una lista de valores?
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
frutas=(manzana plátano cereza dátil)
para fruta en ${frutas[@]}; hacer
echo Fruta actual: $fruta
hechoExplicación:
La línea `fruits=` crea una matriz llamada frutas con cuatro elementos: manzana, plátano, cereza y dátil.
- para fruta en ${frutas[@]}; hacer: esta línea inicia un bucle for. Esto es lo que significa cada parte:
- para fruta: esto declara una variable de bucle llamada fruta. En cada iteración del ciclo, fruta contendrá el valor del elemento actual de la matriz de frutas.
- ${frutas[@]}: Esta es una expansión de matriz que toma todos los elementos de la matriz de frutas. La sintaxis ${…} garantiza que cada elemento se trate como un elemento independiente.
- hacer: esta palabra clave marca el comienzo del cuerpo del bucle.
- echo Fruta actual: $fruta: Dentro del bucle, esta línea utiliza el comando echo para mostrar el valor actual de la variable del bucle fruta. Imprime un mensaje como Fruta actual: manzana para cada fruta de la matriz.
- hecho: esta palabra clave marca el final del cuerpo del bucle. Le dice al script que el ciclo ha finalizado.
en bucle
12) Escriba un script de shell que calcule la suma de números enteros del 1 al N usando un bucle.
Cree un nombre de secuencia de comandos `ejemplo.sh`.
#!/bin/bash
eco Introduzca un número (N):
leer norte
suma=0
para (( i=1; i<=$N; i++ )); hacer
suma=$((suma + i))
hecho
echo La suma de números enteros del 1 al $N es: $sumExplicación:
El script comienza pidiéndole que ingrese un número (N) usando lectura. Este número determinará cuántas veces se ejecuta el bucle.
- La variable suma se inicializa en 0. Esta variable realizará un seguimiento de la suma de números enteros.
- El bucle for comienza con for (( i=1; i<=$N; i++ )). Esta estructura de bucle se utiliza para repetir un conjunto de acciones un número determinado de veces, en este caso, desde 1 hasta el valor de N.
- Dentro del bucle suceden estas cosas:
- i=1 establece la variable de bucle i en 1 al comienzo de cada iteración.
- La condición de bucle i<=$N comprueba si i sigue siendo menor o igual que el número N dado.
- Si la condición es verdadera, se ejecuta el cuerpo del bucle.
- sum=$((sum + i)) calcula el nuevo valor de sum sumándole el valor actual de i. Esto suma los números enteros desde 1 hasta el valor i actual.
- Después de cada iteración, i++ incrementa el valor de i en 1.
- El ciclo continúa ejecutándose hasta que la condición i<=$N se vuelve falsa (cuando i se vuelve mayor que N).
- Una vez que finaliza el ciclo, el script muestra la suma de los números enteros desde 1 hasta el número ingresado N.
13) Cree un script que busque una palabra específica en un archivo y cuente sus apariciones.
Cree un nombre de secuencia de comandos `word_count.sh`
#!/bin/bash
echo Introduzca la palabra a buscar:
leer palabra_objetivo
echo Introduzca el nombre del archivo:
leer nombre de archivo
recuento=$(grep -o -w $palabra_objetivo $nombre de archivo | wc -l)
echo La palabra '$target_word' aparece $count veces en '$filename'.Explicación:
- echo Ingrese la palabra a buscar:: Esta línea muestra un mensaje que solicita al usuario que ingrese la palabra que desea buscar en un archivo.
- leer target_word: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada target_word.
- echo Ingrese el nombre del archivo:: Esta línea muestra un mensaje que solicita al usuario que ingrese el nombre del archivo que desea buscar.
- leer nombre de archivo: esta línea lee la entrada proporcionada por el usuario y la almacena en una variable llamada nombre de archivo.
- count=$(grep -o -w $target_word $filename | wc -l): esta línea realiza el trabajo principal del script. Analicémoslo más:
- grep -o -w $palabra_destino $nombre de archivo: esta parte del comando busca apariciones de la palabra_destino en el nombre de archivo especificado. Las opciones -o y -w garantizan que sólo se cuenten coincidencias de palabras completas.
- |: Esta es una tubería, que toma la salida del comando anterior y la envía como entrada al siguiente comando.
- wc -l: esta parte del comando utiliza el comando wc para contar el número de líneas en la entrada. La opción -l cuenta específicamente las líneas.
- El comando completo calcula el recuento de apariciones de target_word en el archivo y asigna ese recuento a la variable count.
14) Explique las diferencias entre salida estándar (stdout) y error estándar (stderr).
La principal diferencia entre salida estándar (stdout) y error estándar (stderr) es la siguiente:
- Salida estándar (salida estándar): Este es el flujo de salida predeterminado al que va la salida normal de un comando. Se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando>.
- Error estándar (stderr): Este es el flujo de salida de mensajes de error y advertencias. También se muestra en el terminal de forma predeterminada. Puedes redirigirlo a un archivo usando 2>.
15) Explique el concepto de declaraciones condicionales en scripts de shell.
Declaraciones condicionales en scripts de shell nos permiten tomar decisiones y controlar el flujo de nuestro script en base a ciertas condiciones. Permiten que nuestro script ejecute diferentes conjuntos de comandos dependiendo de si una condición particular es verdadera o falsa. Las declaraciones condicionales principales en los scripts de shell son la declaración if, la declaración elif (opcional) y la declaración else (opcional).
Aquí está la estructura básica de una declaración condicional en scripts de shell:
si [condición]; entonces
# Comandos a ejecutar si la condición es verdadera
elif [otra_condición]; entonces
# Comandos para ejecutar si otra_condición es verdadera (opcional)
demás
# Comandos a ejecutar si ninguna de las condiciones es verdadera (opcional)
serExplicación:
- [ condición ] = Comando que evalúa la condición y devuelve un estado de salida verdadero (0) o falso (distinto de cero).
- entonces = Es una palabra clave que indica que los comandos que la siguen se ejecutarán si la condición se evalúa como verdadera.
- elif = (abreviatura de else if) Es una sección que nos permite especificar condiciones adicionales a verificar.
- else = es una sección que contiene comandos que se ejecutarán si ninguna de las condiciones es verdadera.
- fi = Es una palabra clave que marca el final del bloque condicional.
16) ¿Cómo se leen líneas de un archivo dentro de un script de shell?
A leer lineas desde un archivo dentro de un script de shell, podemos usar varios métodos, pero un enfoque común es usar un bucle while en combinación con el comando de lectura. Así es como podemos hacerlo:
#!/bin/bash
archivo=/home/jayeshkumar/jayesh.txt
# Comprobar si el archivo existe
si [ -e $archivo ]; entonces
mientras que IFS= leer -r línea; hacer
echo Línea leída: $line
# Agregue su lógica de procesamiento aquí
hecho <$archivo
demás
echo Archivo no encontrado: $archivo
serExplicación:
- #!/bin/bash: esta es la línea shebang que especifica el intérprete (/bin/bash) que se utilizará para ejecutar el script.
- file=/home/jayeshkumar/jayesh.txt: esta línea define el archivo variable y asigna la ruta completa al archivo jayesh.txt en el directorio /home/jayeshkumar. Cambie esta ruta para que coincida con la ruta real del archivo que desea leer.
- si [ -e $archivo ]; entonces: Esta línea inicia una declaración if. Comprueba si el archivo especificado por la variable $file existe. El indicador -e comprueba la existencia del archivo.
- mientras que IFS= leer -r línea; hacer: esta línea inicia un bucle while que lee líneas del archivo.
- IFS=: El IFS (separador de campo interno) se establece en un valor vacío para preservar los espacios iniciales y finales.
- leer -r línea: esto lee la línea actual del archivo y la almacena en la línea variable.
- echo Línea leída: $line: Esta línea imprime el contenido de la línea que se leyó del archivo. La variable $line contiene el contenido de la línea actual.
- # Agregue su lógica de procesamiento aquí: este es un comentario de marcador de posición donde puede agregar su propia lógica para procesar cada línea. Por ejemplo, podrías analizar la línea, extraer información o realizar acciones específicas en función del contenido.
- done <$file: Esto marca el final del ciclo while. El archivo <$ redirige el contenido del archivo para que lo lea el bucle.
- else: si el archivo no existe (la condición en la declaración if es falsa), el script ejecuta el código en la rama else.
- echo Archivo no encontrado: $archivo: esta línea imprime un mensaje de error que indica que no se encontró el archivo especificado.
- fi: esta línea marca el final de la declaración if.
leyendo archivo
Aquí usamos ` persona con discapacidad `comando para obtener la ruta del directorio actual.
17) Escriba una función en un script de shell que calcule el factorial de un número determinado.
Aquí está el guión quecalcular el factorialde un número dado.
#!/bin/bash
# Definir una función para calcular factorial
calcular_factorial() {
número=$1
hecho=1
para ((i=1; i<=núm; i++)); hacer
hecho=$((hecho * i))
hecho
eco $hecho
}
# Solicitar al usuario que ingrese un número
eco Introduzca un número:
leer num_entrada
# Llame a la función calcular_factorial con el número de entrada
resultado_factorial=$(calcular_factorial $num_entrada)
# Mostrar el resultado factorial
echo Factorial de $input_num es: $factorial_resultExplicación:
- El script comienza con la línea shebang #!/bin/bash para especificar el intérprete.
- calcular_factorial() se define como una función. Se necesita un argumento, num, que es el número para el cual se debe calcular el factorial.
- Dentro de la función, fact se inicializa en 1. Esta variable almacenará el resultado factorial.
- El bucle for itera desde 1 hasta el número dado (num). En cada iteración, multiplica el valor actual de fact por el índice de bucle i.
- Una vez que se completa el ciclo, la variable de hecho contiene el factorial calculado.
- El script solicita al usuario que ingrese un número usando lectura.
- La función calcular_factorial se llama con el número proporcionado por el usuario y el resultado se almacena en la variable factorial_result.
- Finalmente, el script muestra el resultado factorial calculado.
Factorial
18) ¿Cómo manejas señales como Ctrl+C en un script de shell?
En un script de shell, puede manejar señales como Ctrl+C (también conocido como SIGINT) usando el comando trap. Ctrl+C genera una señal SIGINT cuando el usuario la presiona para interrumpir el script o programa en ejecución. Al utilizar el comando trap, puede especificar las acciones que se tomarán cuando se reciba una señal en particular. Así es como se manejan señales como Ctrl+C en un script de shell:
#!/bin/bash
limpiar() {
eco Script interrumpido. Realizando limpieza…
# Agregue sus acciones de limpieza aquí
salida 1
}
# Configurar una trampa para llamar a la función de limpieza cuando se recibe Ctrl+C (SIGINT)
limpieza de trampas SIGINT
# Resto de tu guión
eco Corriendo…
dormir 10
eco Terminado.Manejar las señales es importante para hacer que los scripts sean sólidos y garantizar que manejen las interrupciones inesperadas con elegancia. Puede personalizar la función de limpieza para que se ajuste a sus necesidades específicas, como cerrar archivos, detener procesos o registrar información antes de que salga el script.
Explicación:
- #!/bin/bash: esta línea shebang especifica el intérprete que se utilizará para ejecutar el script.
- cleanup() {…}: Esto define una función llamada limpieza. Dentro de esta función, puede incluir cualquier acción que deba realizarse cuando se interrumpe el script, como cerrar archivos, liberar recursos o realizar otras tareas de limpieza.
- limpieza de trampa SIGINT: El comando trap se utiliza para configurar un controlador de señales. En este caso, especifica que cuando se recibe la señal SIGINT (Ctrl+C), se debe ejecutar la función de limpieza.
- echo Ejecutando…, dormir 10, echo Terminado.: Estos son solo comandos de muestra para simular la ejecución de un script.
19) Cree un script que busque y elimine líneas duplicadas en un archivo de texto.
Aquí está nuestro script de Linux en el que eliminaremos líneas duplicadas de un archivo de texto.
#!/bin/bash
archivo_entrada=entrada.txt
archivo_salida=salida.txt
ordenar $archivo_entrada | uniq> $archivo_salida
echo Las líneas duplicadas se eliminaron con éxito.Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que el script debe interpretarse utilizando el shell Bash.
- La variable input_file se establece con el nombre del archivo de entrada que contiene líneas duplicadas (cámbielo por el nombre real del archivo de entrada).
- La variable output_file se establece con el nombre del archivo de salida donde se eliminarán los duplicados (cámbielo al nombre del archivo de salida que desee).
- El script utiliza el comando ordenar para ordenar las líneas en el archivo de entrada. Ordenar las líneas garantiza que las líneas duplicadas se agrupen.
- Luego, las líneas ordenadas se pasan a través del comando uniq, que elimina las líneas duplicadas consecutivas. El resultado de este proceso se redirige al archivo de salida.
- Una vez eliminados los duplicados, el script imprime un mensaje de éxito.
eliminación de línea duplicada
Aquí usamos ` gato `para mostrar el texto dentro del archivo de texto.
20) Escriba un script que genere una contraseña aleatoria segura.
Aquí está nuestro script para generar una contraseña aleatoria segura.
#!/bin/bash
# Función para generar una contraseña aleatoria
generar contraseña() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Llame a la función y almacene la contraseña generada
contraseña=$(generar_contraseña)
echo Contraseña generada: $contraseñaNota: En consecuencia, el usuario puede cambiar la longitud de su contraseña reemplazando el número '12'.
Explicación:
- El script comienza con un shebang (#!/bin/bash), que indica que debe interpretarse utilizando el shell Bash.
- La función generate_password está definida para generar una contraseña aleatoria. Así es como funciona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 divide los datos aleatorios filtrados en líneas de 12 caracteres de ancho cada una.
- head -n 1 selecciona la primera línea, dándonos efectivamente una secuencia aleatoria de caracteres de longitud 12.
- A la variable contraseña se le asigna el resultado de llamar a la función generate_password.
- Finalmente, la contraseña generada se muestra usando echo.
21) Escriba un script de shell que calcule el tamaño total de todos los archivos en un directorio.
Aquí hay un script de shell para calcular el tamaño total de todos los archivos en un directorio.
#!/bin/bash
directorio=/ruta/a/su/directorio
tamaño_total=$(du -csh $directorio | grep total | awk '{imprimir $1}')
echo Tamaño total de archivos en $directorio: $total_sizeExplicación:
- El script comienza con el código #!/bin/bash, lo que indica que debe interpretarse utilizando el shell Bash.
- La variable de directorio se establece en la ruta del directorio para el cual desea calcular el tamaño total del archivo. Reemplace /ruta/a/su/directorio con la ruta real.
- El comando du se utiliza para estimar el uso del espacio de archivos. Las opciones utilizadas son:
- -c: Produce un total general.
- -s: muestra solo el tamaño total del directorio especificado.
- -h: tamaños de impresión en un formato legible por humanos (por ejemplo, KB, MB, GB).
- La salida de du se canaliza a grep total para filtrar la línea que contiene el tamaño total.
- awk '{print $1}' se usa para extraer el primer campo (tamaño total) de la línea.
- El tamaño total calculado se almacena en la variable tamaño_total.
- Finalmente, el script muestra el tamaño total usando echo.
Tamaño total de archivos
Aquí usamos ` persona con discapacidad `comando para ver la ruta del directorio actual.
22) Explique la diferencia entre declaraciones if y elif en scripts de shell.
Característica `si`estación Declaración `elif` Objetivo Explique la diferencia entre declaraciones if y elif en scripts de shell. Proporciona condiciones alternativas para comprobar cuándo la condición if inicial es falsa. uso Utilizado para la condición inicial. Se utiliza después de la condición if inicial para comprobar condiciones adicionales. número de bloques Sólo puede tener uno si está bloqueado. Puede tener varios bloques elif, pero solo un bloque else (opcional). Ejecución Ejecuta el bloque de código asociado con la declaración if si la condición es verdadera. Si la condición es falsa, se ejecuta el bloque else (si está presente) (opcional). Comprueba cada condición elif en orden. Si una condición elif es verdadera, se ejecuta el bloque de código correspondiente y el script sale del bloque condicional completo. Si ninguna de las condiciones elif es verdadera, se ejecuta el bloque else (si está presente). Estructuras anidadas Se puede anidar dentro de otros bloques if, elif o else. No se puede anidar dentro de otro bloque elif, pero se puede usar dentro de un bloque if o else. Entendámoslo con un ejemplo.
#!/bin/bash
numero=5
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
demás
echo $número no es mayor que 10
ser
eco ---
si [ $número -gt 10 ]; entonces
echo $número es mayor que 10
elif [ $número -eq 10 ]; entonces
echo $número es igual a 10
demás
echo $número es menor que 10
serExplicación:
En este ejemplo, el primer bloque if verifica si el número es mayor que 10. De lo contrario, imprime un mensaje indicando que el número no es mayor que 10. El segundo bloque con declaraciones elif verifica múltiples condiciones secuencialmente hasta que una de ellas sea verdadera. En este caso, dado que el valor del número es 5, el resultado será:
diferencia if_elif
23) ¿Cómo se utiliza un bucle while para ejecutar comandos repetidamente?
Un bucle while se utiliza en scripts de shell para ejecutar repetidamente un conjunto de comandos siempre que una condición especificada sea verdadera. El bucle continúa ejecutando los comandos hasta que la condición se vuelve falsa.
Aquí está la sintaxis básica de un bucle while:
mientras [condición]; hacer
# Comandos a ejecutar
hechoExplicación:
- El bucle `` while` comienza con la palabra clave `` while` seguida de una condición entre corchetes `[ ]`.
- El cuerpo del bucle, que contiene los comandos que se ejecutarán, está encerrado entre las palabras clave 'do' y 'done'.
- El bucle primero verifica la condición. Si la condición es verdadera, se ejecutan los comandos dentro del cuerpo del bucle. Después de que se ejecuta el cuerpo del bucle, la condición se verifica nuevamente y el proceso se repite hasta que la condición se vuelve falsa.
Ejemplo: Si queremos imprimir números del 1 al 5
#!/bin/bash
contador=1
mientras [ $contador -le 5 ]; hacer
Número de eco: $contador
contador=$((contador + 1))
hechoExplicación:
- La variable del contador se establece en 1.
- El bucle while comprueba si el valor del contador es menor o igual a 5. Mientras esta condición sea verdadera, el bucle continúa ejecutándose.
- Dentro del bucle, el valor actual del contador se imprime mediante eco.
- El contador se incrementa en 1 usando la expresión $((contador + 1)).
mientras bucle
24) Cree un script de shell que busque y enumere todos los archivos vacíos en un directorio.
Script de Shell que puede usar para buscar y enumerar todos los archivos vacíos en un directorio usando los comandos `find` y `stat`:
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
ser
echo Archivos vacíos en el directorio $:
buscar $directorio -tipo f -vacíoExplicación:
- ` #!/bin/bash `: Esto se llama shebang y le indica al sistema operativo que use el shell Bash para interpretar y ejecutar el script.
- ` directorio=$1″ `: Esta línea asigna el primer argumento de la línea de comando (indicado por $1) a la variable ` directorio `.
- ` si [ -z $directorio ]; entonces `: Esta línea inicia una declaración if que verifica si el ` directorio ` la variable está vacía (-z prueba si hay una cadena vacía).
- ` Uso del eco: $0 `: Si el directorio está vacío, esta línea imprime un mensaje de uso, donde ` $0 ` representa el nombre del script.
- ` salida 1 `: Esta línea sale del script con un código de salida de ` 1 `, indicando un error.
- ` ser `: Esta línea marca el final de ` si `declaración.
- ` si [ ! -d $directorio ]; entonces `: Esto inicia otra declaración if para verificar si el directorio proporcionado existe (` -d `pruebas para un directorio).
- ` Error de eco: '$directorio' no es un directorio válido. `: Si el directorio proporcionado no existe, esta línea imprime un mensaje de error.
- ` salida 1 `: Sale del script con un código de salida de ` 1 `.
- ` ser `: Marca el final del segundo `: Marca el final del segundo ` si` declaración.
- ` echo Archivos vacíos en el directorio $: `: Si todo es válido hasta el momento, esta línea imprime un mensaje indicando que el script listará archivos vacíos en el directorio especificado.
- ` buscar $directorio -tipo f -vacío `: Esta línea utiliza el ` encontrar `comando para buscar archivos vacíos (` -vacío `) de tipo archivos normales (` -tipo f `) en el directorio especificado. Luego enumera estos archivos vacíos.
Encontrar archivos vacíos
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/
25) ¿Cuál es el propósito del comando de lectura en los scripts de shell?
El comando de lectura en los scripts de shell permite que el script le solicite información. Es como cuando una computadora te hace una pregunta y espera tu respuesta. Esto es útil para secuencias de comandos que necesitan que escriba algo o cuando la secuencia de comandos necesita trabajar con información de archivos. El comando de lectura ayuda al script a detenerse y esperar lo que usted escribe, y luego puede usar esa información para hacer más cosas en el script.
Sintaxis del comando de lectura:
read variable_name>Ejemplo : Si queremos tomar el nombre como entrada del usuario para imprimirlo.
#!/bin/bash
eco Por favor ingresa tu nombre:
leer nombre
echo ¡Hola, $nombre!leer nombre
En resumen, el comando de lectura se utiliza para capturar entradas del usuario o datos de archivos dentro de scripts de shell, lo que hace que los scripts sean más interactivos y versátiles.
26) Escriba un script de shell que convierta todos los nombres de archivos en un directorio a minúsculas.
Aquí hay un script de shell que convierte todos los nombres de archivos en un directorio a minúsculas.
#!/bin/bash
directorio=$1″
si [ -z $directorio ]; entonces
Uso del eco: $0
salida 1
sersi [ ! -d $directorio ]; entonces
Error de eco: '$directorio' no es un directorio válido.
salida 1
sercd $directorio || salida 1
para archivo en *; hacer
si [ -f $archivo ]; entonces
nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z')
[ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre
ser
hechoExplicación:
- #!/bin/bash : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- directorio=$1″ : Esta línea asigna el primer argumento de la línea de comandos al directorio de variables.
- si [ -z $directorio ]; entonces : Esta línea comprueba si la variable del directorio está vacía (no se proporciona ningún argumento al ejecutar el script).
- Uso del eco: $0 : Si el directorio está vacío, esta línea imprime un mensaje de uso con el nombre del script ($0).
- salida 1 : Esta línea sale del script con un código de salida de 1, lo que indica que se produjo un error.
- F i: Esto marca el final de la primera declaración if.
- si [ ! -d $directorio ]; entonces : Esta línea comprueba si el directorio especificado no existe (-d prueba un directorio).
- Error de eco: '$directorio' no es un directorio válido. : Si el directorio especificado no existe, esta línea imprime un mensaje de error.
- salida 1 : Sale del script con un código de salida de 1.
- ser : Marca el final de la segunda declaración if.
- cd $directorio || salida 1 : Cambia el directorio de trabajo actual al directorio especificado. Si el cambio de directorio falla (por ejemplo, directorio inexistente), el script sale con un código de error.
- para archivo en *; hacer: I para archivo en *; hacer: inicia un bucle que itera sobre todos los elementos en el directorio actual (* coincide con todos los nombres de archivos).
- si [ -f $archivo ]; entonces : Comprueba si el elemento de iteración del bucle actual es un archivo normal (-f prueba si es un archivo normal).
- nuevo nombre = $ (echo $ archivo | tr 'A-Z' 'a-z') : Convierte el nombre del archivo actual ($file) a minúsculas usando el comando tr y almacena el resultado en la variable newname.
- [ $archivo != $nuevo nombre ] && mv $archivo $nuevo nombre : Compara el nombre de archivo original con el nuevo nombre de archivo en minúsculas. Si son diferentes, cambia el nombre del archivo usando el comando mv.
- ser : Marca el final de la declaración if interna.
- hecho : Marca el final del bucle.
Nota : Necesitamos proporcionar un directorio como argumento al ejecutar el script. Aquí hemos utilizado la ruta del directorio actual home/jayeshkumar/test
27) ¿Cómo se pueden utilizar operaciones aritméticas dentro de un script de shell?
Las operaciones aritméticas se pueden realizar dentro de un script de shell utilizando varios métodos integrados. El shell proporciona mecanismos para cálculos aritméticos simples utilizando expansión aritmética como:
- Expansión aritmética ($((…)))
- Usando el comando expr
- Usando el comando let
Aquí está nuestro script de Shell que explica los tres métodos para operaciones aritméticas.
#!/bin/bash
número1=10
número2=5#Expansión aritmética ($((...)))
resultado=$((núm1 + núm2))
eco Suma: $resultado#Usando el comando expr
suma=$(expr $núm1 + $núm2)
eco suma: $ suma#Usando el comando let
sea suma = num1 + num2
eco suma: $ sumaExplicación:
- `#!/bin/bash` : Este es el shebang, que especifica que el script debe interpretarse utilizando el shell Bash.
- `núm1=10` y ` número2=5` : Estas líneas asignan los valores 10 y 5 a las variables ` número1 ` y ` número2 `, respectivamente.
- `#Expansión Aritmética ($((...)))` : Este es un comentario que indica el inicio de la sección que demuestra la expansión aritmética.
- `resultado=$((núm1 + núm2))` : Esta línea usa expansión aritmética para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` resultado `variable.
- `suma de eco: $resultado` : Esta línea imprime la suma calculada usando el valor almacenado en el ` resultado `variable.
- `#Usando el comando expr` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` exprés `comando para operaciones aritméticas.
- `suma=$(expr $num1 + $num2)` : Esta línea utiliza el ` exprés ` comando para calcular la suma de ` número1 ` y ` número2 ` y almacena el resultado en el ` suma `variable. Tenga en cuenta que el ` exprés `el comando requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
- `#Usando el comando let` : Este es un comentario que indica el inicio de la sección que demuestra el uso de ` dejar `comando para operaciones aritméticas.
- `sea suma = num1 + num2″` : Esta línea utiliza el ` dejar ` comando para calcular la suma de ` número1 ` y ` número2 ` y asigna el resultado al ` suma `variable. El ` dejar `El comando no requiere espacios alrededor de los operadores.
- `echo Suma: $suma` : Esta línea imprime la suma calculada usando el valor almacenado en el ` suma `variable.
aritmética
28) Cree un script que verifique si se puede acceder a un host de red.
Aquí hay un script de shell simple que usa el comando ping para verificar si se puede acceder a un host de red:
#!/bin/bash
anfitrión=$1″
si [ -z $host ]; entonces
Uso del eco: $0
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
serExplicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.
mayor número
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.
Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.
salida 1
ser
ping -c 4 $host
si [$? -ecuación 0 ]; entonces
echo $host es accesible.
demás
echo $host no es accesible.
ser
Explicación:
- Toma un nombre de host o una dirección IP como argumento y verifica si se proporciona el argumento.
- Si no se proporciona ningún argumento, muestra un mensaje de uso y sale.
- Utiliza el comando ping con la opción -c 4 para enviar cuatro solicitudes de eco ICMP al host especificado.
- Después de ejecutar el comando ping, verifica el estado de salida ($?). Si el estado de salida es 0, significa que se puede acceder al host y el script imprime un mensaje de éxito. De lo contrario, imprime un mensaje de error.
Nota : Necesitamos proporcionar un nombre de host como argumento al ejecutar el script. Aquí hemos utilizado google.com
29) Escriba un script de Shell para encontrar el elemento más grande en una matriz:
Aquí hay un script de shell para encontrar el elemento más grande en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (3 56 24 89 67)# Inicializa una variable para almacenar el valor máximo, comenzando con el primer elemento
máx=${matriz[0]}
# Iterar a través de la matriz
para número en ${array[@]}; hacer
# Compara cada elemento con el máximo actual
si ((núm> máx)); entonces
máx=$núm
ser
hecho# Imprime el valor máximo
echo El elemento máximo en la matriz es: $max
Explicación:
- ` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
- ` matriz = (3 56 24 89 67) `: La matriz se declara e inicializa con valores.
- ` máx=${matriz[0]} `: `max` se inicializa con el primer elemento de la matriz.
- ` para número en ${array[@]}; hacer `: Se utiliza un bucle `for` para iterar a través de los elementos de la matriz.
- ` si ((núm> máx)); entonces `: Una declaración `if` comprueba si el elemento actual `num` es mayor que el máximo actual `max`.
- ` max=$num`: Si`num `es mayor que `max`, `max` se actualiza con el valor de num.
- ` hecho `: El bucle `for` está cerrado.
- ` echo El elemento máximo en la matriz es: $max `: Finalmente, el script imprime el valor máximo encontrado en la matriz.

mayor número
columpio java
30) Escriba un script para calcular la suma de elementos en una matriz.
#!/bin/bash
# Declarar una matriz
matriz = (1 65 22 19 94)
# Inicializamos una variable para almacenar la suma
suma=0
# Iterar a través de la matriz y agregar cada elemento a la suma
para número en ${array[@]}; hacer
soy=$((soy + soy))
hecho# Imprime la suma
echo La suma de los elementos de la matriz es: $sum
Explicación:
` #!/bin/bash `: La línea shebang especifica que el script debe interpretarse utilizando el shell Bash.
` matriz = (1 65 22 19 94) `: La matriz se declara e inicializa con valores.
` suma=0 `: ` suma `se inicializa a cero para contener la suma de elementos.
` para número en ${array[@]}; hacer `:Un` para ` El bucle se utiliza para iterar a través de los elementos de la matriz.
` soy=$((soy + soy)) `: Dentro del bucle, cada elemento ` en uno ` se agrega a ` suma `variable.
` hecho `: El ` para `el bucle está cerrado.
`echo La suma de los elementos de la matriz es: $sum`: Finalmente, el script imprime la suma de todos los elementos de la matriz.

Suma de elementos
Conozca más sobre los scripts de Shell
- Diferencia entre cáscara y núcleo
- Diferencia entre Bind Shell y Reverse Shell
- Introducción al Shell de Linux y a los scripts de Shell
Conclusión
Todos los geeks sabemos que el script de shell es muy útil para aumentar la productividad del trabajo y también ahorrar tiempo. Entonces, en este artículo hemos cubierto 30 ejemplos de scripts de shell muy útiles y más estafadores . Esperamos que esta guía completa sobre ejemplos de scripts de Shell le ayude a comprender todo sobre los scripts de Shell.