La coquille peut-elle être plus «offensive»?

10

My Gentoo Linux est compilé avec le drapeau USE offensif activé:

# sudo su -
Password: 
Hold it up to the light --- not a brain in sight!
Password: 

Il est également possible de sélectionner des fortunes en fonction du degré d'offensivité:

# fortune -o kernelcookies | cowsay -b
 _________________________________________ 
/ /* This is total bullshit: */           \
|                                         |
\ linux-2.6.6/drivers/video/sis/init301.c /
 ----------------------------------------- 
        \   ^__^
         \  (==)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Étant donné que la liste des éléments aromatisés 1 fournie dans le lien est courte - et je n'utilise pas personnellement un package de simulation de dynamique moléculaire - y a-t-il encore ce genre d'épice dans les coquilles sous Linux en général (ou UNIX)?


1- Il est bon de se rappeler que cowsaypeut émettre un argument, et pas seulement des fortunes, par exemple la sortie d'une commande ou d'un script: cowsay -s $(script_in_path_or_command). Remarque -s est juste pour l'apparence de la vache ici, voir les pages de manuel.


la source
apt-get moo et aptitude moo, aptitude moo -v, aptitude moo -vv et ainsi de suite. mais c'est pour Debian.
Renan Vicente
1
Il devrait y avoir une insulte spéciale à chaque fois que vous courez sudo su -. Peut-être qu'il devrait simplement changer le mot de passe root sudo -i.
derobert
1
BTW, j'ai pensé à un moyen de le faire en bash, en utilisant le même stunt que j'utilise pour colorer l'invite en fonction du code de sortie et également de la commande d'Ubuntu introuvable.
derobert
1
Pas trop offensant, mais dans ce genre d'humeur: sl- Une locomotive à vapeur traverse l'écran si vous tapez "sl" au lieu de "ls"
Ouki
1
Eh bien, je suis allé me ​​coucher en rentrant à la maison, donc je n'ai pas pu écrire ceci jusqu'à aujourd'hui ... mais j'ai posté comme réponse.
derobert

Réponses:

9

Ok, en utilisant PS1et command_not_found_handle, il est possible que bash vous insulte:

anthony@Watt:~$ . /tmp/insult.sh 
anthony@Watt:~$ sl
bash: sl: command not found, incompetent spoony bard
anthony@Watt:~$ ls /wrong/path
ls: cannot access /wrong/path: No such file or directory
Learn to type, second-rate Horrified Heron.
anthony@Watt:~$ 

Et voici /tmp/insult.shque j'ai trouvé ci-dessus.

### Data ###
bash_insulter_sentences=(
    'Have you considered Windows, %s?\n'
    'Learn to type, %s.\n'
    'Fell asleep at the keyboard again, %s?\n'
    "Failure is common when you're a %s, isn't it?\n"
)

bash_insulter_subjects=(
    'spoony bard'           # we all played this, right?
    'extra-Warty Warthog'
    'Dazed Drake'
    'Fidgety Fawn'
    'Horrified Heron'       # etc.
)

bash_insulter_adjectives=(
    'incompetent ' # these have built-in spacing
    'inept '
    'second-rate '
    '' # chance of none
    ''
)

### Functions to generate insults ###
bash_insulter_random_element() {
    if [ ${BASH_VERSINFO[0]} -lt 4 ] || \
        [ ${BASH_VERSINFO[0]} -eq 4 -a ${BASH_VERSINFO[1]} -lt 3 ]; then
        # bash before 4.3 doesn't have -n
        eval "local var=(\"\${$1[@]}\")"
    else
        local -n var="$1"
    fi
    local len=${#var[@]}
    echo -n "${var[$RANDOM % len]}" # Slightly biased. Don't care.
}

bash_insulter_full_subject() {
    bash_insulter_random_element bash_insulter_adjectives
    bash_insulter_random_element bash_insulter_subjects
}

bash_insulter_do_insult() {
    printf "$(bash_insulter_random_element bash_insulter_sentences)" "$(bash_insulter_full_subject)"
}

### set up ###
command_not_found_handle() {
    echo "bash: $1: command not found, $(bash_insulter_full_subject)"
    return 127
}

PS1='`
    if [ 0 -ne $? -a 127 -ne $? ]; then
        bash_insulter_do_insult
    fi
    echo "\u@\h:\w\$ "; 
`'
derobert
la source
@ illuminÉ vous avez peut-être une ancienne version de bash, vous ne savez pas quand cette fonctionnalité a été ajoutée. Declare -n fonctionne-t-il?
derobert
J'ai la version 4.2.45 (1). Il se trouve que j'ai des tonnes de paquets à mettre à jour. Je vais donc essayer cela sous Arch plus tard! Merci là-bas, ça a l'air sympa, j'aime l'idée de mélanger ça! À votre santé!
@ illuminÉ 4.3.0 ici, comment est-il possible que Debian ait un bash plus récent que Gentoo? Quoi qu'il en soit, en vérifiant le fichier NEWS, c'est une nouvelle fonctionnalité de 4.3. Je vais voir comment ajouter une version qui n'a pas besoin de la nouvelle fonctionnalité.
derobert
@ illuminÉ édité, nous l'espérons, fonctionnera maintenant avec bash 4.2.
derobert
Merci, c'est une explosion vraiment loll. Fonctionne très bien! Mais en effet Debian. J'ai vérifié et en effet 4.3 n'a pas encore réussi. Oh, btw, j'étais plus dans le conte de Bard lol.
2

Quelqu'un l'a mentionné sl. Dans un logiciel comme un interprète qui vise une prévisibilité maximale, la surprise peut certainement être considérée comme quelque chose d '"offensant" dans son contexte. Le manuel répertorie également les options appropriées:

DESCRIPTION
   sl  is a highly advanced animation program for curing your bad habit of
   mistyping.

   -a     An accident is occurring. People cry for help.

   -l     Little version

   -F     It flies like the galaxy express 999.

   -c     C51 appears instead of D51.

... et un bug intéressant :

BUGS
   It sometimes list directory contents.

la source