La shell può essere più "offensiva"?


10

My Gentoo Linux è compilato con il flag USE offensivo abilitato:

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

È anche possibile selezionare fortune in base al grado di offensività:

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

Considerando che l'elenco degli elementi aromatizzati 1 fornito nel collegamento è breve - e personalmente non uso un pacchetto di simulazione di dinamica molecolare - c'è più di quel tipo di spezie nelle shell in Linux in generale (o UNIX)?


1- E 'bene ricordare che cowsayl'uscita può qualsiasi argomento, non solo fortuna, per esempio, l'output di un comando o script: cowsay -s $(script_in_path_or_command). Nota -s è solo per l'aspetto della mucca qui, vedi le manpage.


apt-get moo e aptitude moo, aptitude moo -v, aptitude moo -vv e così via. ma è basato su Debian.
Renan Vicente,

1
Ci dovrebbe essere un insulto speciale per ogni volta che corri sudo su -. Forse dovrebbe semplicemente cambiare la password di root in sudo -i.
derobert,

1
A proposito, ho pensato a un modo per farlo in bash, usando la stessa acrobazia che uso per colorare il prompt in base al codice di uscita e anche il comando di Ubuntu non ha trovato roba ... Lo scriverò e lo pubblicherà una volta tornato a casa.
derobert,

1
Non troppo offensivo, ma con quel tipo di umore: sl- Una locomotiva a vapore attraversa lo schermo se digiti "sl" invece di "ls"
Ouki,

1
Bene, sono andato a letto dopo essere tornato a casa, quindi non sono andato in giro a scrivere questo fino ad oggi ... ma pubblicato come risposta.
derobert,

Risposte:


9

Ok, usando PS1e command_not_found_handle, è possibile farti insultare da bash:

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:~$ 

Ed ecco /tmp/insult.shche mi sono procurato in precedenza.

### 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\$ "; 
`'

@ illuminÉ forse hai una versione precedente di bash, non sono sicuro di quando sia stata aggiunta quella funzionalità. Dichiara -n funziona?
derobert

Ho 4.2.45 (1)-release. Succede così che ho tonnellate di pkg da aggiornare. Quindi proverò questo sotto Arch più tardi! Grazie, mi sembra divertente, mi piace l'idea di mescolarlo! Saluti!

@ illuminÉ 4.3.0 qui, come è possibile che Debian abbia un bash più recente di Gentoo? Ad ogni modo, controllando il file NEWS, è una nuova funzionalità in 4.3. Vedrò di aggiungere una versione che non necessita della nuova funzionalità.
derobert

@ illuminÉ modificato, si spera ora funzionerà con bash 4.2.
derobert

Grazie, è un vero spasso. Funziona alla grande! Ma davvero Debian. Ho controllato e in effetti 4.3 non ce l'ha ancora fatta. Oh, a proposito, mi piaceva di più la storia di Bard, lol.

2

Qualcuno ha menzionato sl. In software come un interprete che mira alla massima prevedibilità, la sorpresa si qualifica certamente come qualcosa di "offensivo" nel contesto. Il manuale elenca anche le opzioni appropriate:

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.

... e un bug interessante :

BUGS
   It sometimes list directory contents.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.