Bash

De whats Wiki

Dreceres ràpides: navegació, cerca

Tancar el file descriptor 2

>&2-

Conneccions de xarxa via bash

exec 3<>/dev/tcp/www.google.com/80
echo -e "GET / HTTP/1.1\n\n" >&3
cat <&3

Variable per executar algo després de cada comanda

PROMPT_COMMAND

Per redirigir tota la sortida d'errors d'un script a algun lloc

exec 2> /dev/null

Per a printar per sortida d'error les comandes que va executant de un script

set -x 
o 
#!bash -x
o 
sh -x file.sh

Per a printar per on va l'scrip en la seva execució

set -v

Per a interpretar un fitxer però no executar-lo

sh -n file.sh

Bucle que acava quan l'arxiu "pou" deixa d'estar buit

while [ ! -s pou ]; do {el que sigui}; done


Si es fa read sense posar variable, el resultat es guarda a $REPLY

read
echo $REPLY

ls q et llista els de /bin que no comencen per a,b,c,d,e,f ni g

ls /bin/[!a-g]
ls /bin/[^a-g]

Crear un arxiu temporal executant la comanda q ens retornarà el nom de l'arxiu creat

mktemp

Escollir una variable depenent del valor

case "$var" in
abc) "\$variable = abc" ;;
xyz) "\$variable = xyz ;;
esac

Definir un array

Array=(element1 element2 element3)

Tots els arxius anomenats file*.txt i file*.html

grep Linux file*.{txt,html}

Remplaçar cadenes de text

b=1344
b=${b/13/44}
echo $b
4444

Inicialitza un vector

vector=(pos1 pos2 pos3)

Printa la primera posicio

echo ${b[0]}

Printem tot el contingut

echo ${b[*]}

Per fer operacions aritmètiques

//3^4
let "z=3**4"
//3 mod 4
expr 3 % 4
//var=var*3
let "var *= 3"


Per saber la llargada d'un string

stringZ=abcABC123ABCabc
echo ${#stringZ}

Per printar el caracter numero 4

echo ${stringZ:3}

Per printar els 3 primers

echo ${stringZ:2:0}

Strip out shortest match between 'a' and 'C'.

echo ${stringZ#a*C} # 123ABCabc

Strip out longest match between 'a' and 'C'.

echo ${stringZ##a*C} # abc

Strip out shortest match between 'b' and 'c', from back of $stringZ.

echo ${stringZ%b*c} # abcABC123ABCa

Strip out longest match between 'b' and 'c', from back of $stringZ.

echo ${stringZ%%b*c} # a

Reemplaçar abc per xyz de l'string

echo ${stringZ/abc/xyz} # xyzABC123ABCabc

Si $varbenvinguda està definida, printa var, sino printa "hola"

echo ${varbenvinguda-hola}

Saltar fins a la propera iteració dl bucle, si se li passa parametres, salta N cops

continue N

Per fer un case

case "$variable" in
"$condition1" )
 command... 
 ;;

"$condition2" )
command...
;;

esac


Per fer menús:

PS3='Tria una opció: '
select opcio in "beans" "carrots" "potatoes" "onions" "rutabagas"
do
echo "Has triat: $opcio"
break # What happens if there is no 'break' here?
done
exit 0

Per fer un printf existeix la comanda

printf "hola %s" $nom

Per assignar a $1,$2,$3,etc..

set hola em dic albert

Per partir la sortida d'una comanda

set `uname -a`
//ara $1, $2,$3, etc... tindran els valors de cada part de la sortida

Per posar a readonly una variable

readonly PATH

Per agafar les opcions que ens passen per la linia de comandes

while getopts ":mnopq:rs" Option
do
case $Option in
m ) echo "Scenario #1: option -m- [OPTIND=${OPTIND}]";;
n | o ) echo "Scenario #2: option -$Option- [OPTIND=${OPTIND}]";;
p ) echo "Scenario #3: option -p- [OPTIND=${OPTIND}]";;
q ) echo "Scenario #4: option -q-\
with argument \"$OPTARG\" [OPTIND=${OPTIND}]";;
# Note that option 'q' must have an associated argument,
#+ otherwise it falls through to the default.
r | s ) echo "Scenario #5: option -$Option-";;
* ) echo "Unimplemented option chosen.";; # DEFAULT
esac
done
shift $(($OPTIND - 1))

Per canviar el procès de l'script per una comanda

exec comanda

Per canviar les opcions de la shell

shopt

Per saber info sobre un shell built-in

help type

Per esperar a que acavin els processos que corren en bg

wait

Per esperar a que acavi un procès

wait PID

Per fer benchmarks de scripts, diu quant tarda

time

Executar una comanda passant de les alias

command ls

o

\ls

Llistar comandes builtin

enable -a

Per executar un script amb el debug activat, on et mostra els comandes que es van llançant

bash -x script.sh

Funció que permet pujar un fitxer per ftp via script bash i comanda ftp

function send_log()
{
ftp -nvi <<_________PMA_
open $SERV_DST
user ftpstats password
binary
hash
cd $SERVIDOR
lcd $TEMPORAL/
put ${DOMINI}_${SERVEI[i]}_$SERVIDOR.$DATANUM.combined.log.gz
close
quit
_________PMA_
}