Le fichier .bashrc

De Wiki Amis SH
Aller à la navigation Aller à la recherche



Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack


Le fichier .bash_rc

Redémarrer la machine pour que les modifications effectuées dans le fichier .bash_rc soient appliquées.
La commande suivante permet de prendre en compte la nouvelle configuration immédiatement : source ~/.bash_rc

Faire une sauvegarde du fichier .bash_rc

Copier ~/.bash_rc vers le dossier /home/Utilisateur/.bak.bash_rc avec la commande cat ~/.bash_rc > ~/.bak.bash_rc

Exemples de codes pouvant être utilisés pour personnaliser le fichier .bash_rc

Alerte mail lors du login root ou d'un utilisateur

# Éditer le fichier /root/.bash_rc qui est exécuté au démarrage d'une session root pour envoyer un mail de notification à l'administrateur.
sudo nano /root/.bash_rc
# Éditer le fichier /utilisateur/.bash_rc qui est exécuté au démarrage d'une session utilisateur pour envoyer un mail de notification à l'administrateur.
sudo nano /home/utilisateur/.bash_rc
# ALERTE MAIL SUITE A UNE CONNEXION SSH :
# Les accents ne passent pas, remplacer un message du type "Accès Shell Serveur" par "Connexion au terminal du serveur".
echo "Connexion au terminal du serveur le `date` `who`" | mail -s "Accès au Shell du Serveur `hostname` par `who` depuis `who | cut -d"(" -f2 | cut -d")" -f1`" mail@visionduweb.com
# Le mail reçu sous Thunderbird ne va pas afficher les accents.
# Il serait préférable de rajouter le choix de l'encodage lors de l'envoie du mail.
# Sinon, le réglage peut également être effectué depuis Thunderbird : Affichage / Encodage du texte / Unicode

Ajouter une image de fond ascii à l'ouverture du terminal

Ajouter un fichier texte .ascii contenant une image ascii dans le dossier utilisateur : /home/Utilisateur/.ascii
Ajouter à la fin du fichier .bash_rc la ligne "cat /home/Utilisateur/.ascii".

Afficher la branche git courante en couleur

Avec le code suivant, quand vous serez positionné dans un dépôt git en local, la branche courante sera affichée en couleur.
Modifier le fichier .bash_rc qui se trouve dans le répertoire de votre utilisateur Linux.
Ajouter le code suivant dans le fichier ".bash_rc".
nano ~/.bash_rc
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
Exemple complémentaire : https://github.com/ToX82/git-bashrc
Exemple complémentaire : https://askubuntu.com/questions/730754/how-do-i-show-the-git-branch-with-colours-in-bash-prompt

Les alias

La ligne de commande est très efficace, mais taper au clavier prend du temps.
Raccourcir des commandes avec les alias en ajoutant dans le fichier ~/.bash_rc, juste après some more ls aliases, les alias souhaités.
Relancer la session utilisateur pour que les alias soient pris en compte.
# Lister les alias disponibles avec la commande :
alias
# Créer un alias temporaire :
alias c='clear'
# Désactiver un alias temporaire :
\aliasname
# Créer un alias permanent :
sudo nano ~.bash_rc
# Ajouter :
alias c='clear'
# Retirer un alias permanent du fichier .bash_rc :
unalias aliasname

Copier déplacer supprimer avec une demande de confirmation

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias ln='ln -i'

Vider le terminal

alias c='clear'

Préserver root

alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
alias chgrp='chgrp --preserve-root'

Afficher le header d'un site

alias header='curl -I'
# Lancer la commande :
header https://www.visionduweb.fr

Lancer un processus avec la priorité CPU et un accès disque le plus bas possible

# Lancer un processus avec la priorité CPU et un accès disque le plus bas possible :
alias ni='nice -n 19 ionice -c3'
# Lancer la commande :
ni NomDuProgramme

Personnalisation esthétique du terminal

alias ls='ls --color=auto'
alias ls='ls $LS_OPTIONS --color=auto'
alias ll='ls $LS_OPTIONS -al --color=auto'

Ouvrir plus rapidement un programme

alias vi='vim'

Devenir root

alias root='sudo -i'
alias su='sudo -i'

Extinction

alias reboot='sudo /sbin/reboot'
alias poweroff='sudo /sbin/poweroff'
alias halt='sudo /sbin/halt'
alias shutdown='sudo /sbin/shutdown'

Indenter avec Php-codesniffer

# Installer Php-codesniffer pour indenter du PHP, du JavaScript et les CSS.
alias indenter='phpcbf --standard=PSR2'

wget

alias wget='wget -c'

Exemples pour des alias avec apt-get

alias search='apt-cache search'
alias show='apt-cache show'
alias install='sudo apt-get install'
alias remove='sudo apt-get remove'
alias update='sudo apt-get update'
alias upgrade='sudo apt-get upgrade'
alias uplinux='sudo apt-get update && sudo apt-get upgrade'
Recharger .bash_rc avec la commande source ~/.bash_rc
Utiliser ensuite la commande update && upgrade pour lancer une mise à jour.
Noter que le shell par défaut de Debian s'appelle bash, mais qu'il en existe d'autres, selon les usages (zsh, csh, ...), pour lesquels le fonctionnement est légèrement différent.
Attention ! J'utilise zsh, et, zsh utilise ~/.zshrc et non pas ~/.bash_rc.
Enlever les alias ajoutés dans .bash_rc puisqu'il ne recharge pas, et, ajouter les alias dans le fichier .zshrc
Recharger .zshrc avec la commande source ~/.zshrc
Les alias update && upgrade sont maintenant fonctionnels.
# if user is not root, pass all commands via sudo #
if [ $UID -ne 0 ]; then
    alias reboot='sudo reboot'
    alias update='sudo apt-get upgrade'
fi

Créer des alias pour faciliter la lecture des logs avec CCZE

# Éditer le fichier .bash_rc
sudo nano ~/.bash_rc
# Ajouter les deux lignes suivantes :
lesslog() { ccze -A < $1 | less -R; }
logtail() { tail -f $1 | ccze -A; }
# Se connecter en root pour avoir le droit de consulter les logs.
su bash
# Utiliser les raccourcis créés de la façon suivante :
lesslog Chemin/vers/le/fichier/de/log
lesslog /var/log/syslog
logtail Chemin/vers/le/fichier/de/log
logtail /var/lor/syslog

Générer automatiquement un mot de passe de 16 caractères

# Générer automatiquement un mot de passe de 16 caractères.
# Lancer la commande "genpasswd 16" depuis le terminal.
genpasswd() {
        local l=$1
        [ "$l" == "" ] && l=20
        tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
}

Autres exemples d'alias

https://www.formatux.fr/formatux-fondamentaux/module-020-commandes/index.html#les-commandes-alias-et-unalias

Lancer des alias depuis la crontab

# Les alias suivants sont créés depuis le fichier .bash_rc pour la maintenance de Mediawiki.
alias mediawiki1='/usr/bin/php /var/www/wiki.visionduweb.fr/maintenance/deleteOldRevisions.php --delete'
alias mediawiki2='/usr/bin/php /var/www/wiki.visionduweb.fr/maintenance/rebuildrecentchanges.php'
alias mediawikibdd='sudo mysql -u UTILISATEUR -pPASSWORD -D BASE -e "TRUNCATE m3dia_l10n_cache;TRUNCATE m3dia_objectcache;"'
# Ouvrir le fichier de la crontab.
crontab -e
# Créer les tâches pour nettoyer Mediawiki avec les alias du fichier .bash_rc.
01 10 * * * bash -ic "mediawiki1 >> /var/log/cron-dropbox.log 2>&1"
02 10 * * * bash -ic "mediawiki2 >> /var/log/cron-dropbox.log 2>&1"
03 10 * * * bash -ic "mediawikibdd" >> /var/log/cron-dropbox.log 2>&1"
# Ajouter un message dans les logs suite au nettoyage des tables.
04 10 * * * echo La BDD de Mediawiki a été TRUNCATE. >> /var/log/cron-dropbox.log 2>&1

Utiliser des alias depuis la crontab n'est pas adapté

Laisser de côté les alias en situation de scripting, ce qui inclue le travail avec cron.
Cet outil n'est réellement qu'une commodité pour le travail en mode interactif pour raccourcir certaines commandes usuelles à quelques caractères.
Les alias sont d'ailleurs désactivés en shell script à dessein, pour éviter leur usage dans ce contexte.
D'après le manuel de bash(1), section ALIASES, les alias ne sont pas évalués quand le shell n'est pas interactif, à moins d'utiliser l'option "expand_aliases" en tête du script, via "shopt".
C'est ce qui a motivé le lancement du script Bash avec l'option "-i".
Sauf que le « pseudo terminal » fourni par l'environnement de cron ne fournit aucune manière d'interagir, d'où l'erreur :
bash: impossible de régler le groupe de processus du terminal (20286):
Ioctl() inapproprié pour un périphérique
bash: pas de contrôle de tâche dans ce shell
Utiliser une commande directement depuis cron semble donc mieux adapté que l'utilisation des alias :
01 10 * * * /usr/bin/php /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php --delete >> /var/log/cron-dropbox.log 2>&1
Il serait tout de même plus adapté d'utiliser un script exécutable /root/bin/mediawiki :
#!/bin/bash
exec /usr/bin/php \
/var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php \
--delete >> /var/log/cron-dropbox.log 2>&1
# A appeler comme ceci :
01 10 * * * /root/bin/mediawiki
# Ou comme cela si le fichier n'est pas exécutable :
01 10 * * * /bin/bash /root/bin/mediawiki
Pour les opérations un tantinet plus avancées, préférer les scripts à part entière.
Ça évitera d'avoir un fichier .bash_rc enfler jusqu'à démesure, et rendra plus rapide et moins gourmande en mémoire l'exécution de votre shell au jour le jour.
Préférer l'utilisation de fonctions et de scripts Bash, Guile, Lua.
Vous aurez les même problèmes pour les charger dans l'environnement de cron que les alias mais les commandes seront mieux construites.
On pourra réellement gérer les arguments avec la possibilité de les déclencher par des "trap" pour gérer les exceptions.
mediawiki-cleanup () {
    /usr/bin/php \
    /var/www/wiki.domaine.fr/maintenance/deleteOldRevisions.php \
    --delete
}

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Amis SH.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Amis SH vous permet de poser vos questions.
Consulter le site amis-sh.fr pour installer votre propre serveur web.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Miner de la cryptomonnaie.