![Ubuntu の bash に罵り言葉を教えるためにはどうしたらいいでしょうか?](https://rvso.com/image/1036633/Ubuntu%20%E3%81%AE%20bash%20%E3%81%AB%E7%BD%B5%E3%82%8A%E8%A8%80%E8%91%89%E3%82%92%E6%95%99%E3%81%88%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%97%E3%81%9F%E3%82%89%E3%81%84%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
bash が未知のコマンド (単語?) に遭遇すると、次の処理が行われます:
The program 'hello' can be found in the following packages:
* hello
* hello-debhelper
Try: sudo apt-get install <selected package>
私が知りたいのは、これをどのように行うのかということです。そうすれば、これを編集したり、その前に何かを追加したりして、出力に送信できるフレーズ:返信のペアを持つ自家製辞書から未知の単語をクロスチェックすることができます。
十分に調べなかったのは残念ですが、私が探し出したいくつかの bash ガイドにはこれに関する情報はありませんでした。間違った場所を調べているのかもしれません。何かヒントはありますか?
はい、私はこれをやっているので、プログラムが失敗したときに「wtf」と入力するたびに、何かいいものが返ってきてほしいと思っています...
答え1
/etc/bash.bashrc
関数の定義については、 を参照してくださいcommand_not_found_handle
。
この動作を削除したい場合は、これを.bashrcに追加します。
[[ $(type -t command_not_found_handle) = "function" ]] &&
unset -f command_not_found_handle
カスタマイズしたい場合は、
# 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
}
答え2
これ潜在的に役に立つかもしれません...
command-not-found パッケージは、魔法の応答を提供します。カスタマイズできるかどうかはわかりませんが、試してみる価値はあるかもしれません。
あなたがしようとしていることを実行する別のオプションとしては、'wtf' などと入力するたびにメッセージを出力するエイリアスを .bashrc ファイルに追加することが考えられます。
alias wtf='echo "chill out man"'
これを ~/.bashrc ファイルに追加して、次を実行します。source $HOME/.bashrc
これにより、ターミナルに入力するたびにメッセージが印刷されますwtf
。また、このエイリアスで、より詳細なメッセージなどを出力するスクリプトを呼び出すこともできます。可能性は無限です。
答え3
この動作はシステム全体の Bash 設定ファイルで定義されます/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
カスタマイズするには、この関数を独自にオーバーライドするだけです~/.bashrc
。
function command_not_found_handle {
echo "Sorry, smotchkiss, try again."
}
答え4
@user606723、この動作を完全になくしたい場合は、次の手順に従ってください。
sudo apt-get remove command-not-found command-not-found-data
それでもうまくいかない場合は、次のことを試してください。
sudo apt-get purge command-not-found command-not-found-data
動作を元に戻したい場合は、次の手順を実行します。
sudo apt-get install command-not-found