日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

惊艳的cygwin——Windows下的Linux命令行环境的配置和使用

發(fā)布時間:2025/3/21 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 惊艳的cygwin——Windows下的Linux命令行环境的配置和使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

5年前倒騰過一次cygwin,當(dāng)時體驗感覺不好。到現(xiàn)在一直用的是GNU utilities for Win32,在Windows的CMD中使用*nix的命令工具包。

GNU utilities for Win32很久沒有更新,utils的版本太低,很多功能沒有(比如grep輸出不支持彩色輸出的選項–color)等等。另,在Windows的“cmd的自動補全”、“命令歷史”、“bat編程”太弱,一直忍受著~
# 以前寫過cmd相關(guān)的博文:?Windows命令行CMD的使用小技巧、如何在Windows下使用GNU命令

最近大半年版本管理使用Git,用的是msysgit。msysgit帶了MSYS的Bash。用的過程中體驗不錯,很順暢很有Linux的Feel了:

  • 有Git命令的自動補全
  • 彩色顯示
  • 可以用Bash功能(自動補全、歷史命令搜索等等)
  • bash腳本編程

昨天想到就倒騰了一下cygwin,效果驚艷啊!

安裝

在cyginw的安裝頁面上下載setup.exe。

啟動選擇安裝目錄和Package的鏡像站點(自動會缺省163的Package鏡像站點),然后選擇和調(diào)整要安裝的Package。
#?163提供的鏡像讓Package下載分分鐘搞定。163也提供了Ubuntu的鏡像,163做得很贊!

安裝后要調(diào)整(比如新增、刪除)也使用setup來完成。

Package中有Git,需要就在安裝時選上就可以了。

bash_completion包(命令補全的增強包)讓cygwin補全更強勁,但會影響命令行自動補全速度和cygwin啟動速度,建議先安裝上,如果不能接受速度的變慢,就卸載掉這個包。
注:參見?有關(guān) SVN、CYGWIN 和 NOTEPAD++

第一次啟動時會生成Home目錄,在${cygwin}/home/${YOUR_USER_NAME}。
# ${cygwin}表示你的cygwin安裝目錄。

顯示

調(diào)整${HOME}/.bashrc文件,把注釋掉別名打開:

alias?df='df -h' alias?du='du -h'alias?whence='type -a' # where, of a sort alias?grep='grep --color' # show differences in colour alias?egrep='egrep --color=auto' # show differences in colour alias?fgrep='fgrep --color=auto' # show differences in colouralias?ls='ls -h --color=tty' # classify files in colour alias?dir='ls --color=auto --format=vertical' alias?vdir='ls --color=auto --format=long' alias?ll='ls -l' # long list alias?la='ls -A' # all but . and .. alias?l='ls -CF' # alias?wch='which -a'

這樣調(diào)整后,可以ls、grep、dir輸出彩色顯示。

另外加上命令的-h選項,這樣文件大小以K、M、G顯示,方便人閱讀。

git輸出(比如log、status)彩色顯示,使用下面的命令配置:

git config --global color.ui auto

vi配置

在${HOME}/.vimrc文件中加上: # 沒有.vimrc文件就新建。

set?number set?hlsearch set?fileencoding=utf-8 set?fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1set?nocompatible set?backspace=indent,eol,startsyntax enable

說明:

  • syntax enable:打開語法高亮。cygwin的vi缺省沒有打開。
  • set nocompatible和set backspace:配置backspace鍵,缺省backspace不起作用。
  • set fileencoding和set fileencodings:缺省文件編碼和自動識別文件編碼順序
  • set number:顯示行號
  • set hlsearch:搜索到內(nèi)容高亮

參考資料:

  • Cygwin中VIM的設(shè)置
  • VIM文件編碼識別與亂碼處理

配置盤符的鏈接

到D盤,要/cygdrive/d,可以新建符號鏈接/d,這樣可以減少錄入(MSYS的做法)

ln -s /cygdrive/c /c ln -s /cygdrive/d /d ln -s /cygdrive/e /e

自動補全不區(qū)分大小寫

~/.bashrc文件中添加:

shopt -s nocaseglob

~/.inputrc文件中添加:

set?completion-ignore-case on

cygwin的官方文檔:How can I get bash filename completion to be case insensitive?

配置按單詞移動/刪除

.inputrc文件中添加:

# Ctrl+Left/Right to move by whole words "\e[1;5C": forward-word "\e[1;5D": backward-word# Ctrl+Backspace/Delete to delete whole words "\e[3;5~": kill-word "\C-_": backward-kill-word

參考資料:Ctrl-Arrow Keys, Ctrl-Backspace, Ctrl-Delete

Windows和cygwin路徑的轉(zhuǎn)換

cygwin的路徑和Windows的路徑表示不一樣。

要注意的是,cygwin下的cd命令可以直接使用Windows的路徑表示。

$?cd 'C:\Windows\System32\drivers\etc'

注:不要忘了加上單引號,因為\是bash元字符,用于轉(zhuǎn)義。不用上單引號cd命令收到的參數(shù)值就不是C:\Windows\System32\drivers\etc,運行報錯。

路徑轉(zhuǎn)換的需求減了大半。

有cygpath命令來完成轉(zhuǎn)換,相關(guān)的選項是:

-a, --absolute output absolute path-w, --windows print Windows form of NAMEs (C:\WINNT)-u, --unix (default) print Unix form of NAMEs (/cygdrive/c/winnt)

執(zhí)行的例子:

$?cygpath -au 'C:\Windows\System32\drivers\etc' /cygdrive/c/Windows/System32/drivers/etc $?cygpath -aw '/cygdrive/c/Windows/System32/drivers/etc' C:\Windows\System32\drivers\etc

cygwin的官方文檔:How do I convert between Windows and UNIX paths?

在cygwin的打開指定文件或文件夾到文件瀏覽器

常常會有這樣的需求,比如打開文件瀏覽器explorer,然后用烏龜看SVN日志等等。

可以使用使用命令直接打開指定文件或文件夾的位置到explorer。

打開文件或文件夾腳本,可以這個腳本命名成xpl,放到PATH上。
#?xpl是explorer的縮寫

#!/bin/bash? cygwin=false; case "`uname`" in?CYGWIN*) cygwin=true ;; esacif [ "$1" = "" ]; then?XPATH=. # 缺省是當(dāng)前目錄 else?XPATH=$1if $cygwin; then?XPATH="$(cygpath -C ANSI -w?"$XPATH")";fi?fi?explorer $XPATH

打開文件或文件夾,并選中的腳本,可以這個腳本命名成xpf,放到PATH上。
#?xpf是explorer and select file的縮寫

#!/bin/bash? cygwin=false; case "`uname`" in?CYGWIN*) cygwin=true ;; esacif [ "$1" = "" ]; then?XPATH=. # 缺省是當(dāng)前目錄 else?XPATH=$1if $cygwin; then?XPATH="$(cygpath -C ANSI -w?"$XPATH")";fi?fi?explorer '/select,' $XPATH

文件權(quán)限問題

現(xiàn)象

Windows的文件的cygwin下沒有權(quán)限:

$?rm foo.txt error: open("foo.txt"): Permission denied error: unable to index file foo.txt $?ll foo.txt ----------+ 1 Jerry None 486 Dec 24 14:16 foo.txt

文件的權(quán)限顯示的是----------+,沒有讀寫的權(quán)限。

解決方法

編輯/etc/fstab,在末尾加上下面的一行:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

關(guān)閉所有cygwin進(jìn)程,再重啟cygwin命令行。

顯示文件權(quán)限已經(jīng)正常-rw-r--r--:

$?ll foo.txt -rw-r--r-- 1 Jerry None 486 Dec 24 14:16 foo.txt

注意!?如果改了/etc/fstab但是沒有生效,可以重啟一下機器!

參考資料:?cygwin sets file permission to 000

Windows命令的亂碼

Windows命令的輸出中文亂碼,原因是Windows命令輸出的編碼是GBK。cygwin控制臺mintty的編碼缺省是UTF-8。mintty的選項的【Text】把編碼改成GBK即可。

參見:本文“文本配置:字體、編碼”一節(jié)的截圖。

命令窗口設(shè)置:字體、右鍵粘貼等等

這些設(shè)置對使用的舒適度至關(guān)重要。

cygwin的執(zhí)行文件是mintty.exe,在命令窗口的標(biāo)題的右鍵菜單上有【options】項,有這些配置項。

外觀

配置光標(biāo)顯示、窗體透明。

文本配置:字體、編碼

配置顯示字體。

我喜歡用Consolas字體,這是Windows上一款質(zhì)量很高的等寬字體。

右鍵粘貼配置

配置右鍵用于粘貼,缺省是彈出菜單。這個配置很方便!

效果圖

展示了ls、grep輸出的彩色顯示,容器的字體效果。

vi的語法高亮就不再截圖了。

一些最佳實踐

把命令行輸出放在系統(tǒng)剪貼板上

后記

之前對cygwin這種適配的做法有偏見,覺得做得不會好。其實有了一個好點子,又有為之努力的人在,就會越來越好,從“丑小鴨”變成驚艷的“天鵝”。

謝謝這些為之不懈努力的人!

有了cygwin,讓我對MacBook Pro的需求程度降低了,在Windows上還可以再呆一下子。 :)

OS作為一個工作環(huán)境,幫我方便的完成要做的事,關(guān)注點是:

  • 方便的大量的軟件。Windows這一點太強。
  • 高質(zhì)量的UI。Linux這一點太差。
  • 程序員要的舒適的命令行環(huán)境。Windows的cmd太弱,有了cygwin可頂一下。

相關(guān)資料

  • cygwin官方文檔
  • Msys/MinGW與Cygwin/gcc
  • MinGW,MSYS,cygwin區(qū)別
  • Cygwin與MinGW/MSYS,如何選擇?
  • PuTTYcyg的替代者mintty
  • 使用Git、Git GUI和TortoiseGit
  • git亂碼解決方案匯總
  • 在cygwin中調(diào)用JAVA程序

from:?http://oldratlee.com/post/2012-12-22/stunning-cygwin

總結(jié)

以上是生活随笔為你收集整理的惊艳的cygwin——Windows下的Linux命令行环境的配置和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。