Introduction
Bonjour, aujour'dhui j'vais expliquer tout ce qu'il y a à savoir sur le fameux .zshrc ou .bashrc. C'est vraiment pas compliqué.
Le .zshrc (pour Zsh) ou .bashrc (pour Bash) est un fichier de configuration exécuté à chaque ouverture d'un terminal. Il permet de définir des alias, variables d’environnement, fonctions, et d’autres réglages personnalisés. En gros, il configure ton shell à chaque démarrage. Pour ça faut savoir manier un peu bash mais y'a rien de sorcier j'vais expliquer.
Utilisation
Pour l'utiliser c'est simple normalement il est redémarré a chaque nouveau terminal ouvert, mais lorsqu'on le modifie il faut tapper source .zshrc
ou source .bashrc
pour mettre a jour nos modifs.
S'organiser
Comme expliqué précédemment le .zshrc permet de configurer tout un tas de truc qui pourront être utilisable dans le terminal, ça inclut :
- Les alias de commandes
- Les fonctions
- La coloration syntaxique
- Afficher l'heure
- Avoir un historique personnalisé
- Etc...
Donc un truc plutôt pratique c'est de faire différents fichiers exemples :
.zsh_aliases
pour gérer les alias.zsh_functions
pour gérer les fonctions plus complexes.zsh_colors
pour y charger toutes les couleurs- etc...
Le Skel
Avant de commancer j'aimerai juste vous parler de /etc/skel
qui contient les fichiers et dossiers par défaut copiés dans le home d’un nouvel utilisateur lors de sa création (via useradd
).
Donc en gros changer le fichier .bashrc
(ouai j'alterne) ici ca peut être plus pratique si vous créez souvent des utilisateurs.
Voilà
Modifions-le
Le fichier se trouve dans le /home
donc vous pouvez y accéder comme suit :
cd ~/.zshrc
En général vous aurez pas trop besoin de toucher la conf en place vous aurz juste à rajouter vos lignes pour le compléter.
Commençons par créer et faire un beau fichier pour les alias
nano .~/zsh_aliases
# Alias pour naviguer vite fait
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias ~='cd ~'
alias c='clear'
# Alias pr le système
alias reload='source ~/.zshrc' # Recharge la config
alias ls='ls --color=auto'
alias ll='ls -lhF' # Liste détaillée
alias la='ls -A' # Tous les fichiers sauf . et ..
alias l='ls -CF' # Liste compacte
alias df='df -h' # Espace disque
alias du='du -h' # Taille dossier
alias free='free -h' # RAM dispo
# packages
alias update='sudo apt update && sudo apt upgrade -y'
alias install='sudo apt install'
alias remove='sudo apt remove'
# Plus agréable à écrire
alias please='sudo'
alias fuck='sudo $(fc -ln -1)' # Réexécute dernière commande avec sudo
alias h='history'
alias grep='grep --color=auto'
# Dev
alias v='nvim'
alias code='code .' # VS Code dans le dossier courant
alias pyserve='python3 -m http.server' # Serveur local rapide
alis jserve='npm run dev'
# Git (j'utilises pas ceux la moi)
alias gs='git status'
alias ga='git add .'
alias gc='git commit -m'
alias gp='git push'
alias gl='git log --oneline --graph --decorate'
alias gco='git checkout'
alias gb='git branch'
alias gd='git diff'
# Network
alias ip='ip -c -br a' # Adresse IP
alias ports='ss -tuln' # Ports ouverts
alias myip='curl ifconfig.me' # IP publique
# ───🔁 RECHARGER──────────────────────────────────────────────────────
alias zshreload='source ~/.zshrc && echo "✅ zsh reloaded"'
Ensuit on va se faire un joli fichier de fonctions
nano ~/.zsh_functions
# Décompression Fastoche
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "'$1' : format non reconnu" ;;
esac
else
echo "'$1' n’est pas un fichier valide"
fi
}
# Créer + Entrer dans le dossier
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Timer
timer() {
local start=$(date +%s)
"$@"
local end=$(date +%s)
echo "⏱️ Temps écoulé : $((end - start))s"
}
# Ping Intelligent
fastping() {
ping -c 5 -i 0.2 "$1"
}
# Nettoyage des dépendances
cleanup() {
sudo apt autoremove --purge -y && sudo apt autoclean && sudo apt clean
}
# ───🔎 RECHERCHE DANS L’HISTORIQUE───────────────────────────────────
# Celle la c'est pour bash
hgrep() {
history 0 | grep "$1"
}
# Et celle la pour zsh
hgrep() {
builtin history -E 1 | grep "$1"
}
# Kill un processur simplement
pkkill() {
ps aux | grep "$1" | grep -v grep
echo -n "PID à tuer ? "
read pid
kill -9 $pid && echo "Process $pid tué."
}
# Affichage du patj rapide
showpath() {
echo $PATH | tr ':' '\n'
}
# Rejouer une commande de l'historique qui contient un mot clé
runcmd() {
local cmd=$(builtin history -E 1 | grep "$1" | tail -n 1 | sed 's/ *[0-9]* *//')
if [[ -n "$cmd" ]]; then
echo "→ $cmd"
eval "$cmd"
else
echo "❌ Aucun historique contenant : $1"
fi
}
# Allez rapidement dans un dossier du système
go() {
cd "$(find . -type d -name "$1" 2>/dev/null | head -n 1)" || echo "📁 Aucun dossier trouvé"
}
cheatsheet() {
command --help 2>&1 || man "$1" || echo "Pas de cheat disponible"
}
# Pour les devs celle la :
cleanup() {
echo "🧹 Suppression des fichiers inutiles..."
find . -name "*.DS_Store" -delete
find . -name "*.pyc" -delete
find . -name "__pycache__" -type d -exec rm -r {} +
echo "✔️ Nettoyage terminé."
}
Breeeeeeeeffff J'peux en faire des milliers de fonctions mais on va s'arrêter là et maintenant on va aller faire en sorte que nos deux nouveaux fichiers s'activent à chaque fois qu'on va sourcer le zshrc.
echo -e "\nsource ~/.zsh_functions\nsource ~/.zsh_aliases" >> ~/.zsh_rc
Et voilà c'est fini.
Conclusion
Vous vous êtes arrangé la vie pour tout le temps où vous utiliserez Linux et ça a pris 5 minutes puisque vous avez copié collé. Certes ca demande de s'adapter aux nouvelles commandes mais avec le temps c'est une obène.