私はSlackware Linuxについて長年の経験を持っていますが、この問題を見たことはありません。私は最近Debianサーバーを管理していますが、これが迷惑になりました。
私はしばしば、以前に入力したコマンドの最後の引数を繰り返すためにbashコマンドで "$_"を使用します。時々、次のような動作が表示されます。
dschrag@mo:~/dev/dancer$ ls -l アプリ/db/schema/ 合計12個 -rw-r--r-- 1 dschrag dschrag 268 5月19日 10:51 gau_account.sql -rw-r--r-- 1 dschrag dschrag 558 5月19日、13:02 gau_import.sql -rw-r--r-- 1 dschrag dschrag 270 5月19日 13:09 gau_source.sql dschrag@mo:~/dev/dancer$ cd $_ -bash: cd: _filedir: そのファイルやディレクトリはありません。 dschrag@mo:~/dev/dancer$
周りを見回すと_filedir
で使われたものでした/usr/share/bash-completion/bash_completion
。
私はファイル補完機能を何も考えずに使用しているので、この欠陥が発生したときに何をしていたのかを理解するのは困難です。この問題を調査するのに苦労した人はいますか?
ベストアンサー1
プログラム可能な完了(「bash完了」)を有効にしました。これはソース/etc/bash_completion
またはbashrcのどこかで/usr/share/bash-completion/bash_completion
行われます。たとえば、jessieのbashrcスケルトンでは、次のようになります。
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
完了する作業の1つはマルチングです$_
。クイック修正はbashの完成をロードしないことです。
complete-filename
別の回避策は、この関数の代わりにこの関数を使用してファイル名の完成を完了することですcomplete
。これは代わりにESC、/またはAlt+ /(端末の設定に応じて)を押すことを意味しますTab。bind
を使用または編集して、これらのキーがバインドされているキーを変更できます~/.inputrc
。
また、bashの完成に関するバグレポートを提出したいと思います。