Bisakah shell lebih "ofensif"?

10

Gentoo Linux saya dikompilasi dengan flag USE ofensif yang diaktifkan:

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

Dimungkinkan juga untuk memilih kekayaan berdasarkan tingkat ofensif:

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

Mempertimbangkan daftar item rasa 1 yang disediakan dalam tautan ini pendek - dan saya pribadi tidak menggunakan paket simulasi dinamika molekuler - apakah ada lagi bumbu semacam itu dalam cangkang di Linux pada umumnya (atau UNIX)?


1- Hal ini baik untuk diingat bahwa cowsaykaleng keluaran argumen apapun, bukan hanya kekayaan, misalnya output dari perintah atau script: cowsay -s $(script_in_path_or_command). Catatan -s hanya untuk penampilan sapi di sini, lihat halaman manual.


sumber
apt-get moo dan aptitude moo, aptitude moo -v, aptitude moo -vv dan sebagainya. tapi ini untuk Debian.
Renan Vicente
1
Harus ada penghinaan khusus untuk setiap kali Anda berlari sudo su -. Mungkin seharusnya hanya mengubah kata sandi root sudo -i.
derobert
1
BTW, saya memikirkan cara untuk melakukan ini di bash, menggunakan aksi yang sama saya gunakan untuk mewarnai prompt berdasarkan kode keluar dan juga perintah Ubuntu tidak menemukan hal-hal ... Akan menulis dan mempostingnya begitu saya pulang.
derobert
1
Tidak terlalu menyinggung, tetapi dalam suasana hati seperti itu: sl- Lokomotif uap berjalan melintasi layar jika Anda mengetik "sl", bukan "ls"
Ouki
1
Yah, saya pergi tidur setelah pulang jadi tidak sempat menulis ini sampai hari ini ... tetapi diposting sebagai jawaban.
derobert

Jawaban:

9

Oke, dengan menggunakan PS1dan command_not_found_handle, mungkin saja bash menghina Anda:

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

Dan di sini /tmp/insult.shsaya bersumber di atas.

### 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
sumber
@ illuminÉ mungkin Anda memiliki versi bash yang lebih lama, tidak yakin kapan fitur itu ditambahkan. Apakah mendeklarasikan -n berfungsi?
derobert
Saya memiliki 4.2.45 (1) -release. Kebetulan saya punya banyak pkg untuk diperbarui. Jadi saya akan coba ini di bawah Arch nanti! Terima kasih di sana, sepertinya menyenangkan, saya suka ide mencampurnya! Bersulang!
@ illuminÉ 4.3.0 di sini, bagaimana mungkin Debian memiliki pesta yang lebih baru daripada Gentoo? Bagaimanapun, memeriksa file BERITA, ini adalah fitur baru di 4.3. Saya akan melihat tentang menambahkan dalam versi yang tidak memerlukan fitur baru.
derobert
@ illuminÉ diedit, semoga sekarang akan bekerja dengan bash 4.2.
derobert
Terima kasih, itu benar-benar hebat. Bagus sekali! Tapi memang Debian. Saya telah memeriksa dan memang 4.3 belum membuatnya. Oh, btw, aku lebih suka cerita lol Bard.
2

Seseorang yang disebutkan sl. Dalam perangkat lunak seperti penerjemah yang bertujuan untuk dapat diprediksi maksimum, kejutan tentu memenuhi syarat sebagai sesuatu yang "ofensif" dalam konteks. Manual ini juga mencantumkan opsi yang sesuai:

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.

... dan bug yang menarik :

BUGS
   It sometimes list directory contents.

sumber