Kann die Shell "offensiver" sein?

10

Mein Gentoo Linux wird mit aktiviertem offensiven USE- Flag kompiliert :

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

Es ist auch möglich, Vermögen nach dem Grad der Offensivität auszuwählen :

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

Wenn man bedenkt, dass die Liste der aromatisierten Elemente 1 im Link kurz ist - und ich persönlich kein Simulationspaket für die Molekulardynamik verwende - gibt es in Linux (oder UNIX) im Allgemeinen noch mehr solcher Gewürze in den Shell (s )?


1- Es ist gut daran zu denken, dass cowsayjedes Argument ausgegeben werden kann, nicht nur Vermögen, zum Beispiel die Ausgabe eines Befehls oder Skripts : cowsay -s $(script_in_path_or_command). Hinweis -s ist nur für das Aussehen der Kuh hier, siehe Manpages.


quelle
apt-get moo und aptitude moo, aptitude moo -v, aptitude moo -vv und so weiter. aber es ist für Debian basiert.
Renan Vicente
1
Bei jedem Lauf sollte es eine besondere Beleidigung geben sudo su -. Möglicherweise sollte es nur das Root-Passwort in ändern sudo -i.
Derobert
1
Übrigens habe ich mir überlegt, wie ich dies in Bash tun kann, indem ich denselben Stunt verwende, mit dem ich die Eingabeaufforderung basierend auf dem Exit-Code und auch Ubuntus Befehl nicht gefunden habe. Ich werde ihn aufschreiben und veröffentlichen, sobald ich nach Hause komme.
Derobert
1
Nicht zu anstößig, aber in dieser Stimmung: sl- Eine Dampflok fährt über den Bildschirm, wenn Sie "sl" anstelle von "ls"
eingeben
1
Nun, ich ging ins Bett, als ich nach Hause kam, also kam ich bis heute nicht dazu, dies zu schreiben ... sondern als Antwort.
Derobert

Antworten:

9

Ok, mit PS1und command_not_found_handleist es möglich, dass Sie von Bash beleidigt werden:

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

Und hier ist, /tmp/insult.shdass ich oben bezogen habe.

### 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
quelle
@ illuminÉ Vielleicht haben Sie eine ältere Version von Bash, nicht sicher, wann diese Funktion hinzugefügt wurde. Deklariert -n funktioniert?
Derobert
Ich habe 4.2.45 (1) -Veröffentlichung. Es kommt also vor, dass ich Tonnen von Paketen aktualisieren muss. Also werde ich das später unter Arch versuchen! Danke, scheint Spaß zu machen, ich mag die Idee, es zu verwechseln! Prost!
@ illuminÉ 4.3.0 hier, wie ist es möglich, dass Debian eine neuere Bash als Gentoo hat? Wenn Sie die NEWS-Datei überprüfen, ist dies eine neue Funktion in 4.3. Ich werde sehen, wie man eine Version hinzufügt, die die neue Funktion nicht benötigt.
Derobert
@ illuminÉ bearbeitet, wird hoffentlich jetzt mit Bash 4.2 funktionieren.
Derobert
Danke, das ist eine tolle Sache. Funktioniert super! Aber in der Tat Debian. Ich habe nachgesehen und 4.3 hat es noch nicht geschafft. Übrigens, ich war mehr in Bards Geschichte verliebt, lol.
2

Jemand erwähnt sl. In Software wie einem Interpreter, der maximale Vorhersagbarkeit anstrebt, gilt Überraschung sicherlich als etwas "Beleidigendes" im Kontext. Das Handbuch listet auch geeignete Optionen auf:

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.

... und ein interessanter Fehler :

BUGS
   It sometimes list directory contents.

quelle