Bash
De whats Wiki
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_
}
