Basic commands
Un modèle solide pour mes scripts bash
En tant que data engineer (ou bash engineer selon l’humeur), j’ai appris que commencer ses scripts avec un modèle solide est indispensable. Voici comment je prépare mes scripts Bash pour éviter les catastrophes et assurer leur fiabilité.
Le modèle de base
#!/usr/bin/env bash
########################################################
## Projet v1.0 # YYYY-MM-DD ##
## Développé par Addel ##
########################################################
# Full path of the current folder
SCRIPT_DIR=$(dirname "$0")
cd "$SCRIPT_DIR" || exit 0
# BASH MODES
# Exit on error. Append "|| true" if you expect an error.
set -o errexit
# Exit on error inside any functions or subshells.
set -o errtrace
# Do not allow use of undefined vars. Use ${VAR:-} to use an undefined VAR
set -o nounset
# Catch the error in case psql fails (but gzip succeeds) in `psql | gzip`
set -o pipefail
# Turn on traces, useful while debugging but commented out by default
# set -o xtrace
Compter le nombre de fichiers présents dans un répertoire
ls | wc -l
Afficher le nom de l’OS courant
uname -a
Afficher la version du noyau linux
uname -r
Afficher le nom de la distribution
cat /proc/version
Afficher les infos de la version d’ubuntu
lsb_release -a
Génèrer une clé privée et une clé publique dans ~/.ssh/
ssh-keygen -t rsa
Afficher le fingerprint de la clé ssh
ssh-keygen -l
Créer un alias
alias d='cd ~/dev'
Ajouter un user à un groupe
useradd -G {group-name} username
Génèrer un mot de passe
echo -n password | sha1sum | awk '{print $1}'
Chercher dans un dossier
ls -al | grep -E 'DocumentGeneratorManager|OperationManager'
Afficher les limitations de mémoires pour l’utilisateur courant
ulimit -a
Attribuer une valeur à l’option spécifiée
ulimit -n 2048
Chercher un fichier
find . -type f -name "*" -exec grep -l "FROM" {} \;
ou
find . -type f | xargs grep "FROM"
ou
find src/ -type f -print0 | xargs -0 grep -l "####"
Télécharger le fichier à partir de l’URL et extrait le contenu du fichier tar.gz.
curl http://domain.com/file.tar.gz | tar zx
Télécharger le fichier avec le nom original
curl -O http://domain.com/file.tar.gz
Créer une archive
tar -cvf foo.tar foo/
Compacter une archive
gzip foo.tar
Décompacter un fichier gzip
gzip -d file.gz
Extraction
tar -zxvf foo.tar.gz
Extraction
p7zip -d foo.7z
Décompacter un fichier zip
unzip file.zip
Afficher la liste des noms d’utilisateur sur un système Unix ou Linux
cat /etc/passwd | awk -F: '{print $ 1}'
Afficher la liste des groupes
cat /etc/group | awk -F: '{print $ 1}'
screen
screen -S test # Démarrer une session
ctrl+a+d # pour detacher
screen -r test # Reprendre une session
screen -d -r test # Reprendre une session qui avait été détachée
(exit dans un terminal pour le kill)
https://doc.ubuntu-fr.org/screen