• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[cygwin]ファイル名の補完が効かないファイル)

[cygwin]ファイル名の補完が効かないファイル

このQ&Aのポイント
  • cygwinやlinuxの端末でファイル名やパスの補完を利用する際、Tabキーによる補完が効かない場合があります。特に実行ファイル名の後にアスタリスク(*)が付いているファイルに関しては、Tabキーの補完が効かないことが多いです。
  • プログラムソースをコンパイルして作成した実行ファイルのことであり、Tabキーの補完が効かないファイルもおそらくこの類のファイルと思われます。
  • このような実行ファイルでもTabキーによる補完が効くように設定する方法について、詳細な情報がありましたら教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

まずは、 man tcsh でマニュアルを読みましょう。 http://linuxjm.sourceforge.jp/html/tcsh/man1/tcsh.1.html > 補完と一覧 (+) > シェル変数 fignore に、補完の際に無視するファイルの サフィックスのリストをセットできます。 セットされていませんか? > 実行ファイル(.exe)の名前の後にアスタリスク(*)が付いているファイルです そのURLにある説明は不十分で、「『lsに-Fオプションを付けたときに』 *が付いているファイル」とです。 実際のファイル名には*は付いてません。 # よく、.tcshrc等にaliasでlsを-F付きにしている場合があります。この場合、コマンド入力はlsでも実際にはls -F が実行されています。 # また、tcshの内部コマンドにls -Fと同様の出力をするls-Fがあります # alias ls で現在の内容の確認ができます。 # /usr/bin/ls とパス付きでコマンド入力すれば、aliasが無効になります。 もし「*まで補完されることを期待していて、*の前までしか補完されない」ということなら、 「*まで補完される」と言う考えが間違いです。 余談になりますが 「プログラムソースをコンパイルして作成した実行ファイル」も不正確です。 「実行権のあるファイル」です。 例えば、シェルスクリプトはテキストエディタを使って書いてそのまま実行します。コンパイルはしません。 ですが、chmodで実行権を付ければ、ls -F で*付きに出力されます。

jshannon9
質問者

お礼

ご回答ありがとうございます。 また、丁寧な解説をありがとうございました。 *付きのファイルは実行権限付きのファイルという意味だったのですね。。。 今回の質問に関して、私の方で勘違いしていた部分がありましたので、 補足までに説明させていただきます。 まず、tcshのマニュアルに記載のfignore変数ですが、 これが設定されているわけではありませんでした。 また、ls -Fで*付きのファイル名を表示していたわけではなく、 私の.tcshrc内の設定に、 set autolist があり、それによってtabキーの補完機能を使った際に、 *付きのファイル名でリスト表示されていました。 ================================================================================= 私の勘違いだったのですが、tabキーによる補完で、 例えば"ruby.exe*"のように、表示された場合、 ".exe"の拡張子部分までコマンドで入力しなければならないと思っていたため、 何故.exeまで補完されないんだろうか、と質問させていただいたのですが、 そもそも".exe"の拡張子部分までコマンドで入力する必要がないだけ、ということでした。 上記の例で言えば、 "ruby"というコマンド名を補完した時点でtabキーによる補完が完了しているので、 それ以上.exeの部分まで補完がされなかったというだけのことでした。 お騒がせしてすいませんでした。 ================================================================================= 余談ですが、cygwin環境下で、例えば"C:\ruby\bin/ruby"を実行する際に、 > cd /cygdrive/c/ruby/bin > ru   ### ここでtabキー のように、先に実行ファイルのあるディレクトリに移動してから tabキーでファイル名の補完リストを表示すると、*付きの"ruby.exe*"ではなく、 拡張子を除いた"ruby"が補完リストに表示されるのですが、 絶対パスで > /cygdrive/c/ruby/bin/ru ###ここでtabキー のように入力した際にtabキーで補完リストを表示させると、 *付きの"ruby.exe*"として補完リストに表示されるようです。

関連するQ&A