2010-05-06 73 views
2

我有超越比較3安裝在;從命令行開始比較

"C:\Program Files\Beyond Compare 3\BCompare.exe" 

和Cygwin;

"C:\Cygwin\bin\bash.exe" 

我想要的是能夠使用一個命令,如;

diff <file1> <file2> 

進入Cygwin外殼程序,並讓shell fork進程打開兩個文件進行比較。

我看着Beyond Compare Support Page但恐怕這對我來說太簡單了。我試圖逐字複製文本(除了路徑到可執行文件)無濟於事;

Instead of using a batch file, create a file named "bc.sh" with the following line: 
"$(cygpath 'C:\Progra~1\Beyond~1\bcomp.exe')" `cygpath -w "$6"` `cygpath -w "$7"` /title1="$3" /title2="$5" /readonly 

我是否應該取代cygpath?當我在命令行中輸入腳本的名稱時,出現'Command not found'錯誤。

[email protected] /cygdrive 
$ "C:\Documents and Settings\gavina\Desktop\bc.sh" 
bash: C:\Documents and Settings\gavina\Desktop\bc.sh: command not found 

有沒有人有超越比較工作,因爲我已經描述過?這甚至可以在Windows環境中使用嗎?

在此先感謝!

+0

在你的腳本,你可以回聲$第1 - > $ 9至看到你傳遞什麼? 還回顯你試圖運行的命令行,看看你正在嘗試執行,然後張貼。 – 2010-05-06 13:41:51

回答

0

的Cygwin內的文件系統更像是UNIX的。 cygpath組件在那裏,因爲驅動器的根目錄出現在路徑中的不同位置。 「C:\」對Cygwin沒有任何意義,它認爲'/'是根,你的驅動器必須從那裏開始,因此cygpath擴展。此外,嘗試使用8.3格式如從引用的頁面:

「$(cygpath 'C:\ PROGRA〜1 \除了〜1個\ bcomp.exe')」

+0

嗨凱利,這是偉大的,但我有一些問題傳遞參數的程序。你將如何傳遞兩個窗口格式的文件引用? – Logan 2010-05-06 14:19:27

0

@Romain Hippeau謝謝,我有點兒蠢蠢欲動。

要運行Cygwin的shell腳本,你必須使其可執行。

chmod 755 bc.sh 

然後運行該腳本使用;

./bc.sh 

腳本位於當前目錄中。

0

添加此功能,您~/.bashrc文件。

bc() { 
    "/cygdrive/c/Program Files/Beyond Compare 3/BCompare.exe" $1 $2 -fv "Text Compare" 
} 

然後,你可以只寫在命令行上bc file1.txt file2.txt並獲得使用超越比較一個不錯的文本比較。