悲劇,當用cywin 寫Linux指令碼

來源:互聯網
上載者:User

上一篇文章說到用cywin 在window上面調用linux 的命令(不是Linux命令本身,而是Linux命令對應的window 的類比命令), 並且使得linux 命令與window 的Dos命令 結合起來,貌似功能強大。恰好有這麼一個需求,需要自動化做一個批量轉換,而轉換器只有window版本的。 本來可以用batch 或者python,但是想試試cywin調用window 的命令的強大。結果悲劇產生了。

1.  window上面的斷行符號換行與Linux 不一樣。 結果cywin裡面的sh 解析不了window 檔案中的斷行符號換行。

    --------->解決方案 dos2unix

2.  Window 上面的命令與cywin 命令重名,比如find 命令。

   ---------->在系統的環境變數裡面把cywin的路徑放到window系統路徑之前。

3.  window的有些命令只認識“\" 作為路徑的分隔字元,而cywin 預設是“/”,也認識“\”. 但是當用cywin 的命令產生路徑時,其用的是“/”作為路徑的分隔字元。

    悲劇的是,"\" 個符號在Cywin裡面用作是轉義符, 當以“\"的路徑讀進來的時候,所有的路徑都直接連起來。 比如 C:\A\B\C.txt 變為 C:ABC.txt.

    一個臨時辦法: 將find 產生的路徑,比如C:/A/B/C.txt ,用tr先替換為C:\A\B\C.txt,再將其變為 “C:\\A\\B\\C.txt”. 最後被cywin的shell 讀進去。

 4. 中文支援問題。 在linux 上面terminal 可以直接支援中文,而在win7的命令列上不支援中文,又悲劇了。

     安裝window7的時候,是英文版。 沒有預設安裝中文字型,找下載網址,沒有提供,悲劇了。

    希望下載後,切換到 win7 powershell上面,就可以。

5. 還有一個不得不提的就是終端terminal, window上面用cmd或者powershell 和linux上面的類比終端相比,就是人間煉獄。

    或許cywin內建有好的終端,但是也沒有激情去試一試。

如果是原本就用python,或者是用batch 這些估計都不是問題。悲劇的是用cywin下的類比Linux命令,徹底悲劇。 本來1個小時的東西,確花一個下午。 cywin 下的linux shell 帶來的問題,比解決的問題還要多。

不是原生態的東西,不是主流的東西,如果沒有使用經驗,使用之前,一定要考慮風險,否則得不償失!

想想,還是python吧,跨平台,本來就支援window 的命令,又支援linux 下的shell 命令。 還有一個終端互動命令ipython。 以後就用它了。 希望悲劇就此打住!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.