Le fichier .bashrc

De Analyse Développement Hacking
Sauter à la navigation Sauter à la recherche
Naviguer dans ce wiki : Accueil du wiki - Objectifs - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Consulter le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur     Consulter le Redmine : Accueil du Redmine

Le fichier .bashrc

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

Faire une sauvegarde du fichier .bashrc

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

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

Alerte mail lors du login root

Vous pouvez éditer le fichier /root/.bashrc qui est exécuté au démarrage d'une session root pour envoyer un e-mail de notification.
De cette façon, vous serez prévenu lorsqu'un login est effectué.
vi /root/.bashrc
Ajoutez la ligne (en modifiant l'adresse e-mail de destination) :
echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d"(" -f2 | cut -d")" -f1` monitoring@test.com

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 .bashrc 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 .bashrc qui se trouve dans le répertoire de votre utilisateur Linux.
Ajouter le code suivant dans le fichier ".bashrc".
nano ~/.bashrc
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 ~/.bashrc, 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 ~.bashrc
# Ajouter :
alias c='clear'
# Retirer un alias permanent du fichier .bashrc :
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 .bashrc avec la commande source ~/.bashrc
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 ~/.bashrc.
Enlever les alias ajoutés dans .bashrc 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 .bashrc
sudo nano ~/.bashrc
# 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
}

Lancer des alias depuis la crontab

# Les alias suivants sont créés depuis le fichier .bashrc 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 .bashrc.
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 .bashrc 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

Vous êtes sur le wiki de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Les informations présentes sur ce wiki sont issues d'une recherche personnelle.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

VALORISER LE WIKI

Valoriser le contenu partagé sur 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 :
Gagner des Altcoins - Miner des Altcoins.
Consulter le miroir du wiki depuis Planet Hoster : Le miroir du wiki version du 12 Juillet 2019.