GNU/Linux >> Tutoriels Linux >  >> Linux

Dans Bash, quand créer un alias, quand créer un script et quand écrire une fonction ?

Il m'a fallu près de 10 ans d'utilisation de Linux pour poser cette question. Ce n'était que des essais et des erreurs et une navigation aléatoire sur Internet tard dans la nuit.

Mais les gens ne devraient pas avoir besoin de 10 ans pour cela. Si je débutais avec Linux, je voudrais savoir :Quand créer un alias, quand écrire un script et quand écrire une fonction ?

En ce qui concerne les alias, j'utilise des alias pour des opérations très simples qui ne prennent pas d'arguments.

alias houston='cd /home/username/.scripts/'

Cela semble évident. Mais certaines personnes font ceci :

alias command="bash bashscriptname"

(et ajoutez-le au .bashrc fichier)

Y a-t-il une bonne raison de faire cela ? J'essaie vraiment fort, mais je ne vois vraiment aucune circonstance dans laquelle je voudrais faire ça. Donc, s'il y a un cas limite où cela ferait une différence, veuillez répondre ci-dessous.

Parce que c'est là que je mettrais quelque chose dans mon PATH et chmod +x il, qui est une autre chose qui est venue après des années d'essais et d'erreurs Linux.

Ce qui m'amène au sujet suivant. Par exemple, j'ai ajouté un dossier caché (.scripts/ ) dans le répertoire personnel de mon PATH en ajoutant simplement une ligne à mon .bashrc (PATH=$PATH:/home/username/.scripts/ ), donc tout ce qui est exécutable s'y complète automatiquement.

Si j'en avais besoin.

Je n'ai pas vraiment besoin de ça, n'est-ce pas ? Je ne l'utiliserais que pour les langages qui ne sont pas le shell, comme Python.

Si c'est le shell, je peux simplement écrire une fonction dans le même .bashrc :

funcname () {
  somecommand -someARGS "[email protected]"
}

Comme je l'ai dit, j'ai découvert beaucoup de choses par essais et erreurs. Et je n'ai vraiment vu la beauté des fonctions que lorsque mon ordinateur est mort et que j'ai été obligé d'utiliser les ordinateurs des gens autour de moi alors qu'ils ne les utilisaient pas.

Au lieu de déplacer tout un répertoire de scripts d'un ordinateur à l'autre, j'ai fini par remplacer le .bashrc de tous les autres par le mien, car ils n'avaient même jamais fait une seule modification.

Mais ai-je raté quelque chose ?

Alors, que diriez-vous à un utilisateur Linux débutant quand créer un alias, quand écrire un script et quand écrire une fonction ?

Si ce n'est pas évident, je suppose que les personnes qui répondront à cette question utiliseront les trois options. Si vous utilisez uniquement des alias, ou uniquement des scripts, ou uniquement des fonctions—ou si vous utilisez uniquement des alias et des scripts ou des alias et des fonctions ou des scripts et des fonctions —cette question ne s'adresse pas vraiment à vous.

Réponse acceptée :

Un alias ne devrait effectivement pas (en général) faire plus que modifier les options par défaut d'une commande. Ce n'est rien de plus qu'un simple remplacement de texte sur le nom de la commande. Il ne peut rien faire avec des arguments mais les passe à la commande qu'il exécute réellement. Donc, si vous avez simplement besoin d'ajouter un argument au début d'une seule commande, un alias fonctionnera. Des exemples courants sont

# Make ls output in color by default.
alias ls="ls --color=auto"
# make mv ask before overwriting a file by default
alias mv="mv -i"

Une fonction doit être utilisée lorsque vous devez faire quelque chose de plus complexe qu'un alias, mais qui ne serait pas utile en soi. Par exemple, prenez cette réponse sur une question que j'ai posée sur la modification de grep comportement par défaut selon qu'il se trouve ou non dans un pipeline :

grep() { 
    if [[ -t 1 ]]; then 
        command grep -n "[email protected]"
    else 
        command grep "[email protected]"
    fi
}

C'est un exemple parfait de fonction car elle est trop complexe pour un alias (nécessitant différentes valeurs par défaut en fonction d'une condition), mais ce n'est pas quelque chose dont vous aurez besoin dans un script non interactif.

Connexe :comment exécuter rétroactivement un script en tant que root ?

Si vous obtenez trop de fonctions ou des fonctions trop volumineuses, placez-les dans des fichiers séparés dans un répertoire caché et sourcez-les dans votre ~/.bashrc :

if [ -d ~/.bash_functions ]; then
    for file in ~/.bash_functions/*; do
        . "$file"
    done
fi

Un script doit se suffire à lui-même. Il doit avoir une valeur en tant que quelque chose qui peut être réutilisé ou utilisé à plusieurs fins.


Linux
  1. Que fait Env X=() { :;}; Command' Bash Do et pourquoi n'est-il pas sécurisé ?

  2. Comment ajouter des nouvelles lignes dans des variables dans un script bash ?

  3. Comment définir les paramètres lorsque Pipe Bash Script to Bash ?

  4. Comment appeler une fonction Bash dans le script Bash à l'intérieur d'Awk ?

  5. Script bash pour supprimer tous les fichiers sauf N lorsqu'ils sont triés par ordre alphabétique

Utilisez ce script Bash utile pour observer les étoiles

Comment écrire un script bash avec des exemples

Tutoriel de script Bash pour les débutants :qu'est-ce que c'est, comment en écrire un et exemples de script

Fonctions bash

Bash Scripting Part6 - Créer et utiliser des fonctions Bash

Comment écrire un script bash ou automatiser l'ouverture de vi et modifier le document ?