Skip to content

Instantly share code, notes, and snippets.

@warlock
Last active December 20, 2022 13:41
Show Gist options
  • Save warlock/21b41a103285bab2266475d0d7001150 to your computer and use it in GitHub Desktop.
Save warlock/21b41a103285bab2266475d0d7001150 to your computer and use it in GitHub Desktop.
Documentacio Bash

Documentacio:

El numero 1 (programes), 5 (archius) permet seleccionar la tipologia de la cerca

man NUMERO_DE_TIPUS passwd

Filtrar documentacio per usuaris(La mateixa comanda apropos)

man -k users

Text de resum per saber que fa la comanda(La mateixa comanda whatis)

man -f users

Super TIP:

Arreglar comandes llargues (Fix Command). Li pots donar el numero de la comanda del historial que vols modificar.

fc

Sistema modernet:

tldr grep

Pintar la sortida:

echo hola
echo $?
false
echo $?

Executa un darrera de l'altre.

echo hola; echo hola

Executa un darrera de l'altre si el primer acaba be.

echo hola && echo adeu
false; echo adios
false && echo adios

Si un no s'executa, ho fa l'altre. Un OR.

false || echo adios

Pipes(Tuberies):

ls -1 | wc -l
ls | xargs -I_ ls _

Enviant sortides a altres documents:

echo "Hola Mon" > archiu
echo "Adeu" >> archiu
grep o < archiu

Variables:

nom_variable="hola"
echo $nom_variable

export $NOM_GLOBAL="adeu"
echo $ADEU

Alias

alias px="ps aux"

Funcions

function hola {
  local -r primer_argument=$1 # Aixo mante el scope
  echo "Aquest es el primer agument: $primer_argument"
}

Formes diferents de fer funcions:

#!/bin/bash

my_function () {
  echo "some result"
  return 55
}

my_function
echo $?

Referencies interessants funcions: https://linuxize.com/post/bash-functions/

Multiples inputs

mkdir hola deu
ls -1
mkdir "hola adeu"
ls -1

Secuencia per iterar del 1 al 10:

seq 1 10

Iteracio for

for x in $(seq 1 10); do
  echo "Num $x"
done

Iteracio while

while true
do
  echo "Hola"
done

Condicions

if true
then
  echo "hola"
fi
if false; then echo "aaaaa"; fi
if [-a archiu]; then echo "Exsiteix"; fi
if ((4 > 3)); then echo "Si es mes gran"; fi
if ./executable; then echo "tot be"; fi # Fara el echo del output
if ./executable > /dev/null; then echo "tot be"; fi # output redireccionat a devnull
if ./executable
then
  echo "tot be"
else
  echo "tot malament"
fi # Fara el echo del output

Sortida d'errors:

La sortida 1 es la sortida de consola normal. La sortida 2 es la sortida d'errors. Amb "2>&1" es redirigeix la sortia d'errors per la sortida 1 que va a parar a /dev/null.

if ./executable > /dev/null 2>&1 ;then
  echo "tot be"
else
  echo "tot malament"
fi

Eines pipe

Retorna la part superior d'un text

head archiu
head -n1 archiu
head -3 archiu
head -3 *.log
head -3 -q *.log # No apareix noms dels fichers

Retorna la part inferior d'un text

tails
tails -n1 archiu
tails -2 archiu

Retornar text paulatinament

more

Lectura de text.

Molt mes potent que more. Funciona com vi.

less

Imprimir text de documents:

cat archiu1 archiu2

Visualitzar les lineas del document:

cat -n archiu

Tallar textos.

  • -c amb , es per seleccionar els caracters
  • -c amb - es per seleccionar rangs
  • -d es per tallar per elements, despres es pot seleccionar els elements amb -f
cut -c1,2,3 /etc/passwd
cut -c1,3 /etc/passwd
cut -c3-10 /etc/passwd
cut -d":" -f1 /etc/passwd
cut -d":" -f1,2 /etc/passwd
cut -d":" -f1-4 /etc/passwd

Grep normal i invers:

cat hola | grep a
cat hola | grep -v a # Invers
cat hola | grep -i a # Case sensitive
grep -r hola # grep recursiu als documetns
ls | grep -E "^D.*s$" # Regex D principi s final

Filtrant AWK

ps aux | grep -i node | grep -v grep |  awk '{print $2}'
ps aux | grep -i node | grep -v grep | awk '{print $1}'
ps aux | grep -i node | grep -v grep | awk '{print $2}' | xargs kill -9
cat archiu.cvs | awk -F ',' '{print $2}' # Tallant per coma
grep 1 < archiu.cvs | awk -F ',' '{print $2}' # Filtrant i tallant per coma
cat archiu.cvs | awk -F ',' '{print $1-$2}'
cat archiu.cvs | awk -F ',' '{print $1" "$2}'

Fzf

ls | fzf
variable_resultant=$(ls | fzf) # Posar el valor de la seleccio al 
ps aux |grep -v grep | fzf | awk '{print $2}' | xargs kill -9

Localitzar binaris de comandes:

which git
which -a git # multiples documents
command -v git

Localitzar archius:

locate wifi.log

Buscar ultima comanda executada:

!!
!echo

Background Jobs

Per posar en background usar &

sleep 100 &
sleep 100 > /dev/null &
jobs

Control-Z per posar en pausa i "bg" per posar en background

Es pot posar el numero que vols posar en bg. Sempre s'usa el %

bg %1

Recuperar del background. (Foreground)

fg %1

Tips:

if (($(date +%s) % 2 )); then
  echo is odd
  exit 0
else
  >&2 echo "is even"
  exit 1
fi

Empaquetatge i compressio

  • -v per verbose
  • -c compacta
  • -x expandeix
  • -t mostra informacio que conte un tar
  • -f escriu o llegeix un ficher
  • -z comprimeix gunzip
  • -j comprimeix bzip2
  • -J comprimeix xz
  • -r afegir un ficher al pack compactat(no comprimit)
  • -P utilitza rutes absolutes
  • -p preserva els permisos / usuaris dels documents originals
  • -N compacta els elements a partir de la data solicitada
  • -d copia incremental
tar -cf archiu.tar /documents
tar -xf archiu.tar
tar -cf archiu.tar /documents /documents2 /documents3
tar -xfz archiu.tar.gz
tar -cfN 2016-04-02 archiu.tar /documents
tar -xfj archiu.tar.bz2

Compressio

Per comprimir i deixar el archiu original -k

Al comprimir el document original desapareix.

Descomprimir s'utilitza -d

  • gzip : gunzip
  • bzip : bunzip2
  • xz : unxz

spellcheck

Comanda per revisar i si els archius de bash estan ben fets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment