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

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

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

よろしくお願いします。 windows7 professional edition (64bit)上で、cygwinを利用しています。 cygwinのシェルはtcshです。 ========================================================================= cygwinやlinuxの端末で、Tabキーによるファイル名やパスの補完(?: 入力省略)を よく利用するのですが、時々Tabキーによる補完が効かないファイルがあります。 実行ファイル(.exe)の名前の後にアスタリスク(*)が付いているファイルです。 http://www.seta.media.ryukoku.ac.jp/manual/ubuntu/faq/faq.html 上記のサイトによると、プログラムソースをコンパイルして作成した実行ファイルのことだと 書いてありますが、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

  • 【Debian】apt-get install のファイル名をtabキーで補完できない?

    Debian Sarge(2.6.18-4-686)を利用し始めたばかりの学生です。 root権限になってパッケージのインストールの時にapt-get installで指定するファイル名をtabキーで補完できません。 一般ユーザですと、パッケージ候補などを表示してくれます。 シェルはデフォルトのbashを利用しており、調べた結果、補完動作を拡張させるために /etc/bash.bashrcで/etc/bash_completionを読み込む設定に変更してみましたが、apt-getの補完の様子は変わりませんでした。 この現象は、私のパソコンだけなのかセキュリティなどの理由でこのような設定になっているのか分からないのですが、 tabキーは便利なので補完できるように設定する方法がありましたら教えてください。 また、他のみなさんの環境ではroot権限でapt-getのtabキー補完は可能なのかどうか教えてください。 よろしくお願いします。

  • zshのtab補完について

    よろしくお願いします。 つい最近、tcshからzshに乗り換えて、設定をいろいろいじっているのですが、 Tabキーによる補完の動作で、デフォルト(?)だと使いづらいものがあり、 なんとかしたいのですが、設定方法がわからず困っています。 ご助言をお願い致します。 変更したいのは以下の2点の動作です。 ========================================================= (1) "./"に続く補完で、実行権限なしのファイルも補完候補にしたい。 ========================================================= > ls -l -rwxrwxrwx+ 1 username main.sh -rw-r--r--+ 1 username main2.sh > ./ma(ここでTabキー) 上記のようにtabキーを押すと、補完候補には実行権限のあるmain.shしか表示されず、 実行権限なしのmain2.shが候補になりません。 > chmod a+x main2.sh のように実行権限を付け直ければいいのですが、何度もやるのはさすがに面倒なので、 実行権限なしのファイルも補完候補になるようにzshで設定したいのです。 =============================================== (2) $PATHにある実行ファイルを補完候補にしない。 =============================================== > ls main.sh > sh ma(ここでTabキー) mac2unix make.exe makejvf manlint ......... main.sh ...... make makeinfo.exe ... 上記のように、例えばshコマンドに続く補完候補には、 当然のようにカレントディレクトリ内のファイルが来ると思っていたのですが、 $PATHにあるようなコマンドまで補完候補になってしまいます。 これはコマンドごとに補完候補を除外するしかないのでしょうか? 以上2点が困っている点なのですが、解決方法かもしくはヒントでも結構ですので、 ご教授お願いします。 --------------------------------------------------------------- (私の.zshrcに設定してある内容で、補完に関する項目は以下の内容です。) autoload -U compinit; compinit -u setopt list_packed compdef _files zsh "*.zsh" zstyle ':completion:*:vim:*' ignored-patterns '*?.o' '*?~' ---------------------------------------------------------------

  • cygwinでcshが認識されず困っています

    初めまして。現在、研究に必要なため、windows上でcygwinを使っております。 cshで書いたスクリプトを実行すると、 bash: csh: command not found と出てきてしまいます。 数週間前にPCに不具合があり、リカバリしたためcygwinを入れ直したところ、 このような事態になりました。 以前と同じ設定をしたので、原因がわかりません。 見当違いの方法かもしれませんが、 起動時のシェルをtcshに変えてみても状況は変わりませんでした。 UNIX等についてあまり詳しくないため、大変困っております。 cygwinを使ってらっしゃる方、UNIXに詳しい方、教えて頂けませんでしょうか? よろしくお願いいたします。

  • cygwin1.dll を必要としないCのexeファイルを作りたいです

    はじめまして、shigure2005と申します。 私は普段UNIX上でC言語のプログラムを書いているのですが、 わけあってWindows上で動くようにする必要が出てきました。 そのプログラムをそのままcygwinでコンパイルしたところ コンパイルでき、実行ファイルも問題なく実行できたのですが、 このままですとcygwin1.dllが必要になってしまいます。 ですので、これがなくてもすむような別のコンパイル方法を 教えていただければと思ったしだいです。 過去ログを探って、MinGWについては試してみたのですが、 コンパイルは問題なく通るのに、なぜか実行ファイルを 実行すると、うまく起動できません。Mingwは以下のファイルを ダウンロードしてインストールしました。 mingw-runtime-3.8.tar.gz mingw-utils-0.3.tar.gz MinGW-4.1.1.exe w32api-3.3.tar.gz binutils-2.15.91-20040904-1.tar.gz mingw32-make-3.80.0-3.exe PATHは「C:\mingw/bin;C:\cygwin/bin」の順に通していて、 コマンドプロンプトでコンパイルし、コンパイル後、 コンパイルに用いたdllがcygwin1.dllでないのを確認して います。また、helloworldなど簡単なプログラムなら、 Mingwでもうまくコンパイルできてます。cygwinとMingwで コンパイル性能に大きな差などがあるのでしょうか? また、cygwinだけでも、Mingw-runtimeをインストール すれば、cygwin1.dllを必要としない形式にコンパイル できるという話を聞いたのですが、ご存知の方が いらしたら教えてください。 どうぞよろしくお願いします。

  • WindowsでPATHにあるコマンドを補完?

    お世話になります。 Windowsのコマンドラインプロンプトでは、ある程度タイプして[TAB}キーを押下すると、カレントディレクトリにあるファイル名を補完してくれます。 たとえば xxxxYYY というファイルがあるディレクトリにおいて  C:\foo\> x[TAB] のようにタイプすると、xxxxYYYと補完されます。 LinuxやMacを含むUNIX系のコマンドライン環境では、カレントディレクトリだけでなく、PATHに入っているコマンドも補完してくれます。具体的に言うと、C:\myProgram\bin\xxxxYYY.exeというコマンドを、C:\fooという全然違うカレントディレクトリにあっても、  C:\foo\> x[TAB] で補完してくれます。 この、PATHにあるコマンド名の補完は、Windowsでも可能でしょうが。 具体的には、何らかのフリーウェアを常駐させる、レジストリを書き換えるなどによって、可能になるでしょうか。 私は20年以上DOS/Windowsを使い込んでいるのですが、この機能さえあれば本当に助かります。 Linuxを使え、WindowsでCygwinを使えというのはナシで、あくまでWindowsのcmdを使い続けるという前提でお願いします。 よろしくお願いいたします。

  • cygwinでpalmkit(http://palmkit.sourc

    cygwinでpalmkit(http://palmkit.sourceforge.net/)のソースコードのコンパイルをしています。 README.jpに従い cd src ./configure make make install とcygwinで入力しました。 できたexeファイルを実行すると「cygwin1.dllが見つからなかったため、このアプリケーションを開始できませんでした。」と表示されて実行できません。 cygwinのインストールフォルダからexeファイルのあるフォルダにcygwin1.dllをコピーすれば実行できるのですが、cygwin1.dllなしでも実行できるようにすることはできないのでしょうか。 回答お願いします。

  • Cygwin+GDBでターミナルの設定?

    Linux系ではないのですが、こちらには詳しい方がいらっしゃると思いますので、ここで質問させてください。 Cygwin環境でgdbを走らせてデバッグしようとしているのですが、gdb上ではTABキーによるコマンド補完や、↑キーによるコマンド履歴呼び出しができずに困っています。 bashを起動した状態のときは、bash上ではコマンド補完や履歴呼び出しはできています。 そこからgdbを起動すると補完や履歴呼び出しはできなくなります。 これは、ターミナルの設定の問題ですか?それともgdbの設定の問題ですか? 「・・・できなくなる」と書いてますが、全く利いていないわけではないようです。 gdb上で、↑キーを押すとその時点ではカーソルが上に移動するだけです。さらにもう一度↑キーを押してから(もちろん更にカーソルがもう一行上に移動する)ENTERを押すと、2つ前に入力したコマンドが実行されます。 また、同じくgdb上で、「d」とタイプしてからTABキーを2回押すと、カーソルがタブスペースの分だけ右へ2回移動するだけですが、ENTERを押すと「d」から始まるコマンドの一覧が出ます。 どうやら、ENTERを押すまではキー操作がgdbに伝わっておらず、ENTERと同時にgdbに渡されているようです。 それから、CTRL+Cで実行中のプログラムが停止しません。しばらくだんまりになったあと、gdb自体が終了します。これも、どうにかして、CTRL+Cで止まるようにしたいです。 関係ないかもしれませんが、bashのバージョンは4.1.10、gdbのバージョンは7.2です。 よろしくお願いします。

  • cygwinでjavaが動かない

    タイトル通りなのですがcygwin1.1上でjavaを動かそうとすると Exception in thread "main" java.lang.NoClassDefFoundError: Example1/java というエラーメッセージが出ます。 しかし、dosプロンプト上でならちゃんと動いたので プログラムのミスという訳でもないと思います。 以下がソースです。 class Example1 { public static void main(String args[]) { System.out.println("This is the output from Example1"); } } クラスパスは以下のような設定です。 /jsdk/lib/jsdk.jar:/jdk/lib/tools.jar:/tomcat/lib/jasper.jar:/tomcat/lib/servlet.jar:/tomcat/lib/webserver.jar:/tomcat/lib/xml.jar:./ 気になることが1つ。コンパイルだけはcygwin上でできるのです。 そしてcygwin上でコンパイルした.classファイルは dosプロンプトで無事に実行できました。 まとめるとcygwinという環境でコンパイルだけできて実行ができない しかしDOSプロンプトだとコンパイルも実行もできる、です。 目的はcygwin上でjavaを実行できるようにしたい、です。 環境は Windows98SE J2SDK1.3 J2EE1.2.1 Tomcat3.1.1 Cygwin1.1 bash 2.04.0(8)

  • cygwin上でvbscirptを実行する方法

    cygwinのコンソール画面で、hello.vbsというvbsファイルを起動し、vbスクリプトを実行する イメージです。 実現したいことは以下です。 UNIXサーバから、rshコマンドで、Windowsサーバのシェル(cygwin上)を実行する。 Windowsサーバのシェルは、さらに、vbscirpt(拡張子.vbs)を内部で実行する。 本来は、Windowsサーバのシェルのみで実装したいのですが、vbscriptで動作させる方法 しか分からないので、上記方法をとりたいと思っています。

  • Tabキー補完や↑キーのヒストリーを使いたい。

    Linux等では、Tabキーを押すことにより、パス名やファイル名の補完ができ、↑キーを押すとコマンドの履歴が表示されるのですが、Sorarisでも同様のことはできないのでしょうか? できる場合、その方法を教えて頂けないでしょうか?