糾正國人對Linux的誤解和錯誤認識
錯誤印象和認識羅列如下,一一解釋:
1。linux下的軟件太少
回答:linux 下的軟件一點也不少。windows還在娘肚子里的時候,Unix已經(jīng)如日中天了。要知道微軟公司開發(fā)的第一個操作系統(tǒng)是什么嗎?是一個叫做Xenix的東西,是Unix的一個分支,后來才去搞DOS的。有人又問了,Unix不是Linux阿,要知道,Linux完全重新的實現(xiàn)了Unix,是一個完整的類Unix系統(tǒng),幾乎所有的Unix下的軟件要移植到Linux下不費吹灰之力,甚至把二進制代碼拷貝過來就能用(前提是硬件平臺相同)。另外,GNU旗下的自由軟件更是數(shù)不勝數(shù),完全能滿足你的任何需要。
如果硬要說Linux有什么硬傷的話,那就是游戲軟件不足。windows下的許多大家耳熟能詳?shù)挠螒?,是不能直接在linux下玩的,但是現(xiàn)在出來了一些軟件,可以似得windows下的軟件在linux下直接運行,如wine.據(jù)我所知,在Linux下安裝wine后,可以跑起來許多游戲,包括魔獸爭霸等等,而且不卡,很流暢。但可惜的是,wine還不太成熟,還有部分軟件跑不起來。
但是Linux下的游戲軟件仍然很多,不過許多大家都不熟,但在歐美很流行。要知道Linux在歐美是相當(dāng)流行的。
撇開游戲軟件來說,Linux下的軟件完全能取代windows。有許多重要的軟件甚至只有Linux版的,沒有windows版的(要知道,在好萊塢,制作電影特效,windows就完全敗給了Linux)。下面把我們常見的軟件在linux下的代替品羅列一下
Photoshop---> Gimp
Office------> OpenOffice 等等
……
其中只有autoCAD的替代品不行,也有可能是我不知道。
2。linux下的軟件難用
說句實話,許多軟件是基于命令行的,沒用習(xí)慣會很難受,因為要記大量的命令和參數(shù)。但是用習(xí)慣了后,會瘋狂的愛上他。理由如下:GUI的界面雖然用起來很方便,但是等功能復(fù)雜到一定程度后,你一定會有找了N久都找不到一個功能藏到哪個菜單里的經(jīng)歷。此時調(diào)用命令是很方便的。在畫圖方面,GUI的界面精確度不夠,如autoCAD就設(shè)計了命令接口。如果工作量很大,又都是些重復(fù)的操作的時候,使用GUI就不再是享受,而是折磨。此時你肯定非常的需要一個程序能自動化操作這些,也就是所謂的腳本化。而腳本化在命令行是很自然的事情。用GUI可以做大量工作,但是表現(xiàn)力不夠,不能表達復(fù)雜的東西:比如在word中,大家一定有這樣的經(jīng)歷,想調(diào)整一些位置和間距,但word死活不按自己的意思來,光點鼠標(biāo)又沒辦法傳達自己精確的意思,只有惱火而已。我說這些,并不是有意敵對GUI,而是想說明一點,GUI并不是萬能的,他的缺陷恰好命令行可以完美的彌補.
Linux也不是只有命令行,也有豐富的GUI,你可以充分的按你的意愿來配置你的桌面,玩一些花哨的特效,如3D,模仿蘋果的酷眩的應(yīng)用程序欄,你可以做任何你想作的事情。
不過有一點是要承認的,Unix是為程序員設(shè)計的系統(tǒng),因此普通用戶覺得難用是不可避免的。不過這一點已經(jīng)通過GUI得到了很大的彌補。
3。linux下的開發(fā)環(huán)境不友好,沒什么好的集成開發(fā)環(huán)境
說到這里,我只想說一句,閣下你一定是一個菜鳥。你肯定不知道你在VS下編譯程序時后面都發(fā)生了什么事,你調(diào)試程序時都調(diào)用了什么程序,你的模塊是怎么連接起來的,你只知道點一下按鈕。集成開發(fā)環(huán)境,也叫IDE,意思是把編輯器,編譯器,調(diào)試器,文件管理器等等集成到一起。
在這里插入一點Unix的知識:Unix的文化有這么幾點:
1。一個程序只做一件事,并且把這件事做好。
2。程序之間通過協(xié)作來做一個復(fù)雜的任務(wù)。
因此在這些思想的指導(dǎo)下,Unix骨子里是比較反對IDE這種東西的。像IDE這種軟件背后隱藏了許多windows背后的價值觀:
1。把功能集成到一個軟件里,大而全。
2。如果功能需要改進,就等著軟件升級下一版。
兩者的差別顯而易見,windows下會經(jīng)常對某一個功能實現(xiàn)一次又一次。如VS有實現(xiàn)了編輯器,word也實現(xiàn)了編輯器,記事本也實現(xiàn)了編輯器,每個軟件如果需要編輯器,如果有特殊的需要,就需要自己實現(xiàn)一次。而在Unix下,編輯器是分開的,幾乎所有的軟件如果設(shè)計到編輯工作,一定會開一個分進程調(diào)用專門的編輯器程序,如果你習(xí)慣了vi ,你可以總是選擇用vi進行編輯。
當(dāng)然了,Linux下也有IDE,Emacs就基本上說可以是。有人笑話說Emacs是一個偽裝成編輯器的操作系統(tǒng)。你可以搜一下用Emacs的人有多少,有多少牛人在用這個東西。
編輯器用vi或者Emacs,編譯器用gcc,調(diào)試器用gdb(可以和vi和Emacs聯(lián)合起來用),編譯整個軟件用make,自己寫makefile,或者用工具自動生成makefile。這些用習(xí)慣了,就會發(fā)現(xiàn)一點都不麻煩。另外,Linux下編程經(jīng)常的會用到一些代碼生成器,如lex,yacc,這些都是標(biāo)準(zhǔn)化了的基本工具,這些在IDE下不太好用(WINDOWS),在makefile 里寫則稀松平常。
在windows下習(xí)慣了的用戶,一定會對軟件不停的更新?lián)Q代記憶頗深,還以為世界本來就是這樣的,而在Unix下,因為都是分開的程序,你對編輯器不滿意,你換一個編輯器就完了,而沒有必要等升級換代。
windows下的東西沒有核心價值,許多技術(shù)隨著時間會貶值甚至消亡。
Unix下的東西擁有核心價值,技術(shù)幾乎沒有貶值,如vi編輯器,80年左右就出來了,發(fā)展到今天,基本操作變化很少,仍然流行,你掌握的技能不會失去作用。
如perl,lex,yacc,等等,這些使用了數(shù)十年的程序太多了。
而在windows下,遠的不說MFC,現(xiàn)在已經(jīng)沒什么人用了,VB也被改成了幾乎成了另一種語言,現(xiàn)在又是.net,我去年開發(fā)項目還在用.net 2.0,現(xiàn)在都已經(jīng)出到.net 4.0了,總感覺在微軟后面不停的追阿追,新東西還沒學(xué)會,可能就要淘汰。微軟又在搞一個什么M語言,我的天納,技術(shù)貶值的速度也太快了。
而我在Linux下,可以開心的學(xué)幾十年前就有的軟件,而不用擔(dān)心會過時。并不是說在Linux下就不會有軟件過時,而是你會很清楚什么東西不會過時,什么有可能過時。在windows下就做不到。
4。說一下windows下文化與Unix/Linux下文化的差別
在一個操作系統(tǒng)上呆久了,一定會造就相應(yīng)的文化。windows下的文化,也就是大家所謂的常識,有這么些:軟件比較龐大,軟件越來越胖;每隔數(shù)月要重裝系統(tǒng);軟件頻繁的升級換代;殺毒;混亂的注冊表;新裝好的系統(tǒng)啥都干不了,滿天下的去找破解版軟件,找到后又滿天下的搜注冊碼,裝好軟件有可能還中毒……
在Unix/Linux下,這些文化幾乎都不存在。新裝好的操作系統(tǒng),除非是自己要搞壞,一般是不可能壞的。前提是不用root登錄桌面,養(yǎng)成用sudo的習(xí)慣。幾乎沒有病毒,反正我用了一年了,從來沒遇到病毒。軟件多而全,一般體積都很小,不是那種一個大型軟件包干一切,而是許多專門性的小程序在一起協(xié)作搞定,需要的時候,很容易自己寫一個小軟件出來和原來的軟件集協(xié)作,極端的時候只要10行以內(nèi)的C代碼就可以搞定。配置文件放到/etc下,整潔有序;有些讀者可能想知道詳細一點的內(nèi)容,在這里我略微說一些:
Linux下每一個設(shè)備(除了網(wǎng)卡)都是一個文件,基本都放在/dev下,你可以用基本的拷貝,等命令來操作這些文件。因此,Linux不需要虛擬光驅(qū)。一個iso文件,只需要將其放到回環(huán)設(shè)備上,然后掛載到主文件系統(tǒng)就行:
# losetup xx.iso /dev/loop0
# mount /dev/loop0 /mnt/cdrom
或者簡便一點,只用mount命令:
# mount -o loop -t iso9660 xx.iso /mnt/cdrom
這些命令都是每個Linux發(fā)行版一定都有的基礎(chǔ)命令。
備份硬盤的MBR: 這個在windows下沒有專門軟件,還做不到,而在Linux:
# dd if=/dev/sda of=/home/MBR.backup bs=512 count=1
搞定。dd命令是Linux基礎(chǔ)命令。
建立一個內(nèi)存磁盤,就是在內(nèi)存中虛擬一個硬盤分區(qū)出來,在windows下要專門軟件,而在linux下用基礎(chǔ)性的東西輕松搞定:
如果要小分區(qū),就直接用/dev/ram0-15 系統(tǒng)自帶了16個內(nèi)存設(shè)備文件,只要把這些設(shè)備文件格式化,然后掛載到文件系統(tǒng)就行:
$ sudo mkfs.ext2 /dev/ram0
$ sudo mount -t ext2 /dev/ram0 /mnt/my_directory
sudo 意思是用超級管理員的權(quán)限來執(zhí)行這個命令。這樣掛載上來的假分區(qū),一般只有64MB大。如果要很大的分區(qū),可以用tmpfs文件系統(tǒng):
$ sudo mount -t tmpfs 任意名 /mnt/my_directory
搞定。默認情況下這個分區(qū)會占用一半的內(nèi)存。
現(xiàn)在你看到了吧!什么叫做把設(shè)備當(dāng)作文件,就是可以用操作一般文件的命令來操作設(shè)備文件!不需要額外的軟件。不知道這個算不算做方便?
統(tǒng)計某篇英語文章的詞頻:在windows下要專門編程或者專門的軟件吧?在linux下且看:
tr 'A-Z' 'a-z' | tr -cs 'a-z' '\012' | grep -v '^\s*$' | sort | uniq -c | sort -n
結(jié)果就出來了。解釋下:|表示管道,意思把前一個程序的輸出作為下一個程序的輸入,這樣形成一系列的過濾器。第一個tr命令,把所有的大寫字母轉(zhuǎn)換為小寫;第二個tr命令把不是a-z的字母轉(zhuǎn)換為換行符,接下來的grep過濾掉空行,然后sort排序?qū)⒅貜?fù)的單詞排到一起,uniq 將重復(fù)單詞的數(shù)目放到單詞前面,最后又用sort對單詞的數(shù)目排序。怎么樣?漂亮吧。這里所有用到的命令,都是Linux下的基礎(chǔ)命令。
再者,如果你寫了個排序的程序,想測試性能,可以如此:
seq 1 10000 | shuf | time sort
seq命令產(chǎn)生一個數(shù)字序列,這里是1到10000,結(jié)果通過管道傳遞給shuf命令,shuf是用來將輸入行的順序隨機打亂的,之后送給sort。time放到sort前面是測試sort執(zhí)行的時間。
在Linux下,這樣組合各種小程序來完成一個任務(wù)是再稀松平常的事情了,現(xiàn)在你能理解為什么Linux許多的程序不會過時的原因了吧?編程會讓你感到十分有趣,因為寫一個程序只要做一件事,其他的和其他程序協(xié)作就可以了。許多程序不用寫的很多,就是產(chǎn)生些文本,過濾些文本而已,簡單,搞定一切。
這些,恐怕是在windows下想都不敢想的吧。聽說現(xiàn)在windows 7出了個power shell, 意思是要超越Unix/Linux shell的強大功能,姑且拭目以待!
【編輯推薦】















 
 
 


 
 
 
 