プロが教える店舗&オフィスのセキュリティ対策術

よろしくお願いします。

windows7 professional edition (64bit)上で、cygwinを利用しています。
cygwinのシェルはtcshです。

=========================================================================
cygwinやlinuxの端末で、Tabキーによるファイル名やパスの補完(?: 入力省略)を
よく利用するのですが、時々Tabキーによる補完が効かないファイルがあります。

実行ファイル(.exe)の名前の後にアスタリスク(*)が付いているファイルです。

http://www.seta.media.ryukoku.ac.jp/manual/ubunt …
上記のサイトによると、プログラムソースをコンパイルして作成した実行ファイルのことだと
書いてありますが、Tabキーの補完が効かないファイルもおそらくこの類だと思われます。

何とかしてこのような実行ファイルでもTabキーによる補完が効くように設定できないものでしょうか。
=============================================================================

何か情報お持ちでしたらお願い致します。

A 回答 (1件)

まずは、 man tcsh でマニュアルを読みましょう。



http://linuxjm.sourceforge.jp/html/tcsh/man1/tcs …
> 補完と一覧 (+)

> シェル変数 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 で*付きに出力されます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
また、丁寧な解説をありがとうございました。

*付きのファイルは実行権限付きのファイルという意味だったのですね。。。

今回の質問に関して、私の方で勘違いしていた部分がありましたので、
補足までに説明させていただきます。


まず、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*"として補完リストに表示されるようです。

お礼日時:2013/02/01 23:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!