単一の同じファイル名のオートコンプリートを無視

単一の同じファイル名のオートコンプリートを無視

多くの場合、ファイル名(現在のディレクトリでタブを完了できる唯一のファイル)をコマンドの前に渡し、複数のタブを(間違って)押すと、同じファイル名が複数回完了し、削除またはキャンセルして再起動しました。

別のファイルを作成または非表示にせずにこの動作を無効にする方法はありますか?

ls <Tab>filename <Tab>filename <Tab>filename

答え1

nospace1つの解決策はオプションを使用することです。complete 組み込み

まず、完成を定義する方法を知る必要があります。ls

$ complete -p ls
complete -F _longopt ls

その後、追加して修正します。-o nospace

$ complete -o nospace -F _longopt ls

したがって、複数回押してもTab ↹一致するものはなく、コマンドラインにパラメータは追加されません。

副作用:に他のパラメータを追加するには、行の末尾にスペースを手動で追加する必要がありますls

これらの副作用を避けるために、_longopt関数を変更して同じ引数が2回一致しないようにすることができます(これはマイナーな作業ではないかもしれません)。

他のコマンドに適用して永続的にする方法

一致の後に末尾のスペースを追加するのがデフォルトの動作です。-o nospace指定されたコンプリートルールを使用するときに使用する以外に他の方法があるかどうかわかりませんcomplete

また、組み込みコマンドに対しても完了ルールがどこかに指定されていることに注意してください(私のラップトップのこのフォルダにあります)/usr/share/bash-completion。ファイルを見ると、/usr/share/bash-completion/bash-completion完成が定義されている場所を見ることができますls

complete -F _longopt a2ps awk base64 bash bc bison cat chroot colordiff cp \
  csplit cut date df diff dir du enscript env expand fmt fold gperf \
  grep grub head irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \
  mv netstat nl nm objcopy objdump od paste pr ptx readelf rm rmdir \
  sed seq sha{,1,224,256,384,512}sum shar sort split strip sum tac tail tee \
  texindex touch tr uname unexpand uniq units vdir wc who

同じ規則がさまざまなコマンド(たとえばcp、、mv... rm)に適用されるため、追加して変更すると、変更は他のすべてのコマンド-o nospaceに影響します。ls

グローバル設定を変更するのが不便な場合(rootアクセスが必要です)、次の~/.bash_completionように書くことができます(存在しない場合はこのファイルを作成します)。

complete -F _longopt -o nospace a2ps awk base64 bash bc bison cat chroot colordiff cp \
  csplit cut date df diff dir du enscript env expand fmt fold gperf \
  grep grub head irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \
  mv netstat nl nm objcopy objdump od paste pr ptx readelf rm rmdir \
  sed seq sha{,1,224,256,384,512}sum shar sort split strip sum tac tail tee \
  texindex touch tr uname unexpand uniq units vdir wc who

/usr/share/bash-completion/bash-completionここにリストされていない他のコマンドの完成を修正するには、ファイルまたはフォルダでそのコマンドを見つけます/usr/share/bash-completion/completions

関連情報