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