Wie bringe ich Bash in Ubuntu ein paar Schimpfwörter bei?

Wie bringe ich Bash in Ubuntu ein paar Schimpfwörter bei?

Wenn Bash auf einen unbekannten Befehl (ein unbekanntes Wort?) stößt, geschieht Folgendes:

The program 'hello' can be found in the following packages:
 * hello
 * hello-debhelper
Try: sudo apt-get install <selected package>

ich wüsste gern, wie das geht, damit ich es bearbeiten oder davor etwas hinzufügen kann, um das unbekannte Wort in einem selbst erstellten Wörterbuch zu überprüfen, das Phrase:Antwort-Paare enthält, die dann an die Ausgabe gesendet werden können.

Ich bin schuldig, nicht genug danach gesucht zu haben ... aber die paar Bash-Anleitungen, die ich aufzutreiben versuchte, enthielten nichts dazu. Vielleicht suche ich an den falschen Stellen ... irgendwelche Hinweise?

Und ja, ich mache das, also jedes Mal, wenn ich „wtf“ eingebe, wenn ein Programm fehlschlägt, möchte ich etwas Nettes zurückbekommen …

Antwort1

Suchen Sie in Ihrer /etc/bash.bashrcnach der command_not_found_handleFunktionsdefinition.

Wenn Sie dieses Verhalten entfernen möchten, fügen Sie dies in Ihre .bashrc ein

[[ $(type -t command_not_found_handle) = "function" ]] && 
  unset -f command_not_found_handle

Wenn Sie anpassen möchten, können Sie

# see http://stackoverflow.com/questions/1203583/how-do-i-rename-a-bash-function
alias_function() {
  eval "${1}() $(declare -f ${2} | sed 1d)"
}

alias_function orig_command_not_found_handle command_not_found_handle 

command_not_found_handle() {
  command=$1
  shift
  args=( "$@" )

  do your stuff before
  orig_command_not_found_handle "$command" "${args[@]}"
  do your stuff after
}

Antwort2

Daskönnte möglicherweise nützlich sein ...

Das Paket „Befehl nicht gefunden“ gibt Ihnen die magische Antwort. Ich bin nicht sicher, ob es angepasst werden kann, aber es könnte einen Blick wert sein.

Eine andere Möglichkeit, das zu tun, was Sie meiner Meinung nach versuchen, wäre, Ihrer .bashrc-Datei einen Alias ​​hinzuzufügen, der eine Meldung ausgibt, wenn Sie „wtf“ oder etwas Ähnliches eingeben:

alias wtf='echo "chill out man"'

Fügen Sie dies zu Ihrer Datei ~/.bashrc hinzu und führen Sie dann Folgendes aus:source $HOME/.bashrc

Dies würde dann einfach eine Nachricht drucken, wenn Sie etwas wtfin Ihr Terminal eingeben. Sie könnten diesen Alias ​​auch ein Skript aufrufen lassen, das eine detailliertere Nachricht oder etwas Ähnliches druckt. Die Möglichkeiten sind endlos!

Antwort3

Dieses Verhalten ist in der systemweiten Bash-Konfigurationsdatei definiert /etc/bash.bashrc:

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found ]; then
  function command_not_found_handle {
    # check because c-n-f could've been removed in the meantime
    if [ -x /usr/lib/command-not-found ]; then
      /usr/bin/python /usr/lib/command-not-found -- "$1"
      return $?
    elif [ -x /usr/share/command-not-found ]; then
      /usr/bin/python /usr/share/command-not-found -- "$1"
      return $?
    else
      return 127
    fi
  }
fi

Um es anzupassen, überschreiben Sie einfach diese Funktion in Ihrer eigenen ~/.bashrc:

function command_not_found_handle {
  echo "Sorry, smotchkiss, try again."
}

Antwort4

@user606723, wenn Sie dieses Verhalten vollständig loswerden möchten:

sudo apt-get remove command-not-found command-not-found-data 

Wenn das nicht funktioniert, versuchen Sie Folgendes:

sudo apt-get purge command-not-found command-not-found-data 

Wenn Sie das Verhalten wiederherstellen möchten:

sudo apt-get install command-not-found

verwandte Informationen