在 Linux 系統中,內建有非常多、而且好用的指令,對於一個軟體開發人員來說,透過 Linux 系統,可以很方便的寫出各式各樣的 script ,去自動化完成日常生活的工作,當然並不是說 Windows 就沒辦法達到自動化的工作,只是兩個作業系統的作業方式落差太大,如果可以有一套軟體,可以將 Linux 上的指令移殖到 Windows 上,那麼就可以讓 Linux 開發人員,快速的將自動化 Script 搬到 Windows 上執行,未來工程師只要學習一種系統指令即可,而目前就有一套軟體叫 Cygwin,他可以讓我們在 Windows 上執行大部分 Linux 的程式與指令。
Cygwin 下載網址: https://www.cygwin.com/
下載後,會有個檔案 setup.exe ,點擊兩下安裝就可以了,過程中,會要求你自訂想要安裝軟體,通常我一定會選 openssl, wget, vim, screen, git 等等 ,下圖為安裝 Cygwin 過程。

Cygwin 基本操作
打開 Cygwin 之後,你就可以開始使用 Linux 指令,例如 cd, ls, mkdir, grep, find, awk, man, pwd, screen, df,dd, fdisk, mount, umount,如果你有哪個常用的指令,無法使用,有可能是你還沒有安裝那個軟體,那麼你就再次點擊 Cygwin 安裝檔,尋找軟體名稱,再重新安裝一次即可。
wget
wget http://www.google.com.tw/
wget 是一個下載工具,可以下載網路上的任何一個檔案。
Vim
vim test.txt
vim 是 Linux 的純文字編輯軟體,如果你習慣用 vim 編輯,那麼只要安裝 cygwin 就能重溫 Linux 上 vim 編輯的快感。
啟用 SSHD
OpenSSH Daemon : 這是 Linux 多人 Terminal 軟體, 有了 SSHD 之後,你就可以登入 Windows 裡的 Cygwin Terminal,遠端操控 Windows 系統 。
安裝 SSHD
- chown yourAccount:Users /var
- ssh-host-config -y
- cygrunsrv -S sshd
問題1: chown: changing ownership of ‘/etc/ssh_config’: Permission denied
解決方式為,使用 Administrator 的方式開啟 cygwin
問題2: cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062:
The service has not been started.
解決方式為 "chmod 400 /etc/ssh_host_ecdsa_key"
如何在 Cygwin SSHD 中建立一個新帳號
先去 Windows 建立一個帳號,如 admin,請記得這個帳號的密碼。再到 Cygwin 中使用 mkpasswd,將 windows 的帳號複製到 windows。
/bin/mkpasswd -l -u admin >> /etc/passwd
完成後,你就可以用 admin 的帳號,密碼來登入 Cygwin。
在 Cygwin 中建立一個 Socks Tunnel,讓遠端電腦能夠透過這台 Windows 上網。
ssh -vvvND 192.168.56.99:1080 [email protected]
e2fsprogs
e2fsprogs 是 Cygwin 中的硬碟格式化工具,可以從 Cygwin 安裝工具中搜尋到這個軟體,安裝好之後,就會有 mkfs, mkfs.ext3 等指令可以使用。
將硬碟格式化成 ext2/ext3/ext4 格式
mke2fs /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hd
mkfs.ext3 /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd
dd if=image.dd of=/cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd
sfdisk, fdisk
硬碟檢視工具
sfdisk -dump /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd
fdisk -l /cygdrive/c/Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hd
mount
mount "c:\Users/xxx/VirtualBox\ VMs/xxxx/xxxx.hdd" /home/xxx/hdd