A concha pode ser mais "ofensiva"?

10

Meu Gentoo Linux é compilado com a flag ofensiva USE habilitada:

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

Também é possível selecionar fortunas com base no grau de ofensividade:

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

Considerando que a lista de itens com sabor 1 fornecida no link é curta - e eu pessoalmente não uso um pacote de simulação de dinâmica molecular - existe mais esse tipo de especiaria no (s) shell (s) no (s) shell (s) no Linux em geral (ou UNIX)?


1- É bom lembrar que a cowsaysaída pode qualquer argumento, e não apenas a sorte, por exemplo, a saída de um comando ou script: cowsay -s $(script_in_path_or_command). Nota -s é apenas para a aparência da vaca aqui, consulte páginas de manual.


fonte
apt-get moo e aptitude moo, aptitude moo -v, aptitude moo -vv e assim por diante. mas é para o Debian.
Renan Vicente
1
Deve haver um insulto especial a cada vez que você corre sudo su -. Possivelmente deve apenas mudar a senha root para sudo -i.
31414 derobert
1
BTW, pensei em uma maneira de fazer isso no bash, usando o mesmo truque que uso para colorir o prompt com base no código de saída e também no comando do Ubuntu não encontrado coisas ... Irá escrever e publicá-lo assim que chegar em casa.
28414 derobert
1
Não muito ofensivo, mas nesse tipo de humor: sl- Um vapor corridas locomotiva em toda a tela se você digitar "sl" em vez de "ls"
Ouki
1
Bem, fui para a cama ao chegar em casa, então não escrevi isso até hoje ... mas postei como resposta.
31414 derobert

Respostas:

9

Ok, usando PS1e command_not_found_handle, é possível que o bash o 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:~$ 

E aqui é /tmp/insult.shque eu procurei acima.

### 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
fonte
Talvez você tenha uma versão mais antiga do bash, não tenho certeza de quando esse recurso foi adicionado. Declare -n funciona?
derobert
Tenho 4.2.45 (1) de lançamento. Acontece que tenho toneladas de pacotes para atualizar. Então, eu vou tentar isso com Arch mais tarde! Obrigado, parece divertido, eu gosto da ideia de misturar! Felicidades!
@ illuminÉ 4.3.0 aqui, como é possível que o Debian tenha um bash mais recente que o Gentoo? Enfim, verificando o arquivo NEWS, é um novo recurso no 4.3. Vou ver como adicionar uma versão que não precisa do novo recurso.
derobert
Espero que agora funcione com o bash 4.2.
derobert
Obrigado, isso é realmente uma explosão. Funciona bem! Mas de fato o Debian. Eu verifiquei e de fato 4.3 ainda não chegou. Ah, btw, eu estava mais no conto de Bard, lol.
2

Alguém mencionou sl. Em software como um intérprete que visa a máxima previsibilidade, a surpresa certamente se qualifica como algo "ofensivo" no contexto. O manual também lista as opções apropriadas:

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 um bug interessante :

BUGS
   It sometimes list directory contents.

fonte