このfind
コマンドは、Windows と Unix ではまったく異なります。Windows ではfgrep
、ファイル内の一致する行を一覧表示する のようなユーティリティです。Unix および Cygwin では、いくつかの基準に一致するファイル名を一覧表示します。
Cygwin bashは標準ディレクトリを現在のパスの先頭$PATH
に追加するため、bash 内は通常/bin:/usr/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS
.
更新を開始して追加の詳細を提供する
たとえば、gnufind
コマンドを使用する多くのスクリプトがあります。たとえば、ファイルを含まないディレクトリ ツリーを削除するスクリプトです。
purge-empty-dirs.sh
find . -depth -type d -empty | xargs rmdir -p
ビルドを開始するためのバット ファイルもあります。これは、Windows の find コマンドを使用して、文字列に一致する行を検索します ( gnu に似ていますgrep
)。
build.bat
...
dir | find "target"
if errorlevel = 1 goto no_target_dir
...
ここで、bash スクリプトを機能/bin
させるには、パスの前にいる必要がありますc:\windows\system32
。しかし、バットファイルを実行するにはc:\windows\system32
、前にパスにいる必要があります/bin
一般に、すべてのbatファイルは、変更されたものではなく、bashによって継承された元の環境で実行されるべきであると主張できるかもしれません. それは理にかなっていますか?
更新終了
これは本来あるべき姿ですが、bash から実行されたバット ファイルが壊れます。これに対処する最善の方法は何ですか?
Cygwin が起動した環境で強制的にバット ファイル (またはすべてのWindows 実行可能ファイル) を実行する方法はありますか? start /i
cmd.exeの動作を考えています。/cygstart
に環境 (または少なくとも$PATH
) を保存することにより、これを行う独自の同様のユーティリティを作成することを考えています。それは理にかなっていますか? .bash_profile
.bashrc
他の提案はありますか?