什么是Cygwin?
Cygwin是一個(gè)用于在Windows上模擬Linux環(huán)境的軟件。它可以作為那些虛擬機(jī)軟件的一個(gè)部分替代品。之所以將它排在第一個(gè)來介紹,是因?yàn)樗鼘?shí)在給我?guī)土撕艽蟮拿Α?
運(yùn)行Cygwin后,你會(huì)得到一個(gè)類似Linux的Shell環(huán)境,在其中你可以使用絕大部分Linux軟 件和功能。如Gcc,Make,Vim,Emacs等等。總之如果你想使用某個(gè)Linux下的功能,而windows上又找不到好的替代品的話,你就可以 用Cygwin。我使用的最頻繁的是Gcc和Make。我經(jīng)常用它們來編譯一些我從網(wǎng)上下載的開源的工程。這些工程在Windows上編譯往往很麻煩。我 也用它做過X Server來連接一臺(tái)真正的Linux服務(wù)器,用來測(cè)試一個(gè)用tcl/tk編寫的跨平臺(tái)的用戶界面程序。下面,我逐步介紹Cygwin的基本用法。
Cygwin常用命令:
ls #以默認(rèn)方式顯示當(dāng)前目錄文件列表
ls –a #顯示所有文件包括隱藏文件
ls –l #顯示文件屬性,包括大小,日期,符號(hào)連接,是否可讀寫及是否可執(zhí)行
ls –color=never *.so > obj #不顯示文字顏色,將所有so文件記錄到obj文件中
———————————————————————-
cd dir #切換到當(dāng)前目錄下的dir目錄
cd .. #切換到到上一級(jí)目錄
cd ../.. #切換到上二級(jí)目錄
cd ~ #切換到用戶目錄,比如是root用戶,則切換到/root下
———————————————————————-
rm file #刪除某一個(gè)文件
rm -fr dir #刪除當(dāng)前目錄下叫dir的整個(gè)目錄
———————————————————————-
cp source target #將文件source 復(fù)制為 target
cp /root/source . #將/root下的文件source復(fù)制到當(dāng)前目錄
cp –av soure_dir target_dir #將整個(gè)目錄復(fù)制,兩目錄完全一樣
cp –fr source_dir target_dir #將整個(gè)目錄復(fù)制,并且是以非鏈接方式復(fù)制,當(dāng)source目錄帶有符號(hào)鏈接時(shí),兩個(gè)目錄不相同
———————————————————————-
mv source target #將文件source更名為target
———————————————————————-
diff dir1 dir2 #比較目錄1與目錄2的文件列表是否相同,但不比較文件的實(shí)際內(nèi)容,不同則列出
diff file1 file2 #比較文件1與文件2的內(nèi)容是否相同,如果是文本格式的文件,則將不相同的內(nèi)容顯示,如果是二進(jìn)制代碼則只表示兩個(gè)文件是不同的
comm file1 file2 #比較文件,顯示兩個(gè)文件不相同的內(nèi)容
———————————————————————-
echo message #顯示一串字符
echo “message message2″ #顯示不連續(xù)的字符串
cat:
cat file #顯示文件的內(nèi)容,和DOS的type相同
cat file | more #顯示文件的內(nèi)容并傳輸?shù)絤ore程序?qū)崿F(xiàn)分頁顯示,使用命令less file可實(shí)現(xiàn)相同的功能
more #分頁命令,一般通過管道將內(nèi)容傳給它,如ls | more
———————————————————————-
export LC_ALL=zh_CN.GB2312 #將環(huán)境變量LC_ALL的值設(shè)為zh_CN.GB2312
export DISPLAY=0:0 #通過該設(shè)置,當(dāng)前字符終端下運(yùn)行的圖形程序可直接運(yùn)行于Xserver
date #顯示當(dāng)前日期時(shí)間
date -s 20:30:30 #設(shè)置系統(tǒng)時(shí)間為20:30:30
date -s 2002-3-5 #設(shè)置系統(tǒng)時(shí)期為2003-3-5
clock –r #對(duì)系統(tǒng)Bios中讀取時(shí)間參數(shù)
clock –w #將系統(tǒng)時(shí)間(如由date設(shè)置的時(shí)間)寫入Bios
———————————————————————-
eject #umout掉CDROM并將光碟彈出,但cdrom不能處于busy的狀態(tài),否則無效
———————————————————————-
du #計(jì)算當(dāng)前目錄的容量
du -sm /root #計(jì)算/root目錄的容量并以M為單位
find -name /path file #在/path目錄下查找看是否有文件file
grep -ir “chars” #在當(dāng)前目錄的所有文件查找字串chars,并忽略大小寫,-i為大小寫,-r為下一級(jí)目錄
———————————————————————-
vi file #編輯文件file
vi 原基本使用及命令:
輸入命令的方式為先按ctrl+c, 然后輸入:x(退出),:x!(退出并保存) :w(寫入文件),:w!(不詢問方式寫入文件), :r file(讀文件file) ,:%s/oldchars/newchars/g(將所有字串oldchars換成newchars) 這一類的命令進(jìn)行操作
———————————————————————-
man ls #讀取關(guān)于ls命令的幫助
man ls | grep color #讀取關(guān)于ls命令的幫助并通過grep程序在其中查找color字串
———————————————————————-
startx #運(yùn)行Linux圖形有環(huán)境
Xfree86 #只運(yùn)行X圖形server
———————————————————————-
reboot #重新啟動(dòng)計(jì)算機(jī)
halt #關(guān)閉計(jì)算機(jī)
init 0 #關(guān)閉所有應(yīng)用程序和服務(wù),進(jìn)入純凈的操作環(huán)境
init 1 #重新啟動(dòng)應(yīng)用及服務(wù)
init 6 #重新啟動(dòng)計(jì)算機(jī)
———————————————————————-
擴(kuò)展命令
———————————————————————-
———————————————————————-
tar xfzv file.tgz #將文件file.tgz解壓
tar xfzv file.tgz -C target_path #將文件file.tgz解壓到target_path目錄下
tar cfzv file.tgz source_path #將文件source_path壓縮為file.tgz
tar c directory > directory.tar #將目錄directory打包成不壓縮的directory.tar
gzip directory.tar #將覆蓋原文件生成壓縮的 directory.tar.gz
gunzip directory.tar.gz #覆蓋原文件解壓生成不壓縮的 directory.tar。
tar xf directory.tar #可將不壓縮的文件解包
———————————————————————-
dmesg #顯示kernle啟動(dòng)及驅(qū)動(dòng)裝載信息
uname #顯示操作系統(tǒng)的類型
uname -R #顯示操作系統(tǒng)內(nèi)核的version
———————————————————————-
strings file 顯示file文件中的ASCII字符內(nèi)容
———————————————————————-
rpm -ihv program.rpm #安裝程序program并顯示安裝進(jìn)程
rpm2targz program.rpm program.tgz #將rpm格式的文件轉(zhuǎn)換成tarball格式
———————————————————————-
su root #切換到超級(jí)用戶
sulogin /dev/tty4 #在tty4即alt+F4終端等待用戶登陸或直接登陸開啟一個(gè)shell
chmod a+x file #將file文件設(shè)置為可執(zhí)行,腳本類文件一定要這樣設(shè)置一個(gè),否則得用bash file才能執(zhí)行
chmod 666 file #將文件file設(shè)置為可讀寫
chown user /dir #將/dir目錄設(shè)置為user所有
———————————————————————-
mknod /dev/hda1 b 3 1 #創(chuàng)建塊設(shè)備hda1,主設(shè)備號(hào)為3,從設(shè)備號(hào)為1,即master硬盤的的第一個(gè)分區(qū)
mknod /dev/tty1 c 4 1 #創(chuàng)建字符設(shè)備tty1,主設(shè)備號(hào)為4,眾設(shè)備號(hào)為1,即第一個(gè)tty終端
———————————————————————-
touch /tmp/running #在/tmp下創(chuàng)建一個(gè)臨時(shí)文件running,重新啟動(dòng)后消失
———————————————————————-
sleep 9 #系統(tǒng)掛起9秒鐘的時(shí)間
———————————————————————-
lpd stop 或 cups stop #停止打印服務(wù)程序
lpd start 或 cups start #啟動(dòng)打印服務(wù)程序
lpd restart 或 cups restart #重新啟動(dòng)打印服務(wù)程序
lpr file.txt #打印文件file.txt
———————————————————————-
fdisk /dev/hda #就像執(zhí)行了dos的fdisk一樣
cfdisk /dev/hda #比fdisk界面稍為友好些
mount -t ext2 /dev/hda1 /mnt #把/dev/hda1裝載到 /mnt目錄
df #顯示文件系統(tǒng)裝載的相關(guān)信息
mount -t iso9660 /dev/cdrom /mnt/cdrom #將光驅(qū)加載到/mnt/cdrom目錄
mount-t smb //192.168.1.5/sharedir /mnt -o username=tomlinux,password=tomlinux #將windows的的共享目錄加載到/mnt/smb目錄,用戶名及密碼均為tomlinux
mount -t nfs 192.168.1.1:/sharedir /mnt #將nfs服務(wù)的共享目錄sharedir加載到/mnt/nfs目錄
umount /mnt #將/mnt目錄卸載,/mnt目錄必須處于空閑狀態(tài)
umount /dev/hda1 #將/dev/hda1設(shè)備卸載,設(shè)備必須處于空親狀態(tài)
sync #將cache中的內(nèi)容與磁盤同步,在Linux中復(fù)制文件,一般要系統(tǒng)空閑才去寫文件
e2fsck /dev/hda1 #檢查/dev/hda1是否有文件系統(tǒng)錯(cuò)誤,提示修復(fù)方式
e2fsck -p /dev/hda1#檢查/dev/hda1是否有錯(cuò)誤,如果有則自動(dòng)修復(fù)
e2fsck -y /dev/hda1#檢查錯(cuò)誤,所有提問均于yes方式執(zhí)行
e2fsck -c /dev/hda1#檢查磁盤是否有壞區(qū)
mkfs /dev/hda1 #格式化/dev/hda1為ext2格式
mkfs.minix /dev/hda1 #格式化/dev/hda1為minix格式文件系統(tǒng)
mfks /dev/hda9 #格工化/dev/hda9為Linux swap格式
swapon /dev/hda9 #將swap分區(qū)裝載當(dāng)作內(nèi)存來用
swapoff /dev/hda9 #將swap分區(qū)卸載
———————————————————————-
lilo #運(yùn)行l(wèi)ilo程序,程序自動(dòng)查找/etc/lilo.conf并按該配置生效
lilo -C /root/lilo.conf #lilo程序按/root/lilo.conf配置生效
grub #在Linux shell狀態(tài)下運(yùn)行boot loader設(shè)置程序
grub-install #安裝grub磁盤引導(dǎo)程序,成功后升級(jí)內(nèi)核無須像lilo一樣要重新啟動(dòng)系統(tǒng),只需修改/etc/grub.conf即可實(shí)現(xiàn)新引導(dǎo)配置
rdev bzImage #顯示kernel的根分區(qū)信息
rdev bzImage /dev/hda1 #將kernel的根分區(qū)設(shè)置為/dev/hda1,這在沒有l(wèi)ilo等引導(dǎo)程序的系統(tǒng)中非常重要.
———————————————————————-
dd if=/dev/fd0 of=floppy.fd #將軟盤的內(nèi)容復(fù)制成一個(gè)鏡像,功能與舊石器時(shí)代常用的hd-copy相同
dd if=/dev/zero of=root.ram bs=1024,count=1024 #生成一個(gè)大小為1M的塊設(shè)備,可以把它當(dāng)作硬盤的一個(gè)分區(qū)來用
mkfs root.ram #將塊設(shè)備格式化為ext2格式
dd if=root.ram of=/dev/ram0 #將init.rd格式的root.ram的內(nèi)容導(dǎo)入內(nèi)存
mount /dev/ram0 /mnt #ramdisk /dev/ram0裝載到/mnt 目錄
———————————————————————-
gcc hello.c #將hello.c編譯成名為a.out二進(jìn)制執(zhí)行文件
gcc hello.c -o hello #將hello.c編譯成名為hello的二進(jìn)制執(zhí)行文件
gcc -static -o hello hello.c #將hello.c編譯成名為hello的二進(jìn)制靜態(tài)執(zhí)行文件
ldd program #顯示程序所使用了哪些庫
objcopy -S program #將程序中的符號(hào)表及無用的調(diào)試信息去掉,可以小很多
———————————————————————-
strace netscape #跟蹤程序netscape的執(zhí)行,看調(diào)用的庫,環(huán)境變量設(shè)置,配置文件,使用的設(shè)備,調(diào)用的其它應(yīng)用程序等,在strace下,程序干了什么東東一目了然。
ps #顯示當(dāng)前系統(tǒng)進(jìn)程信息
ps –ef #顯示系統(tǒng)所有進(jìn)程信息
kill -9 500 #將進(jìn)程編號(hào)為500的程序干掉
killall -9 netscape #將所有名字為netscape的程序殺死,kill不是萬能的,對(duì)僵死的程序則無效。
top #顯示系統(tǒng)進(jìn)程的活動(dòng)情況,按占CPU資源百分比來分
free #顯示系統(tǒng)內(nèi)存及swap使用情況
time program #在program程序結(jié)束后,將計(jì)算出program運(yùn)行所使用的時(shí)間
———————————————————————-
chroot . #將根目錄切換至當(dāng)前目錄,調(diào)試新系統(tǒng)時(shí)使用
chroot /tomlinux #將根目錄切換至/tomlinux目錄
chroot /tomlinux sbin/init #將根目錄切換至/tomlinux并執(zhí)行sbin/init
adduser id #增加一個(gè)叫id的用戶
userdel id #增除叫id的用戶
userlist #顯示已登陸的用戶列表
passwd id #修改用戶id的密碼
passwd -d root #將root用戶的密碼刪除
chown id /work #指定/work目錄為id用戶所擁有
———————————————————————-
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 #設(shè)置網(wǎng)卡1的地址192.168.1.1,掩碼為255.255.255.0,不寫netmask參數(shù)則默認(rèn)為255.255.255.0
ifconfig eth0:1 192.168.1.2 #捆綁網(wǎng)卡1的第二個(gè)地址為192.168.1.2
ifconfig eth0:x 192.168.1.x #捆綁網(wǎng)卡1的第二個(gè)地址為192.168.1.x
ifconfig down eth1 #關(guān)閉第二塊網(wǎng)卡,使其停止工作
hostname -F tomlinux.com #將主機(jī)名設(shè)置為tomlinux.com
route #顯示當(dāng)前路由設(shè)置情況
route add default gw 192.168.1.1 metric 1 #設(shè)置192.168.1.1為默認(rèn)的路由
route del default #將默認(rèn)的路由刪除
dhcp #啟動(dòng)dhcp服務(wù)
dhclient #啟動(dòng)dhcp終端并自動(dòng)獲取IP地址
ping 163.com #測(cè)試與163.com的連接
ping 202.96.128.68 #測(cè)試與IP 202。96.128.68的連接
———————————————————————-
probe rtl8139 #檢查驅(qū)動(dòng)程序rtl8139.o是否正常工作
lsmod #顯示已裝載的驅(qū)動(dòng)程序
insmod rtl8139.o #裝載驅(qū)動(dòng)程序rtl8139.o
insmod sb.o io=0×280 irq=7 dma=3 dma16=7 mpu_io=330 #裝載驅(qū)動(dòng)程序并設(shè)置相關(guān)的irq,dma參數(shù)
rmmod rtl8139 #刪除名為rtl8139的驅(qū)動(dòng)模塊
gpm -k #停止字符狀態(tài)下的mouse服務(wù)
gpm -t ps2 #在字符狀態(tài)下以ps2類型啟動(dòng)mouse的服務(wù)
———————————————————————-
telnet 192.168.1.1 #登陸IP為192.168.1.1的telnet服務(wù)器
telnet iserver.com #登陸域名為iserver.com的telnet服務(wù)器
ftp 192.168.1.1 或 ftp iserver.com #登陸到ftp服務(wù)
Linux開發(fā)中的常用命令(cygwin環(huán)境也同樣適用)