Skip to content

Instantly share code, notes, and snippets.

@namuol
Last active July 24, 2023 11:53
Show Gist options
  • Save namuol/9122237 to your computer and use it in GitHub Desktop.
Save namuol/9122237 to your computer and use it in GitHub Desktop.
rage-quit support for bash
#!/usr/bin/env perl
# Script by Lars Noodén
use strict;
use warnings;
use utf8;
binmode(STDOUT, ":utf8");
my %flipTable = (
"a" => "\x{0250}",
"b" => "q",
"c" => "\x{0254}",
"d" => "p",
"e" => "\x{01DD}",
"f" => "\x{025F}",
"g" => "\x{0183}",
"h" => "\x{0265}",
"i" => "\x{0131}",
"j" => "\x{027E}",
"k" => "\x{029E}",
"l" => "|",
"m" => "\x{026F}",
"n" => "u",
"o" => "o",
"p" => "d",
"q" => "b",
"r" => "\x{0279}",
"s" => "s",
"t" => "\x{0287}",
"u" => "n",
"v" => "\x{028C}",
"w" => "\x{028D}",
"x" => "x",
"y" => "\x{028E}",
"z" => "z",
"A" => "\x{0250}",
"B" => "q",
"C" => "\x{0254}",
"D" => "p",
"E" => "\x{01DD}",
"F" => "\x{025F}",
"G" => "\x{0183}",
"H" => "\x{0265}",
"I" => "\x{0131}",
"J" => "\x{027E}",
"K" => "\x{029E}",
"L" => "|",
"M" => "\x{026F}",
"N" => "u",
"O" => "o",
"P" => "d",
"Q" => "b",
"R" => "\x{0279}",
"S" => "s",
"T" => "\x{0287}",
"U" => "n",
"V" => "\x{028C}",
"W" => "\x{028D}",
"X" => "x",
"Y" => "\x{028E}",
"Z" => "z",
"." => "\x{02D9}",
"[" => "]",
"'" => ",",
"," => "'",
"(" => ")",
"{" => "}",
"?" => "\x{00BF}",
"!" => "\x{00A1}",
"\"" => ",",
"<" => ">",
"_" => "\x{203E}",
";" => "\x{061B}",
"\x{203F}" => "\x{2040}",
"\x{2045}" => "\x{2046}",
"\x{2234}" => "\x{2235}",
"\r" => "\n",
" " => " "
);
while ( <> ) {
my $string = reverse( $_ );
while ($string =~ /(.)/g) {
print $flipTable{$1};
}
print qq(\n);
}
function fuck() {
killall -9 $2;
if [ $? == 0 ]
then
echo
echo " (╯°□°)╯︵$(echo $2|flip &2>/dev/null)"
echo
fi
}
@vidarsk
Copy link

vidarsk commented Mar 4, 2014

My version combining most of the above and some extra stuff.

  • bash with perl one-liner
  • use pkill if available, killall otherwise
  • helpful feedback if no args or no process
  • different emoticons for kill -9 / kill -15
  • random emoticons
  • works with "fuck you", "fuck off" (-9), or just "fuck"
function flip() {
  perl -C3 -Mutf8 -lpe '$_=reverse;y/a-zA-Z.['\'',({?!\"<_;‿⁅∴\r/ɐqɔpǝɟƃɥıɾʞ|ɯuodbɹsʇnʌʍxʎzɐqɔpǝɟƃɥıɾʞ|ɯuodbɹsʇnʌʍxʎz˙],'\'')}¿¡,>‾؛⁀⁆∵\n/' <<< "$1"
}

function fuck() {
  CMD="pkill"
  which $CMD >/dev/null || CMD="killall"
  echo
  if [ "$1" == "off" ]; then
    shift
    FLIP=(' (ノಠ益ಠ)ノ彡' '(ノಠ-ಠ)ノ彡')
    SIG="-9"
  else
    [ "$1" == "you" ] && shift
    FLIP=(' (╯°□°)╯︵' '(ノ ゜Д゜)ノ ︵' '(ノಥДಥ)ノ︵' ' ヽ(`Д´)ノ︵' ' (ノಥ益ಥ)ノ ')
    SIG=""
  fi
  [ -z "$1" ] && { echo "┬─┬ ノ( ゜-゜ノ) patience young grasshopper"; echo; return; }
  F=${FLIP[$RANDOM % ${#FLIP[@]} ]}
  if $CMD $SIG "$1"; then
    echo "$F$(flip $1)"; echo
  else
    echo "┬─┬ ︵ /(.□. \)"; echo
  fi
}

@Dekker1
Copy link

Dekker1 commented Mar 9, 2014

Love your version vidarsk, but as I work with zsh it needs some quotation marks for the string evaluation. So you would get:

function flip() {
  perl -C3 -Mutf8 -lpe '$_=reverse;y/a-zA-Z.['\'',({?!\"<_;‿⁅∴\r/ɐqɔpǝɟƃɥıɾʞ|ɯuodbɹsʇnʌʍxʎzɐqɔpǝɟƃɥıɾʞ|ɯuodbɹsʇnʌʍxʎz˙],'\'')}¿¡,>‾؛⁀⁆∵\n/' <<< "$1"
}

function fuck() {
  CMD="pkill"
  which $CMD >/dev/null || CMD="killall"
  echo
  if [ "$1" "==" "off" ]; then
    shift
    FLIP=(' (ノಠ益ಠ)ノ彡' '(ノಠ-ಠ)ノ彡')
    SIG="-9"
  else
    [ "$1" "==" "you" ] && shift
    FLIP=(' (╯°□°)╯︵' '(ノ ゜Д゜)ノ ︵' '(ノಥДಥ)ノ︵' ' ヽ(`Д´)ノ︵' ' (ノಥ益ಥ)ノ ')
    SIG=""
  fi
  [ -z "$1" ] && { echo "┬─┬ ノ( ゜-゜ノ) patience young grasshopper"; echo; return; }
  F=${FLIP[$RANDOM % ${#FLIP[@]} ]}
  if $CMD $SIG "$1"; then
    echo "$F$(flip $1)"; echo
  else
    echo "┬─┬ ︵ /(.□. \)"; echo
  fi
}

@Ultrabenosaurus
Copy link

@jjdekker that flip function doesn't seem to work on Git shell / cygwin / Windows 8.1:

flip

@tstarck
Copy link

tstarck commented Jan 19, 2016

A write-only coded works-for-me Bash function with some colours:

ragequit() {
  R=$(tput sgr0)
  echo -ne "\n $(tput bold; tput setaf 1)(╯°□°)╯$R$(tput setaf 3)"
  echo $1 | rev | \
  sed 's/\([acfhjmr]\)/\xc9\1/g;s/\([ktvwy]\)/\xca\1/g;s/e/\xc7\x9d/g;s/g/\xc6\x83/g;s/i/\xc4\xb1/g' | \
  tr 'abcdfhjklmnpqrtuvwy' '\220q\224p\237\245\276\236|\257udb\271\207n\214\215\216'
  echo "$R"
  pkill $1
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment