lilybbs-faq - linux入門以及百合 Linux 版精華區導讀

QUESTIONS 問題與解答

不須要任何命令的簡單介紹

歷史
(APUE 提到了1990年以前的unix歷史,還有各類標準 ANSI ISO IEEE posix xpg3.... 可是linux 和 BSD 尤爲是freebsd 在其後才大行其道) unix 的歷史與 c 是緊密相關的,不管是產生髮展仍是後來的標準制定。標準的制定反映出的,是當時的競爭之激烈。競爭在標準制定以後獲得了抑制,可是這段紛爭的時間卻使unix的發展減緩了另外一個阻礙發展的因素是版權,BSD的發展被延遲了,linux在版權上的障礙纔剛剛開始歷史問題能夠參閱精華區的「歷史」目錄
版權模式
自由軟件版權和開源軟件版權的區別,在於對衍生工做的限制。 GPL 的限制指出,你能夠修改GPL軟件,可是若是要再發行修改過的版本,就必須容許其餘任何人對這個版本進行再次修改。根據這一條,不少討論都是沒有必要的。若是你的修改不會再發行,那麼就沒必要考慮是否公佈修改的細節。也就是說,政府/軍隊的保密限制和GPL是不會衝突的。 FDL 的限制彷佛僅僅須要保留聲明這種保證用戶權力的作法是否有道理,仍是不清楚開源軟件版權,例如BSD和相似的X版權,要求在任何衍生工做中保留原做者的信息對再次發行修改後的版本沒有限制不明白爲何要這樣作--其中有一種自信,「捨我其誰」的勇氣吧參閱精華區「歷史文化」目錄
合做開發模式
有不少工具用於實現合做開發參閱精華區「軟件開發」目錄
linux最吸引人的地方是什麼?
不少人想知道linux爲何那麼好,爲何讓人着迷我想我喜歡它,由於它的歷史悠久,結構很清楚很漂亮,不少思想很巧妙也許僅僅是「歷史」就足夠了。懷古的人不在少數吧合做開發,集中你們的智慧,從中能夠產生無限的可能自由?共產主義的狂熱精神?天下大同?固然,最直接的就是能夠緊緊地將計算機控制在本身手裏,想把它修飾成什麼樣子就作成什麼樣子,能夠想出和別人徹底不一樣的生活方式,好比 iloveqhq的scheme生活環境,是通常人享受不到的各類新鮮的想法,隨時能夠試驗一下--讓想法時時刺激頭腦象一個遊戲,耗時,費力,須要常常上論壇找攻略,歷來沒有必定的玩法
FUD 是什麼意思?
2003年底,伴隨SCO對各個有關linux的公司的指控,還有對用戶的威脅恐嚇,各類媒體也紛紛興風做浪,發表聳人聽聞的新聞,例如新浪的一些報道。 FUD 不只指這些不負責任的話,還包括對linux等自由軟件/開源軟件的懷疑,對自身的懷疑我本身認爲過度的狂熱也能夠叫作FUD。總之,沒有平和的態度就沒辦法實實在在地做事情,因此技術問題以外,爭論仍是少一點好,懷疑更要少一點其實全部初學者都會不由自主地自稱「菜鳥」,會「問弱弱的問題」。問題在於,有沒有抓緊時間提升水平
目錄 文件 路徑概念
APUE 中開始就講目錄 文件 路徑的概念,由於這幾個概念太基礎了。自從 「文件」出現以後,又出現了層次目錄結構,對計算機中資源的管理才逐步發展起來。文件很適合於描述計算機上的資源 unix的目錄結構是很是嚴謹的樹形結構,根目錄是「/」,其餘目錄和文件都必須在這個目錄下面。每一個目錄下面均可以有子目錄和文件,目錄和文件名稱的長度是與文件系統有關的路徑是引用一個目錄或文件時用到的,指示它的位置的字符串。絕對路徑是說從根目錄「/」開始,沿着目錄樹找到須要引用的目錄或文件,而後將中間經歷的節點都寫出來。例如,「/root/abc」 是說要找到「abc」 文件,就必須從 「/」開始,中間經歷 「root」 目錄才能找到。當前目錄是說用戶正處於樹形目錄的哪一個節點上,相對路徑就是要引用的目錄或文件相對於當前目錄的位置。例如,我如今在「/root」 目錄當中,要引用 「/root/def/xyz」 的話,只要用 「def/xyz」 就能夠了
文件類型
文件有不一樣的類型,在windows裏就能夠看到,有文本文件,圖像,聲音,視頻可是在linux中的文件類型要更多。例如,符號連接就是很是有用的類型另外,linux中的二進制可執行文件是ELF格式的,不須要擴展名;而windows中是PE格式,有固定的擴展名。因此,兩個系統的應用程序不能換用,有朝一日也許能夠 linux中很重要的一種文件就是設備文件。幾乎全部的設備都有一個對應的文件,在「/dev」當中例如,硬盤harddisk簡稱hd,那麼系統中的第一個硬盤就是hda,第二個就是hdb.....,而後對應的設備文件就是「/dev/hda」。硬盤上的各個分區用數字來編號,例如第一個硬盤的第一個分區就是「/dev/hda1」,第二個分區就是「/dev/hda2」 再舉一個例子,顯卡的設備文件「/dev/fb0」,鼠標設備文件「/dev/input/mice」 和「/dev/psaux」 要注意的是,linux中的可執行文件能夠是二進制的,也能夠是文本文件。 「可執行」僅僅是文件的一個屬性而已,不像windows中因爲文件系統中能保存的屬性信息少,只能經過擴展名來識別文件類型。linux中的文件能夠不用擴展名,也能夠用任意的擴展名各類各樣的文件類型,是爲了將不一樣的對象進行統一的處理。咱們能夠用open lseek read write close 來讀寫一個文本文件,也能夠用這幾個函數來處理鼠標,讓聲卡播放一段聲音,讀寫一塊硬盤(若是你敢的話)。在windows中,不一樣的設備處理的方法是不一樣的,而unix環境中的處理方法是整齊劃一的。控制方法通常是fcntl和ioctl。(誰能告訴我ioctl犯了什麼錯誤了?)
硬盤分區方式
硬盤有不少種,分區也有各類各樣的方法。linux支持它們,可是經常使用的分區方法就只有一種了。這種分區方法的要求是這樣,一塊硬盤上只能有最多四個主分區,最多一個擴展分區;在擴展分區中能夠劃分無限多的邏輯分區。記住這三個概念。每一個分區的第一個扇區通常都是保留分區信息的,數據通常從第二個扇區開始。分區信息中很重要的內容是「下一個分區的位置在什麼地方」還有「本分區的大小是多少」。所以,linux對分區進行編號的順序並非硬盤上分區的物理排列順序,而是從第一個分區開始,不斷查找下一個分區。這樣的結果是編號很容易弄錯。要處理分區時,必定要把當前分區狀況備份一下 pqmagic分區軟件不如linux中的分區軟件好用,由於它對混亂的分區編號處理更容易出錯啓動引導程序通常都裝到某個分區的第一個扇區裏面,和分區信息放到一塊兒。可是,若是安裝啓動引導程序時指定的設備錯了,那麼可能會把數據破壞掉,或者將其餘分區的引導程序破壞掉。典型的狀況是這樣:windows將本身的引導程序放在第一個分區--主分區1的開頭,咱們的linux fans想把linux的引導程序, lilo或者grub放到整個硬盤的開頭--MBR裏面。MBR的設備名是 「/dev/hda」,可是主分區1的設備名是 「/dev/hda1」。一個不當心,系統就啓動不了,壞掉了
國際化,locale的概念,utf8 等字符編碼的含義和用法
後兩個已經不用再多說了。是很過期的話題。可是前日還有人問turbolinux是否是內核漢化的。用戶並非直接和內核打交道,爲何要漢化內核呢?目前的內核包含各類編碼,用於文件名的轉換,可是並無包含字體,由於用戶不是直接和內核打交道!國際化是整個系統範圍內的,對編碼進行規範,對輸入輸出方式的函數接口和通訊協議進行總體的設計,提供處理各類語言環境的統一方法。本地化中,對編碼的規定和對日期時間、貨幣格式的規定是國家標準,而輸入法、字體還有應用程序界面的翻譯,還須要你們共同努力。國際化和本地化都應當在應用程序中實現,例如zhcon和cce。窗口系統中的國際化和本地化也是由應用程序實現的,窗口系統自己只提供通訊協議 zhcon還不是很完善,支持的編碼太少了
中文化是本地化的一種,終端的本地化不是很完整
對世界上全部的字符進行編碼,就是unicode。可是,具體的實現方法有不少種,有的採用定長編碼,有的採用變長編碼。utf8編碼是變長的,能實現unicode的大部分要求 zh_CN.UTF-8,zh_CN.GB18030 這些locale 的定義,前一部分是國家代碼,語言代碼,後一部分是編碼。不一樣的國家代碼和語言代碼對應着不一樣的輸入法,日期時間貨幣格式等等,對用戶比較重要,編碼則不是很重要,不一樣的語言可使用相同的編碼,推薦使用utf8
模塊化的設計思想 界面無關 設備無關
這一段尚未想好不少程序是和界面沒有關係的。例如,字體的使用通常使用Xft2字體庫,可是它和窗口環境沒有必然聯繫。大部分bt工具是和界面沒有關係的。圖形應用程序咱們使用計算機時,咱們的一舉一動都是在和系統通訊。系統中程序執行時也在互相通訊。想要打開輸入法,咱們按下ctrl-space,這時候輸入法和應用程序之間就經過XIM協議開始通訊了--過些日子,也許就不是這種協議了,可是通訊是必定存在的一方面,每一個程序都關心本身的功能,另外一方面,每一個程序都要和其餘程序進行通訊。
進程的概念 線程
APUE 中提到,進程是一個程序的運行中的實例。進程有不少屬性,好比編號,全部者,當前運行狀態,啓動時的命令行,環境變量,運行時間,打開了什麼文件.... 線程和進程相似,也有不少屬性。同一個進程的不一樣線程能夠很容易地互相訪問數據。so laris的線程實現很不錯,很是靈活
什麼發行版好?什麼unix好?
精華區目錄中有各類unix的對比,linux的使用感覺,能夠看一看還有對書和網站的推薦 debian 發展太慢了,除非用unstable 版本,可是那又太快了。用 knoppix 上上手不錯 redhat 一直很好用,可是升級時最好重裝系統。如今fedora的網絡升級不知道能不能徹底升級? redhat對中文的支持也很好,可是須要手動安裝的軟件比較多 turbolinux magic 還有國內廠商的版本 對中文支持不錯我的不喜歡mandrake,很難定製。slackware 須要本身處理的東西太多了 freebsd 的使用和debian 很類似,自動化程度很高

須要綜合使用命令才能夠完成的操做

文件權限
文件權限並非文件類型。所謂「可執行」,僅僅是文件的權限而不是類型。傳統的文件權限是九個字符rwxrwxrwx三個一組一共三組,再加上文件全部者和組。高級的文件權限就不是這麼簡單了,相似ntfs,能夠指定任何用戶/組對某個文件的各類各樣的權限用 「ls -l」 命令能夠看到當前目錄中全部目錄和文件的權限用 「chmod」 「chown」 和 「chgrp」 命令能夠修改權限
運行程序 來自bash手冊頁
假如看到文件的權限中帶有x,那麼它是一個可執行的程序。要執行它,可使用相對路徑,也可使用絕對路徑。例如,個人目錄中有一個「run-me」 文件是可執行的,那麼我能夠運行 「/root/bin/run-me」 ,或者先運行 「cd /root」 再運行 「bin/run-me」。假如說這個可執行文件的位置在 「/usr/bin」 當中,那麼我沒必要使用路徑也能夠直接執行它,由於環境變量 「PATH」 中包含了 「/usr/bin」。運行 「export」 能夠看到 「 PATH」 的定義
具體目錄的做用 來自FHS 標準
這個標準不是很正式,可是不少unix系統都在用。意思就是,「/」 根目錄下面的子目錄和文件都有它們各自的用處,不能隨意增長刪除。好比說,「/dev」 就是設備,「/etc」
 就是全部配置文件,「/var」 是應用程序自動管理的數據,好比用rpm安裝了一個軟件, rpm會將那個軟件的信息存在「/var」 當中。「/usr」 固然就是應用程序的目錄。「/bo ot」 是內核還有啓動時要用到的文件。試一試,「ls lR /」 :)
安裝和刪除軟件--最簡單的辦法
最簡單的,把這個軟件包含的文件--通常是一個可執行文件,複製到 「/usr」 當中就能夠了。複製到什麼地方呢?FHS 對 「/usr」 目錄中的子目錄也有規定。「/usr/bin」
 是可執行文件,「/usr/lib」 是庫文件,就是xxxxxx.so.1 之類的,「/usr/share」 是不須要修改的數據,好比幫助手冊,桌面圖標等等。要卸載軟件,只要從「/usr」 當中把複製過去的文件刪掉就能夠了複製用 cp 命令,刪除用 rm 命令。當心不要誤刪除了有用的東西和windows裏面不太同樣,不會在一個系統中安裝四個或者五個QQ卻仍然找不到QQ裝在什麼地方。通常安裝軟件要用make,rpm 或者dpkg 等等方法,不用本身操心複製刪除文件
進程間的關係,應當使用APUE 中的敘述
用ps 命令能夠查看進程。用top命令能夠動態地查看進程。固然,要搞清楚輸出是什麼意思,須要仔細看看幫助 fg 和 bg 能夠在一些進程中切換 kill 和killall 能夠控制進程中止和退出一邊執行命令,一邊能夠到「/proc」 目錄看一看。這個目錄是整個系統的狀況,包括硬件和軟件的信息。多練一練 「cd」,「ls」 還有 「cat」。看了足夠多以後,對於ps 和 top 命令的輸出就大概明白了。我認爲「/proc」 是新手訓練的最佳場合
fork exec 環境變量 守護進程(daemon)
shell 編程初步-shell,awk,perl
命令
cd ls ;cat less ;rm cp mv ln ;mkdir chmod chgrp ; reboot poweroff ;mount umount df du ;tar make ; fdisk parted ;vi ;man info ; rpm apt-get apt-cache dpkg ;lilo grub modprobe ; gcc g++ ;ps fg bg top ;最經常使用的命令是否是poweroff 和 reboot ?
命令的通用選項
cd - 切換到上次所在的目錄 cd .. 切換到上層目錄 ls -lh 不少命令的參數中,「-h」 表示的是將文件大小轉換爲以 「MB」 和 「kB」 爲單位 「-l」 是長格式,能夠看到文件更多的信息 df -h du -h 查看磁盤空間,已用多少,剩餘多少 free 查看內存和交換空間使用狀況。不過通常用top來看更好一些 less -isr 能夠用這個命令來看看不少類型的文件的內容,包括文本文件,壓縮包等等。加上參數就能處理中文了 rm -rf 強制刪除,包括目錄和文件 cp -a 徹底複製,保留原來文件的全部屬性 cp -R 複製,包括目錄和文件。默認不包括目錄 ln -s 創建符號連接。符號連接的目標能夠是目錄或文件,也能夠不存在。產生的新文件和連接目標屬性和做用徹底一致。 tar zxf tar zcf tar jxf tar jcf 建立壓縮文件(c)和解壓縮(x) j 對應的是 .tar.bz2,而 z 對應的是 .tar.gz fdisk -l 列出一個硬盤的分區狀況。fdisk 命令交互執行更有意思 rpm -ivh rpm -Uvh 安裝一個軟件包 或者升級一個軟件包 rpm -qip rpm -qpl 查詢一個軟件包的信息和內容 rpm -qf 查詢一個文件屬於哪一個軟件包 apt-get update 升級整個系統,可是不會強制升級一些不合規範的內容 apt-get install 安裝一個軟件。debian最吸引人的地方就在於容易地安裝和刪除軟件 dpkg -i dpkg -l apt-cache search 若是軟件名稱更容易記就行了

實習

安裝X輸入法
X 輸入法通常須要兩個環境變量,一個是 XMODIFIERS, 另一個是 LC_CTYPE 好比要使用fcitx 輸入法,XMODIFIERS 最好是 「@im=fcitx」 (也能夠是其餘值),LC _CTYPE 是一個locale 類型的變量,其中的國家代碼必須是zh,語言代碼和編碼卻是無所謂再好比要使用scim 輸入法,XMODIFIERS 應當是 「@im=scim」 , LC_CTYPE 在輸入中文時同上,輸入其餘文字時能夠是其餘國家代碼。固然,若是你的系統中連中文字體都沒有,就不要期望有中文輸入法了。由於不一樣的進程有本身獨特的環境變量設置,因此徹底能夠在同一個窗口系統的不一樣應用程序中使用各類輸入法,只要在啓動應用程序以前先設置 XMODIFIERS 就能夠了。安裝X輸入法最困難的是如何使輸入法能夠隨着X窗口系統而啓動和退出。不一樣的發行版有不一樣的運行輸入法的方法,好比redhat/fedora 能夠修改 「/etc/X11/xinit/xinit.d/xi nput」 文件
安裝終端的中文環境
遍歷 /proc 目錄
安裝軟件 查詢軟件包
配置文件,fstab lilo.conf grub.conf XF86Config
配置lilo 或者 grub, 問題修復
建議找一個好一點的lilo.conf 或者 grub.conf 看一看,至少是能用的配置文件看一看,而後再着手進行修復工做。有可能須要手動從頭開始寫一個配置文件肯定真的弄清楚了硬盤分區狀況了嗎?在BBS上求助時,必定要把分區狀況和配置文件,還

有致使出錯的步驟都貼上來精華區lilo 和grub 目錄都各有上百篇帖子,講述安裝和修復的過程 linux

mount
mount 命令用於將一個設備掛載到一個目錄上,而後就能夠訪問其中的文件了。 mount 命令可選的參數很是多,可是要想正確掛載一個設備,必須搞清楚一些事情例如:         mount /dev/sda1 /mnt/u-disk/sda1 -t vfat -o defaults,users
其中,USB移動硬盤設備對應的設備文件名是 「/dev/sda1」。若是設備文件名搞錯了,那麼掛載確定會出錯。不少出錯都是由於 「/dev/sda1」 對應的設備根本不存在 -o 能夠指定的選項很是多,不一樣的文件系統都有本身特定的選項。經常使用的就是 users iocharset fmask dmask rw/ro 這一些。iocharset 是本身的編碼,在掛載 windows 網上鄰居的目錄時,iocodepage 是對方的編碼。看幫助,man mount 很是長。常見的/etc/fstab中的一行是這樣:
      /dev/hda1    /mnt/harddisk/C vfat defaults,users,umask=0 0 0 若是是kernel-2.6 那麼還能夠加上fmask=111,dmask=0 來控制權限
安裝X字體
很是簡單。字體有兩個系統,一個是舊一點的X系統,一個是新一點的Xft2系統。要想在兩個系統中同時使用某個字體,須要將這個字體複製到某個「/usr/local/share/fonts」 的子目錄中去,而後在 「/etc/X11/fs/config」 中加入這個目錄,最後執行 「fc-cache -fv」 刷新字體列表,「service xfs restart」 就能夠了不一樣的系統中,完成這幾個步驟的具體執行的命令可能不同。複製字體應該都同樣,而後可能須要將這個目錄加入到 「/etc/X11/XF86Config」 當中去,最後也有可能須要重啓動圖形系統。要靈活一點
配置latex 和 ps 系統
分區,從新安裝系統
這裏是實踐部分。硬盤分區,常見的分區方法是一個主分區,一個擴展分區,而後在擴展分區中能夠劃分不少不少邏輯分區。也有分區方法是劃分兩個主分區,例如IBM的系統還原分區,還有dell也是這樣。爲linux系統分區能夠只分一個swap分區和一個 「/」 分區。swap分區大小三五百M就能夠了。而 「‘/’ 分區」 的說法只是爲了方便,意思是將某個分區做爲 「/」 目錄來使用。相似的,若是安裝程序要劃分 「‘/boot’ 分區」,那麼也是將某個分區做爲 「/boo t」 目錄來使用。任何一個目錄均可以單獨劃爲一個分區,例如能夠將 「/usr/local」 目錄單獨劃爲一個分區,這樣把數據放在裏面,重裝系統時不會被刪除掉。高級的lvm和lvm2 只在大硬盤上纔有用

HISTORY 歷史

版上討論了好久是否是要提升技術性了。的確,大部分入門級問題在從前的帖子中都有涉及,精華區中大概也有答案,重複地提問「將有價值的論題淹沒了」。shell


    要提升技術水平,就要找到更多的論題和提出更好的想法。可是,魯迅先生說得好,要有「天才的土壤」才行。因此,對於新手問題也不能封殺。一種設想,是請幾位熟練的使用者專人負責某一個方面的問題,用信件聯繫,而後把有價值的討論結果發上來。可是,這樣效率不高。 編程


    我想試行一下這樣的作法,就是入門級問題以及解答就跟在這個帖子後面,過一段時間就清理一下,總結到一篇文章中。請你們配合。暫時設定精華區的第19個目錄和第29個目錄分別用做已解決/未解決問題的保存之處。 windows


    後續的第二篇帖子是一些快速解答,能夠在firefox 的搜索欄中使用 「頁面內搜索」功能來查找關心的內容。 bash


    歡迎修改 網絡

Copyright

Permission is granted to copy, distribute and/or modify this page under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. less

相關文章
相關標籤/搜索