Supuestos Linux

De MediaWiki
Ir a la navegación Ir a la búsqueda

Scripts

Tipo de comillas

Exemplo para comprender a diferenza entre comillas simples, dobres e inclinadas

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 a=ls #Definimos variable a co valor ls
3 echo '$a' #Comillas simples, non interpreta caracteres especiais coma o carácter $
4 echo "$a" #Comillas dobres, interpreta caracteres especiais coma o carácter $ e todo o que se atope entre elas e
5 #considerado como un só parámetro
6 echo `$a` #Comillas inclinadas, executa o contido dentro das comillas

Tipo de parámetros $ existentes

Exemplo para entednder o tipo de parámetros $ existentes

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 echo "O parámetro cero, $0, é o propio nome do script"
3 echo "Primeiro parámetro que recibo: $1, segundo: $2…"
4 echo "O número total de parámetros pasados na execución do script(excluido $0) é: $#"
5 echo "A lista completa de parámetros(excluido $0), separados por un espacio, é $*"
6 echo "O Identificador do proceso (PID) é $$"
7 echo "A saída da execución do último comando pode ser correcta(valor cero) ou errónea(valor distinto de cero),
8 sendo neste caso $?"

Operacións matemáticas con enteiros

Exemplo de operacións matemáticas con números enteiros

1 #!/bin/bash#Liña necesaria para saber que shell executará o script
2 expr 2 \* 2 #Fai a operación 2*2
3 echo "2 * 2" | bc #Fai a operación 2*2
4 echo $((2*2)) #Fai a operación 2*2

Lectura de variables

Exemplo para pedir variables por teclado

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 echo Dáme o teu nome #Pedimos o nome do usuario
3 read nome #O que se introduce por teclado gárdase como variable nome
4 echo Ola $nome #Ensinamos por pantalla Ola e o contido da variable nom

Condicionáis

Exemplos para comprender as condicións.

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 echo Dáme un número #Pedimos un número
3 read n1 #O que se introduce por teclado gárdase como variable n1
4 if test $n1 –lt 100 #Inicio Condición: Si o valor de n1 é menor que 100
5 then #entón
6 echo O número $n1 é menor que 100 #Ensina por pantalla unha mensaxe
7 else #senón
8 echo O número $n1 é maior que 100 #Ensina por pantalla unha mensaxe
9 fi #Fin Condición
 1 #!/bin/bash #Liña necesaria para saber que shell executará o script
 2 echo Dáme un número #Pedimos un número
 3 read n1 #O que se introduce por teclado gárdase como variable n1
 4 if test $n1 –le 100 #Inicio Condición: Si o valor de n1 é menor ou igual que 100
 5 then #entón
 6 if test $n1 –lt 100 ; then # I nicio Condición-2:Si o valor de n1 é menor que 100
 7 echo O número $n1 é menor que 100 #Ensina por pantalla unha mensaxe
 8 else #senón
 9 echo O número é igual a 100 #Ensina por pantalla unha mensaxe
10 fi #Fin Condición-2
11 else #senón
12 echo O número $n1 é maior que 100 #Ensina por pantalla unha mensaxe
13 fi #Fin Condición

Bucles

Exemplo de contador con for

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 for i in $(seq 1 100) #Comeza bucle contador onde a variable i toma o valor de 1 a 100
3 do #facer
4 echo Valor de i: $i #Ensina o valor da variable i para cada valor do bucle, así ensina os números de 1 ata 100
5 done #feito


Exemplo con while

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 i=1 #Definimos variable i co valor un.
3 while [ $i –le 100 ] #Comeza bucle contador onde a variable i toma o valor de 1 a 100: Namentras i sexa menor ou igual a 100
4 do #facer
5 echo Valor de i: $i #Ensina o valor da variable i para cada valor do bucle, sendo o primeiro valor un
6 i=$(($i+1)) #Aumenta unha unidade o valor anterior, se era un, entón agora valor igual a dous
7 done #feito

Exemplo con until

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 i=1 #Definimos variable i co valor un.
3 until [ $i –ge 101 ] #Comeza bucle contador onde a variable i toma o valor de 1 a 100: Ata que i sexa maior ou igual a 101
4 do #facer
5 echo Valor de i: $i #Ensina o valor da variable i para cada valor do bucle, sendo o primeiro valor un
6 i=$(($i+1)) #Aumenta unha unidade o valor anterior, se era un, entón agora valor igual a dous
7 done #feito

Exemplo de menú

Exemplo de funcionamiento de CASE

 1 #!/bin/bash #Liña necesaria para saber que shell executará o script
 2 echo Opcion1. Ver directorio actual #Amosa por pantalla
 3 echo Opcion2. Ler /tmp #Amosa por pantalla
 4 echo Opcion3. Sair #Sair
 5 echo Elixe opcion:1,2,3? #Escoller opcion
 6 read opcion #A opción escollida gárdase como valor na variable opcion
 7 case $opcion in #Comezo case para facer menu
 8 1) pwd #Se o valor da variable opcion é 1 fanse os seguintes comandos.
 9 ;; #Toda opción debe acabar con ;;
10 2) ls /tmp #Se o valor da variable opcion é 2 fanse os seguintes comandos.
11 ;; #Toda opción debe acabar con ;;
12 3) exit #Se o valor da variable opcion é 3 fanse os seguintes comandos.
13 ;; #Toda opción debe acabar con ;;
14 *) echo non elixiches nin 1,2,3 #Mensaxe por pantalla
15 ;; #Toda opción debe acabar con ;;
16 esac #Fin case para facer menu

Exemplo de funcións

Exemplo de funcion suma

1 #!/bin/bash #Liña necesaria para saber que shell executará o script
2 suma() { #Definimos a función suma
3 echo Dame numero #Pedimos un número
4 read n1 #Recollemos o número como valor na variable n1
5 echo Dame outro numero #Pedimos outro número
6 read n2 #Recollemos o número como valor na variable n2
7 echo A suma de $n1 e $n2 é: $(($n1+$n2)) #Facemos a suma
8 } #Finaliza a definición da función suma
9 suma #Chamamos á función suma

Exemplo copia de seguridade

Script copia de seguridade(backup) home usuario

 1 #!/bin/bash #Liña necesaria para saber que shell executará o script
 2 inicio() { #Definimos a función inicio
 3 echo Dáme usuario #Mensaxe por pantalla
 4 read user #Recollemos o usuario como valor na variable user
 5 testear #Chamamos á función testear
 6 } #Finaliza a definición da función inicio
 7 testear() { #Definimos a función testear
 8 if test –d /home/$user #Comeza condición: Si existe o directorio /home/$user
 9 then #entón
10 echo O directorio /home/$user existe #Mensaxe por pantalla
11 tar –czvf user.tar.gz /home/$use r #Empaquetar-Comprimir o directorio /home/$user
12 else #senón
13 echo O directorio /home/$user non existe #Mensaxe por pantalla
14 echo O contido de /home é o seguinte `ls /home` #Ensina o directorio /home para escoller ben o usuario
15 inicio #Chamamos á función inicio
16 fi #Finaliza Condición
17 } #Finaliza a definición da función testear
18 inicio #Chamamos á función inicio

Script copia de seguridade(backup) de calquer cartafol introducido polo usuario

 1 !/bin/bash #Liña necesaria para saber que shell executará o script
 2 inicio() { #Definimos a función inicio
 3 echo Dáme cartafol #Menxase por pantalla
 4 read cartafol #Recollemos o escrito como valor na variable cartafol
 5 testear #Chamamos á función testear
 6 } #Finaliza a definición da función inicio
 7 testear() { #Definimos a función testear
 8 if test –d $cartafol #Comeza Condición: Si existe o directorio $cartafol
 9 then #entón,
10 echo O directorio $cartafol existe #Mensaxe por pantalla
11 tar –cvjf cartafol.tar.bz2 $cartafol #Empaquetar e comprimir o directorio $cartafol
12 else #senón
13 echo O directorio $cartafol non existe #Mensaxe por pantalla
14 inicio #Chamamos á función inicio
15 fi #Finaliza a condición
16 } #Finaliza a definición da función testear
17 inicio #Chamamos á función inicio

Exemplo contador de ficheiros

Mostra por pantalla cantos ficheiros e subdirectorios do directorio actual conteñen no seu nome a letra “c”.

1 #!/bin/bash
2 # Duas posibilidades
3 ls *c* | wc -w
4 ls | grep c | wc -l

Exemplo que amosa nome e permisos dos ficheiros

recibe un directorio como parámetro e amosa o nome e os permisos dos seus ficheiros

1 #!/bin/bash
2 cd $1
3 for i in `ls`
4 do
5 # if [[ -f $i ]]
6 if ( test -f $i )
7 then ls -l $i | cut -c 1-10,56-
8 fi
9 done

Exemplo cos parámetros de chamada do script

Daremos dende a liña de comandos tres parámetros e mostrará o nome do comando e os argumentos que lle pasamos:

O comando e :./xxxx.
Os argumentos son: arg1 arg2 arg3
1 #!/bin/bash
2 echo "O comando e: $0"
3 echo "Os argumentos son: $1 $2 $3"

Exemplo listando contidos dos directorios con case

Deberá mostrar o seguinte menú: 1. Listar o contido do directorio actual 2. Listar o contido do directorio actual en formato largo 3. Sair

Cun valor diferente o script amosará a mensaxe "erro na selección!". Repetirase o menú ata que o usuario introduza a opción 3 (sair)

 1 #!/bin/bash
 2 sair=0
 3 until test $sair -eq 3
 4 # until [[ $sair -eq 3 ]]
 5 # until (( $sair==3 ))
 6 do
 7    echo "1. Listar o contido do directorio actual"
 8    echo "2. Listar o contido do directorio actual en formato longo"
 9    echo "3. Sair"
10 
11    read sair
12 
13    case $sair in
14    1) ls;;
15    2) ls -l;;
16    3) ;;
17    *) echo "Erro na seleccion!";;
18    esac
19 done

Exemplo de usuarios conectados no sistema

Garda 10 veces cada 2 minutos os usuarios conectados no sistema no ficheiro “usuarios.log”.

 1 #!/bin/bash
 2 
 3 p=1
 4 
 5 while [ $p -lt 10 ]
 6 do
 7    p=$((p+1))
 8    who>>usuarios.log
 9    sleep 2m
10 done

Exemplo modificación de permisos

Da todos os permisos de lectura e escritura aos ficheiros do directorio que se pasa como parámetro, e só de lectura e execución aos subdirectorios.

 1 #!/bin/bash
 2 cd $1
 3 for i in `ls`
 4 do
 5    if test -f $i
 6       then chmod 666 $i
 7    fi
 8    if test -d $i
 9       then chmod 444 $i
10    fi
11 done

Exemplo amosar contido de ficheiros

Acepta como argumentos os nomes dos ficheiros e amosa o contido de cada un deles, precendendo a cada un dunha liña: “Contido do ficheiro x”

1 #!/bin/bash
2 for i in $*
3 do
4    echo "Contido do ficheiro: $i"
5    cat $i
6 done

Exemplo existencia e permiso de ficheiros

Dado un nome de ficheiro, que amose a correspondente mensaxe:

  • se este existe, é un ficheiro normal e se pode escribir: O fichero f existe, e un ficheiro normal e se pode escribir.
  • Se non se pode escribir: O fichero f existe, e un ficheiro normal pero non se pode escribir.
  • Se non existe aparecerán as seguseguintes mensaxes: O ficheiro f non existe
  • Se é un directorio é un directorio: f e un directorio
 1 #!/bin/bash
 2 
 3 if [[ (-f $1) ]]
 4    then
 5    if [[ -w $1 ]]
 6       then echo "O ficheiro existe, e un ficheiro normal e se pode escribir"
 7    else 
 8       echo "O ficheiro existe, e un ficheiro normal peronon se pode escribir"
 9    fi
10 else
11    if [[ ! -e $1 ]]
12       then echo "O ficheiro non existe"
13    elif [[ -d $1 ]]
14       then echo "E un directorio"
15    fi
16 fi

Créditos

Elaborado a partir de EXEMPLOS SCRIPTS – SHELL BASH de Ricardo Feijoo Costa This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License