茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671760 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PI20101106_00061.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [轉貼]發問技巧+Linux初學之旅

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]發問技巧+Linux初學之旅
在鳥哥網站裡的討論區看到的連結,覺得寫得很好,特地貼上來給大家參考。

原文章連結:
1. 請注意發問時的技巧與問題解答的搜尋網站
2. GNU/Linux 初學之旅 HTML 版


-----------------------------------------------------------------------------------
作者 EdwardLee.bbs@bbs.cis.nctu.edu.tw (李果正), 看板 Linux
標題 [文件] GNU/Linux 初學之旅 v0.59.1
時間 交大資科_BBS (Tue Jan 29 00:41:06 2002)
───────────────────────────────────────

這篇文章旨在幫助初學者可以較輕鬆的進入 GNU/Linux 的世界。由於資料
愈加愈多,書籍介紹的部份只好忍痛刪去,各位到書局逛逛應該就找得到合
適的。

版本的號碼沒什麼其他意義,僅代表由我打分數的話,這篇文件目前只有
59.1 分。

雖在 post 之前已做過檢查,但疏漏難免,內容或連結如果有錯誤,請您馬
上告知,也很樂意接受大家的意見,謝謝!


◎ 強烈建議手頭上要有一、二本基礎書籍!!!

不管您使用 GNU/Linux 的目的為何,請先準備一、二本的書,先看看書裡頭
的相關內容後再配合 BBS 站上的精華區內容、網路上的文件,這樣和同好討
論時會更有所得。

當然,如果您已有 Unix-like 系統的使用經驗,那網路上、系統上的一些資
料也是可以讓您很容易的進入狀況。

另外,請不必追求新版本,新版本是追不完的,不如在穩定的版本裡頭整個架
構先熟悉。不管是發行套件或是核心,剛出爐的,相關的配套工具軟體都得更
新,設定也會不一樣,這對初學的朋友常會搞得一頭霧水,實在是沒有必要把
時間浪費在這裡。
* 當然請不要去用一些老古董的版本,例如 kernel 1.0.x 時代的版本,那實
在就和『社會』脫節了!
* 實際運作的機器,為了安全上的漏洞,當然是要盡可能更新為安全的版本。


◎ 行前準備:

GNU/Linux 是個還很年輕的作業系統(剛滿十歲沒多久),目前正處於成長期
,改版(改進)相當快速,意思是您現在所看的資料,很可能過沒多久就是昨
日黃花了(當然一些系統基本操作是變動很小的,這不必擔心),所以您要使
用 GNU/Linux,最好要有 DIY 的心理準備,也要能主動學習。
* GNU/Linux 是 Unix-like 的作業系統,操作環境和其它 Unix 系統大同小異。
* 什麼是 Unix 系統?請參考:
http://www.unix-systems.org/what_is_unix/history_timeline.html (英文)
* 什麼是 Linux 系統?請參考:
http://www.linux.org.tw/intro/01-what_is_linux.shtml (中文)

GNU/Linux 和 Windows 系統是不同的兩種作業系統,定位不一樣,操作哲學
也不一樣(至少目前是如此),因此如果您已習慣了 Windows 的操作方式,
請暫時先把它忘掉,當作您從未接觸過電腦一樣,否則您將 Windows 的操作
習慣帶入 GNU/Linux 裡面來,將會造成學習上很大的困擾。操作方式的優劣
,其實是和您的習慣息息相關的。

目前的 KDE, GNOME 的 GUI(Graphical User Interface) 環境的操作方式,
和 Windows 系統有點類似,但底層的運作方式仍然不同,這些 GUI 目前尚無
法完全操控 GNU/Linux 系統的一些細節。但很明顯的,進步相當快速,一般
用途應該是可以應付了,目前只是中文處理、列印方面還不是很流利,這還得
靠大家的努力。


◎ GNU/Linux 的 distribution(發行套件,簡稱 distro) 的問題:

Linux 其實只是 Linus Torvalds 所寫的 kernel,必需配上許多工具(絕大
部份是 GNU 的)才能成為一個完整的作業系統,因此就有許多的廠商或團體
在做這種整合的工作,這就是各種 distro 的由來。但由於主要部份還是:
kernel + GNU Tools + XFree86 ,因此基本操作還是相同的,不必太擔心。
* GNU = GNU's Not Unix。是一個 project,主要是在發展一種 freedom 的
Un*x 系統。裡頭結合全世界一大堆想不開的天才,整天想破頭寫出很好的
程式給全世界的人自由使用,沒有他們就沒有今天方便好用的 GNU/Linux。
請參考 http://www.gnu.org/

每個 distro 各有各的擁護者,很常看到版上討論哪一個 distro 比較好,對
初學者而言,我覺得這不是很重要的問題,每個 distro 各有千秋,您選了哪
一個 distro 您就盡量去適應她,過一段時間,熟悉了整個 GNU/Linux 架構,
再去選您心目中的 distro。不過目前有許多已把中文整合好的系統,您可以
先從這裡下手,例如:CLE、Mandrake、Debian、及國內廠商做的 distro。
* 安裝方式及安裝時所使用的指令各 distro 很可能會不一樣。

各獨立的 distro 討論區您可在下列地方找到:
telnet://bbs.sayya.org
telnet://linux.twbbs.org
http://www.linuxfab.cx/indexForumTree.php
包括 CLE、Slackware、RedHat、Debian、Mandrake ... 等等,如果您想先
瞭解各 distro 可以去逛逛再來決定,甚至有許多 distro 都已有熱心同好
把安裝及使用手冊翻譯成中文供免費下載。

如果您自認不管是電腦軟、硬體的一些原理都不是很懂,而且對 Un*x 系統
也沒什麼概念,又需要中文環境,那建議您由 CLE(Chinese Linux Extention)
先玩起。目前的硬碟很大,有點熟悉後,可在另一個磁區,安裝另一套 distro
,互相比較一下。而且請隨時自行充電有關電腦軟、硬體、網路、作業系統
的基礎知識。
* CLE 基本上是基於 RedHat 系統,加上 CLE team 努力的中文延伸套件所
組成的。

這裡鄭重的提醒各位,有空時把您的安裝光碟 mount 上來,看看裡面有些什
麼東東,最近由於安裝程式的自動化,讓許多使用者跟本搞不清楚有什麼套
件可以用,以致版上經常出現缺什麼程式,要安裝什麼套件的問題,千萬拜
託熟悉一下自己的倉庫裡頭有些什麼存貨。
* 查一下書,或 man mount,研究一下 mount 要怎麼使用,有些系統有安裝
自動掛載的機能,那就不必手動 mount 啦!


◎ Mouse vs. Keyboard

怪怪,怎麼談到這個問題呢?由於 Un*x 系統基本上是一群工具的結合,這些
工具組合起來威力驚人,但同時也會嚇壞不少初學者(因為永遠搞不清楚有多
少指令可用,也永遠搞不清楚要用到的指令有多少參數)。舉個例子:下面會
提到的 ls 指令,主要是來觀察目錄內的檔案的,但同時也有相對的圖形化(
GUI)的檔案管理程式(file manager),就像您在 Windows 中用的「檔案總管」
(explorer)一樣。那到底要用哪一種工具呢?

GUI 的 file manager 表面上看是比較方便,但效率卻不怎麼樣,甚至會佔不
少記憶體,另外有一個很重大的缺點是,沒辨法很方便的放進您所寫的 script
中。其次,沒人敢擔保自己的系統不出毛病,出了毛病恐怕就只能用軟碟來開
機,這時,可沒有 GUI 工具給您用囉!另外,這些指令的參數相當多,可以
做很精細的微調工作,達到您所想要的效果,這是 GUI 的東東不容易完整做
到的,縱使做到了,大概選單會比指令的參數更複雜。
* script 可暫時先想像成 DOS 中的批次檔,當然功能強多了!基本的是 shell
script 及一些功能強大的 perl script, python script ... 等等,這是
Un*x 系統相當具有威力的工具,有機會可以多去瞭解一下。

其實 GUI 的檔案管理程式只是整合了一些常用的系統上工具方便使用者使用而
已。這裡可不是在貶低 GUI 的工具,而是說明看場合來選擇適合的工具將會增
加您的工作效率。當然,有時候您是別無選擇啦!

Un*x 是多人多工的作業系統,縱使是家裡個人使用,還是一個多人多工的環
境,因此基本上,您本人就是一位系統管理者,這和您以前使用的 windows,
OS/2 系統是不一樣的,因此一些系統管理者需要做的事情,您多少都得懂一
點才能善用 GNU/Linux 系統。尤其目前的 Linux + XFree86 尚無法做到全面
GUI 的情形下,您蹲些馬步是必要的,縱使以後全面 GUI 了,還是建議您多
蹲些馬步,一定會用得著的。
* 這裡所指的馬步,就是下面會談到的命令列(command line)指令。

因此,老手一般喜歡使用 command line 的東東,如果您顧及效率,想對系統
結構多些瞭解,而且以後也想寫個簡單的 script 程式玩玩的話,請多多留意
/sbin, /usr/sbin, /bin, /usr/bin 裡頭有些什麼工具可用(可能會讓您玩
好久喔!)。
* 命令列的指令,在 X 下也很常用到,可以開個 rxvt/xterm 來使用。


◎ 建議先學的幾個指令及架構(開始蹲一點點馬步吧!:

這裡不做詳細說明,是非常簡單的介紹,要詳細請看 man pages 、 info
pages、HOWTO 文件或書籍裡頭的說明。最重要的是,您要親自去操作看看。
剛開始學習時由於規則不熟悉,會很不習慣,但可以把一些常用到的 tips
收集起來,就像以前學英文時先由句型著手一般。

1. locate 這是快速尋找指令,請試試 locate locate 看看。
* 有錯誤訊息出現的話,請用 updatedb 更新一下系統資料庫。
* 比較複雜的條件式搜尋,請研究一下 find 指令。

2. man 這是看 man pages 線上說明的指令。請試試 man locate 看看。
* 按 h 來看操作說明,有空的話就 man man。
* 請善用 man -k(或 apropos) 來找系統上的指令。例如要找 ftp 的相關指
令 man -k ftp 就會列出一堆出來。另外,whatis ftp 則會有 ftp 的簡短
說明,whereis ftp 則會指出 ftp 這支程式及其 man page(ftp.1)的位置。

3. info 這是另一個線上說明的指令,請試試 info ls 看看。
* 按 Ctrl + h 來看操作說明,有空的話就 info info。
* 有個 pinfo 指令,但可能系統上沒有,找看看您的光碟上有沒有,可取代
info 指令,操作較簡便,而且有彩色。

4. ls(list) 這就是 DOS 裡的 dir 指令,意思就是 list 啦!功能比 dir
強多了!ls 的參數相當多,別忘了 man ls,找些您喜歡的參數試試看。

5. cat(concatenate) 可以顯示檔案內容或結合數個檔案成為一個檔案。

6. more(less) 這在 DOS 裡也有,不過功能不可同日而語。
* 壓縮檔請改用 zmore 及 zless(*.gz, *.Z) 或 bzmore 及 bzless(*.bz2)。
* more /etc/profile 或 cat /etc/profile | more 兩種方式皆可。

7. gzip, bzip2, tar
這是 Un*x 系統常用到的壓縮、打包的工具,請務必要先熟悉,在網路上下
載的檔案有許多都是 *.tar.gz, *.tar.bz2, *.tgz 的格式,您要解開就要
利用到這些工具。

8. wget 這是抓檔的工具,如果沒有安裝,把您的安裝光碟 mount 上來,裝
上去,下面的內容會用得著。實際例子,請往下看...
* http, ftp 上的檔案都可以抓,整個網站抓下來也沒問題。

9. telnet
打 BB 嗎?telnet bbs.xxx.xxx.xxx 就可以了!當然您要先有中文終端機
,例如:chdrv, jmce, crxvt ... 等等。而且要有中文輸入法,chdrv,jmce
就有附,crxvt 的話可配合 xcin 來輸入中文。如果碰到亂碼,可使用 -8
參數試看看。

10. 請先熟悉任一種編輯器
在 Un*x 裡頭,有許多檔案的設定,都得自行手動去編輯設定檔,而 Un*x
裡頭的編輯器,實在是多的不像話 。請選個自己認為順手而其他 Un*x
系統也有的編輯器來使用。vi, emacs 這兩個幾乎是 Un*x 系統的基本配備
,當然使用上非常有個性就是了!另外還有 joe, pico ... 等較簡單的。

* vi(m) 中文使用說明:
http://www.study-area.net/tips/vim/index.html

http://www.linuxfab.cx/indexColumnData.php?CID=53&FIRSTHIT=1
http://www.linuxfab.cx/indexColumnData.php?CID=55&FIRSTHIT=1
http://www.linuxfab.cx/indexColumnData.php?CID=58&FIRSTHIT=1

* emacs 中文使用說明:
wget ftp://ftp.pcf.sinica.edu.tw/aspac/doc/94/94016.ps.gz
這個站還有一些中文文件,是中研院的 ASPAC 計劃,請先抓一下:
wget ftp://ftp.pcf.sinica.edu.tw/aspac/doc/announce.doc
看一看再決定要不要抓其它檔案。

* joe 中文使用說明:
http://www.linuxfab.cx/indexColumnData.php?CID=61&FIRSTHIT=1

* pico 這個不必中文說明了吧! 這是郵件新聞軟體 pine 所附的編輯器,
您系統上不一定會有。

11. bash
這是 GNU/Linux 常用到的 shell,簡單的說,您一進入 GNU/Linux,這個
shell 就負責您和作業系統的溝通的工作,就像 DOS 裡頭的 command.com
一樣。光這一個 shell 要詳細的話,就可以出一本書,您一有空的話,不
妨 man bash 或 info bash,熟悉一下,一些有關 shell 的變數設定,裡
頭都會有詳細的交待。

12. GNU/Linux 系統的控制室
要瞭解整個 GNU/Linux 系統運作的機制,最好的方法就是熟悉 /etc 這個
目錄下的各種檔案在做些什麼事情。在這個目錄下的檔案是一些進入系統就
要執行的 script 及整個系統的初始設定檔。這些檔案相當多,而且需要
shell script(man bash) 的基礎知識,剛開始看可能會搞得滿面豆花,沒
關係,不要急,慢慢來會比較快!
* distro 不同,這些檔案的位置可能會不太一樣。
* 您可藉由 mc, gmc, kfm, filerunner 這些 file manager 來方便瞭解這些檔
案。

13. 如果使用的是 GUI 介面,那可以叫出 gnome-help-browser 或 khelpcenter
(舊版為 kdehelp),可直接叫出然後由選單來選,或加參數,來看一些系統上
就有的說明文件,例如叫出 bash 的 man/info:

gnome-help-browser man:bash
gnome-help-browser info:bash
khelpcenter man:bash
khelpcenter info:bash

由於 GNOME/KDE 環境並沒有 man/info pages 的說明文件,因此要使用這兩
個工具來叫用他們的說明文件,而這兩個工具也是可以解讀 man/info pages
格式,使用上相當方便。

* 在系統上的大部份指令都會有類似 --help, -h 的參數,可以得知這個指令
的簡短說明,請多多利用。請試試 ls --help | more。
* man, info, more, less 都會有搜尋功能,按個 / 然後輸入要找的字串,再
按 Enter 即可,按 n(next) 會繼續找,大寫的 N 則是往回(上)找。

14. 其他重要指令及 GUI 按鍵請參考(不一定一下子全都要會,但至少有個印象):

http://www.cafecomputer.com/page7faq.htm#7.2 (命令列指令)
http://www.cafecomputer.com/page7faq.htm#7.3 (KDE 環境按鍵)
http://www.cafecomputer.com/page7faq.htm#7.4 (GNOME 環境按鍵)


◎ GNU/Linux 上有沒有 ``窗'' 呢?

當然有啦!而且還是 ``多窗'' 的環境,那就是 X Window System(可簡稱為
X 或 X11),雖然移植到 PC 的是稱為 XFree86 但通常稱為 X 應該也是可以
。這是 Unix-like 系統的『標準』GUI,任何一種的 Un*x 系統應該都會有
X Window System。

為什麼說是 ``多窗'' 呢?因為 X 只是規定了一些基本規格,彈性相當大,細
節部份就由程式設計師去自由發揮,因此就有許許多多的 WM(Window Manager)
出現,您有相當多的選擇,不僅如此,目前大部份的 WM 皆支援 theme,所呈
現出來的不同風貌會讓您嘆為觀止。
* 在這個地方就比 Windows 系統多了許多變化,不僅僅是 feel & look 的不
同,連操作的方式也不同喔!
* 較常用的有 KDE 環境,GNOME 環境,afterstep、WindowMaker、icewm、fvwm
... 等等。KDE, GNOME 不純是 WM,他是 GUI 的整合環境。

X 是透過 X protocol 採主從(client-server)方式的設計,相當適合網路上的
使用。尤其是一些很貴的商業軟體或是一些體積相當龐大的軟體,只要一檯高
檔的機器安裝即可,其它人可以透過網路去使用,並把結果傳回您眼前的電腦
螢幕。而且,這是 portable 的設計,和您使用的作業平檯無關,也就是說您
可以由其它作業系統連上這檯機器來執行機器上的 X 應用程式。
* 當然,本地端的作業系統要安裝自己的 X server。遠端的機器就是 client
(指上頭的應用軟體)。而且,基本前提是網路要暢通。
* Linux/FreeBSD、Windows、OS/2、MS-DOS 系統都有 X server 可以安裝。

另外,提醒您,GNU/Linux 是一套獨立的作業系統,而 XFree86 只是其上的一
套應用軟體,希望別誤會了!有許多朋友,因為這樣的誤解,以致於和 Windows
系統做不適當的比較,這是不公平的。

各種 WM 網站,可先去觀光一下:

http://www.kde.org/ (KDE 整合環境)
http://gnome.org/ (GNOME 整合環境)
http://www.fvwm.org/ (老字號的 WM,特點是:快、省記憶體)
http://blackbox.wiw.org/ (後起之秀,短小精悍,不失漂亮)
http://www.windowmaker.org/ (wmaker 有 NeXT 的影子)
http://freshmeat.net/projects/enlightenment (最華麗的 WM)
http://www.icewm.org/ (實用的 WM,麻雀雖小,五臟俱全)
http://www.afterstep.org/ (另一個 NeXT 代表)
http://tpe.linux-site.net/nico_chen/screenshots/screenshots_index.html
* 最後一個是 moto 兄的現成的圖片,大家可以去看看人家是怎麼佈置桌面的,
還有許多軟體使用的簡單說明,有些看對眼的圖片,恨不得馬上弄來試試。


◎ 我能在 GNU/Linux 上做什麼事情呢?

這就說不完了,anything you want! 除了日常的文書處理作業,上上網,收
發 email、打 BB 外,GNU/Linux 還是程式設計者的天堂,除了一些特殊的 C#
語言外,大概您找得到的程式語言的編譯、組譯、解譯器,在 GNU/Linux 上
都找得到,而且 99.9% 都是 free 的。
* free 指的是軟體本身的自由、公開,與要不要錢無關,但通常在成本相當
低的情形下就可以穫得。

當然 GNU/Linux 的母語是 C,如果您懂 C 的話,使用 GNU/Linux 會愉快得
多,因為 GNU/Linux 裡頭的程式,99.9% 其程式碼都是公開的!不懂 C 但
懂一點 shell script 的話,也是可以玩得不亦樂乎!總之,視您的用途而
定。

GNU/Linux 安裝好,大概一般常用的伺服器(server)都已安裝上去,剩下的是
一些微調設定的工作,如 ftp, email, WWW... 等等。基本上,GNU/Linux 目
前還是傾向定位於網路作業系統,雖然桌上環境正漸漸成熟,但 GNU/Linux 的
重點,還是在網路,可以預見的是,漸漸走向 server + desktop 的趨勢,雖
然還有一段路要走...

像目前非常流行的 WWW server,在 GNU/Linux 裡頭有 Apache + PHP + *SQL
的結合,成本低,相當有威力,這裡有現成的例子:

http://www.linuxfab.cx/ (商用)
http://www.softwareliberty.org/ (非商用)

* Apache 是一種目前使用率相當高的 WWW server。
* PHP(PHP: Hypertext Preprocessor) 伺服器端的 HTML 嵌入式 script 語言。
* SQL(Structured Query Language) 是一種資料庫系統語言,常用的有 mySQL
PostgreSQL 等,也有大型的商業產品。
* 以上原始碼皆可自由取得。

更高級的運用,如 google 搜尋引擎,以數千檯的 GNU/Linux 機器組成,這已
超出我能力範圍了,有待各位去發掘。總之,東西是死的,人是活的...

那,很常被問題到的一個問題:能不能完全取代 XXX?這個我無法回答,得看您
『陷入』 XXX 有多深而定,如果您願意改變一下習慣,或許有可能,但請別太
『宗教』化了,只是個工具而已,哪裡方便就哪裡用吧!我個人是把 GNU/Linux
當做 desktop system 來用,幾乎都可以處理,但是不是能處理很好,及處理起
來方不方便,那是另外一個問題了,反而有時回到 windows 上有點惘然說,打
開 notepad,卻猛按 Esc 鍵(vi)!但其他 OS 目前既然能存在,那一定是有其
存在的價值,我們似沒有必要去抹殺,open source, open mind。


◎ 精華區:

http://asklinux.net/
http://bbs.ee.ntu.edu.tw/boards/Linux/index.html
各 BBS 站應會有精華區及查詢的功能,請多多利用,避免同樣的問題一再重複。

免費線上書籍:
wget ftp://wks.uts.ohio-state.edu/unix_course/unix_book.ps (英文)
wget http://www.cle.idv.tw/free-doc/unix-manul (中文)
wget ftp://ftp.tku.edu.tw/Document/Chinese_Doc/UNIX-Guide/main.ps
這是楊景翔先生所寫的 ``UNIX 初學者使用手冊'' 也有出版成書(第三波)。
以上都是針對一般 Unix 系統,但可以參考,基本原理是一樣的。


◎ 中文入門網站:

http://www.cyut.edu.tw/~ckhung/
* 這是朝陽大學洪朝貴老師的網站,是學習 FS/OSS 的樂園,也有打包好的
最近期內容的 tarball 供下載,請多多利用!
wget http://www.cyut.edu.tw/~ckhung/download/ckhung_wp.tgz
網頁常有更新,有空得去查探一下!

http://www.study-area.net/menu1.htm
* 這是網中人兄(netman)創立的網站,重點雖是網路,但也有電腦硬體及
使用 GNU/Linux 的基礎知識。目前由 study-area 團隊共同維護。

http://www.cle.idv.tw/free-doc/
* 這是 Pofeng Lee 兄相當豐富的私人收藏。

http://cle.linux.org.tw/
* 這是 CLE(Chinese Linux Extension) 總部。
* 舊網頁在: http://cle.linux.org.tw/old/

http://www.debian.org/intl/zh/
* 這是 Debian-Chinese 總部。Debian 的中文使用手冊在這兒可以找到。

http://mdk.linux.org.tw/
* Mandrake 中文使用手冊在這兒可以找到。

http://xcin.linux.org.tw/
* 這是中文輸入法 XCIN Project 總部。xcin 及國際化(i18n)的問題,
請先來此逛逛。許多中文出不來...,怎麼輸入中文的問題,請先到這個
網站 i18n 項目內惡補一下。

http://www.linux.org.tw/
* 這是 TLUG(Taiwan Linux User Group) 的網頁,有台灣 Linux 的一些重
要消息。其中 CLDP(Chinese Linux Documents Project)
http://www.linux.org.tw/CLDP/
是 Linux 中文文件計劃的大本營,有為數相當多的中文文件。

http://kde.linux.org.tw/
* 這是 KDE 中文化 Project 總部。

http://i18n.linux.org.tw/
* 這是 Linux 中文化 Project 總部。

http://www.linuxfab.cx/
* 這是國人設立的 LinuxFab 電子新聞雜誌總部。

http://x11.alphalab.net/
* 這是 George O 兄維護的網站,有許多關於 X 的介紹。


◎ 英文入門網站:

http://www.cafecomputer.com/faqindex.htm
* 這是 John Pisini 先生維護的 Linux-FAQ,是由他自行撰寫的另一份 FAQ
文件,每個星期都會更新,資料相當新,很值得參考。

http://www.linuxdoc.org/
* 這是 LDP(Linux Documents Project) 的大本營,就是一些 HOWTOs 文件。
在這裡的都是最新的版本。

http://heather.cs.ucdavis.edu/~matloff/Linux/LinuxInstall.pdf
* 這是 Norman Matloff 教授的 Linux 安裝指引,目前最新版本是 2001.11.05,
是以 RedHat 為講述對象,但其它 distro 也可參考。

http://www.powerup.com.au/~squadron/
* 這是一頁就說完的 Linux 手冊。裡面含重要的系統設定檔及一些相當實用
的指令,可以下載後印出來放在手邊隨時參考。雖說是一頁,但我下載的
pdf 檔卻是兩頁,作者大概是指正反兩面都印吧!

http://www.xfree.org/FAQ/
* 這是 XFree86 的 FAQs 大本營。


◎ 各位的系統裡就有不少文件可以參考:

man pages(使用 man 這個指令)
info pages(使用 info 這個指令)
/usr/doc(或 /usr/share/doc) 目錄下的資料(尤其是一些 HOWTO 文件)
/usr/X11R6/doc
/usr/src/linux/Documentation 下的資料
* 請記得安裝時要把一些文件安裝上去,別讓文件躺在 HD 或 CD 裡,卻跑到
版上來問問題。
* 許多線上說明或書本上找不到的內容,如一些驅動程式使用說明,其實就在
/usr/src/linux 及以下的子目錄裡頭。
* 如果您的 distro 無中文版的 HOWTO 文件,請到:
http://www.linux.org.tw/CLDP/ 一遊,裡頭有數量很多的中文翻譯文件。


◎ 硬體支援資料庫:

GNU/Linux 是 Free(自由)的作業系統,有些新硬體不見得可以馬上支援,
原因是硬體廠商不願釋出硬體規格所致,因此安裝前最好檢查一下 GNU/Linux
能支援的硬體,如果不幸您的硬體 GNU/Linux 不支援,那請不要客氣,寫信
給硬體廠商,如果認為一個人力量薄弱,請 po 到版上來,大家一起響應。

Linux-FreeBSD 硬體支援資料庫:

http://www.linux.org.tw/hardware/index.php3 (中文)
http://www.linhardware.com/ (英文)

以下為英文:
http://www.linux-mandrake.com/en/hardware.php3
http://hardware.redhat.com/hcl/?pagename=hcl
http://hardwaredb.suse.de/index.php?LANG=en_UK
http://www.xfree86.org/cardlist
http://www.xfree86.org/4.2.0/Status.html (4.2.0 可變更為您的版本)
http://www.mostang.com/sane/sane-backends.html
http://linuxdoc.org/HOWTO/Hardware-HOWTO.html

◎ 找軟體:

http://freshmeat.net (鮮肉店)
http://linux.tucows.com (牛頭店)
http://www.linuxfab.cx (軟體報報)
* 以上皆有 email 可以訂閱,這樣就可以坐在家裡就知道軟體最新動態了!
news://comp.os.linux.announce
* 這個 news group 會不定期公告新的軟體。


◎ 網路學習

http://www.study-area.net/network/networkfr.htm
* 網路的學習可以從這兒開始。

http://turtle.ee.ncku.edu.tw/~tung/
* 這是優客筆記簿網站,有相當多網路相關文章。

http://www.cle.idv.tw/free-doc/ifnet100/
* 這是 Pofeng Lee 兄的收藏,是沈文智先生的著作:
``Internet/Fidonet 網路技術實務''

http://aerosol.ev.ncku.edu.tw/~vbird/
* 這是 vbird 兄維護的網站,有很多網路架站實作的經驗。


◎ 呼天不應,叫地不響的時候:

http://www.google.com/
http://www.google.com/linux
http://www.1stlinuxsearch.com/
http://bbs.openfind.com.tw/
http://www.ask.com/
* 請注意研究一下其使用方法,例如,ask 站可以使用:
"what is linux?" 之類的敘述來問問題。
而 google 站有中文繁體界面可使用,而且可以打入 site 以縮小搜尋範圍。

線上電腦名詞辭典(英文)
http://www.InstantWeb.com/foldoc/

英文版的 Linux FAQs 會在每個月初在 comp.os.linux.misc 這個 newsgroup
post 出來。


◎ 版權聲明

Copyright (c) 2002 Edward Guoo Jenq Lee(李果正) edt1023 at speedymail.org

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation.

本文件依 GNU FDL(GNU Free Documentation License) 發行:
http://www.gnu.org/copyleft/fdl.html#TOC1


2002.01.28
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]應該知道的 Linux 技巧
應該知道的Linux技巧
2013年1月9日 陳皓 發表
這篇文章來源於Quroa的一個問答《What are some time-saving tips that every Linux user should know?》—— Linux用戶有哪些應該知道的提高效率的技巧。我覺得挺好的,總結得比較好,把其轉過來,並加了一些自己的理解。首先,我想告訴大家,在Unix/Linux下,最有效率技巧的不是操作圖形界面,而是命令行操作,因為命令行意味著自動化。如果你看過《你可能不知道的Shell》以及《28個Unix/Linux的命令行神器》你就會知道Linux有多強大,這個強大完全來自於命令行,於是,就算你不知道怎麼去做一個環保主義的程序員,至少他們可以讓你少熬點夜,從而有利於你的身體健康和性生活。下面是一個有點長的列表,正如作者所說,你並不需要知道所有的這些東西,但是如果你還在很沉重地在使用Linux的話,這些東西都值得你看一看。(注:如果你想知道下面涉及到的命令的更多的用法,你一定要man一點。對於一些命令,你可以需要先yum或apt-get來安裝一下,如果有什麼問題,別忘了Google 。如果你要Baidu的話,我僅代表這個地球上所有的生物包括微生物甚至細菌病毒和小強BS你到宇宙毀滅)

基礎

學習 Bash 。你可以man bash來看看bash的東西,並不復雜也並不長。你用別的shell也行,但是bash是很強大的並且也是系統默認的。(學習zsh或tsch只會讓你在很多情況下受到限制)
學習vim。在Linux下,基本沒有什麼可與之競爭的編譯輯器(就算你是一個Emacs或Eclipse的重度用戶)。你可以看看《簡明vim攻略》和《Vim的冒險遊戲》以及《給程序員的Vim速查卡》還有《把Vim變成一個編程的IDE》等等。
了解ssh。明白不需要口令的用戶認證(通過ssh-agent, ssh-add),學會用ssh翻牆,用scp而不是ftp傳文件,等等。你知道嗎?scp遠端的時候,你可以按tab鍵來查看遠 ​​端的目錄和文件(當然,需要無口令的用戶認證),這都是bash的功勞。

熟悉bash的作業管理,如: &, Ctrl-Z, Ctrl-C, jobs, fg, bg, kill,等等。當然,你也要知道Ctrl+\(SIGQUIT)和Ctrl+C (SIGINT)的區別。
簡單的文件管理: ls和ls -l (你最好知道“ls -l”的每一列的意思), less, head, tail和tail -f, ln和ln -s (你知道明白hard link和soft link的不同和優缺點), chown, chmod, du (如果你想看看磁盤的大小du -sk *), df, mount。當然,原作者忘了find命令。
基礎的網絡管理: ip或ifconfig, dig。當然,原作者還忘瞭如netstat, ping, traceroute,等
理解正則表達式,還有grep/egrep的各種選項。比如: -o, -A,和-B這些選項是很值得了解的。
學習使用apt-get和yum來查找和安裝軟件(前者的經典分發包是Ubuntu,後者的經典分發包是Redhat),我還建議你試著從源碼編譯安裝軟件。
日常

在bash 裡,使用Ctrl-R 而不是上下光標鍵來查找歷史命令。
在bash裡,使用Ctrl-W 來刪除最後一個單詞,使用Ctrl-U 來刪除一行。請man bash後查找Readline Key Bindings一節來看看bash的默認熱鍵,比如:Alt-. 把上一次命令的最後一個參數打出來,而Alt-* 則列出你可以輸入的命令。
回到上一次的工作目錄: cd – (回到home是cd ~)
使用xargs。這是一個很強大的命令。你可以使用-L來限定有多少個命令,也可以用-P來指定並行的進程數。如果你不知道你的命令會變成什麼樣,你可以使用xargs echo來看看會是什麼樣。當然, -I{} 也很好用。示例:
find  . -name \*.py | xargs  grep  some_function

cat  hosts | xargs  -I{} ssh  root@{} hostname

pstree -p可以幫你顯示進程樹。(讀過我的那篇《一個fork的面試題》的人應該都不陌生)
使用pgrep 和pkill 來找到或是kill 某個名字的進程。(-f 選項很有用).
了解可以發給進程的信號。例如:要掛起一個進程,使用kill -STOP [pid]. 使用man 7 signal 來查看各種信號,使用kill -l 來查看數字和信號的對應表
使用nohup 或disown 如果你要讓某個進程運行在後台。
使用netstat -lntp來看看有偵聽在網絡某端口的進程。當然,也可以使用lsof。
在bash的腳本中,你可以使用set -x 來debug輸出。使用set -e 來當有錯誤發生的時候abort執行。考慮使用set -o pipefail 來限制錯誤。還可以使用trap來截獲信號(如截獲ctrl+c)。
在bash 腳本中,subshel​​ls (寫在圓括號裡的) 是一個很方便的方式來組合一些命令。一個常用的例子是臨時地到另一個目錄中,例如:
# do something in current dir
( cd  /some/other/dir ; other- command )
# continue in original dir

在bash 中,注意那裡有很多的變量展開。如:檢查一個變量是否存在: ${name:?error message}。如果一個bash的腳本需要一個參數,也許就是這樣一個表達式input_file=${1:?usage: $0 input_file}。一個計算表達式: i=$(( (i + 1) % 5 ))。一個序列: {1..10}。截斷一個字符串: ${var%suffix} 和${var#prefix}。示例: if var=foo.pdf, then echo ${var%.pdf}.txt prints “foo.txt”.
通過<(some command) 可以把某命令當成一個文件。示例:比較一個本地文件和遠程文件/etc/hosts: diff /etc/hosts <(ssh somehost cat /etc/hosts)
了解什麼叫“ here documents ” ,就是諸如cat <在bash中,使用重定向到標準輸出和標準錯誤。如: some-command >logfile 2>&1。另外,要確認某命令沒有把某個打開了的文件句柄重定向給標準輸入,最佳實踐是加上“使用man ascii 來查看ASCII 表。
在遠端的ssh會話裡,使用screen或dtach來保存你的會話。(參看《28個Unix/Linux的命令行神器》)
要來debug Web,試試curl 和curl -I 或是wget 。我覺得debug Web的利器是firebug,curl和wget是用來抓網頁的,呵呵。
把HTML 轉成文本: lynx -dump -stdin
如果你要處理XML,使用xmlstarlet
對於Amazon S3, s3cmd 是一個很方便的命令(還有點不成熟)
在ssh中,知道怎麼來使用ssh隧道。通過-L or -D (還有-R) ,翻牆神器。
你還可以對你的ssh 做點優化。比如,.ssh/config 包含著一些配置:避免鏈接被丟棄,鏈接新的host時不需要確認,轉發認證,以前使用壓縮(如果你要使用scp傳文件):
TCPKeepAlive= yes
ServerAliveInterval=15
ServerAliveCountMax=6
StrictHostKeyChecking=no
Compression= yes
ForwardAgent= yes

如果你有輸了個命令行,但是你改變注意了,但你又不想刪除它,因為你要在歷史命令中找到它,但你也不想執行它。那麼,你可以按下Alt-# ,於是這個命令關就被加了一個#字符,於是就被註釋掉了。
數據處理

了解sort 和uniq 命令(包括uniq 的-u 和-d 選項).
了解用cut, paste, 和join 命令來操作文本文件。很多人忘了在cut前使用join。
如果你知道怎麼用sort/uniq來做集合交集、並集、差集能很大地促進你的工作效率。假設有兩個文本文件a和b已解被uniq了,那麼,用sort/uniq會是最快的方式,無論這兩個文件有多大(sort不會被內存所限,你甚至可以使用-T選項,如果你的/tmp目錄很小)
cat  a b | sort  | uniq  > c    # c is a union b並集

cat  ab | sort  | uniq  -d > c    # c is a intersect b交集

cat  a bb | sort  | uniq  -u > c    # c is set difference a - b差集

了解和字符集相關的命令行工具,包括排序和性能。很多的Linux安裝程序都會設置LANG 或是其它和字符集相關的環境變量。這些東西可能會讓一些命令(如:sort)的執行性能慢N多倍(注:就算是你用UTF-8編碼文本文件,你也可以很安全地使用ASCII來對其排序)。如果你想Disable那個i18n 並使用傳統的基於byte的排序方法,那就設置export LC_ALL=C (實際上,你可以把其放在.bashrc)。如果這設置這個變量,你的sort命令很有可能會是錯的。
了解awk 和sed,並用他們來做一些簡單的數據修改操作。例如:求第三列的數字之和: awk '{ x += $3 } END { print x }'。這可能會比Python快3倍,並比Python的代碼少三倍。
使用shuf 來打亂一個文件中的行或是選擇文件中一個隨機的行。
了解sort命令的選項。了解key是什麼(-t和-k)。具體說來,你可以使用-k1,1來對第一列排序,-k1來對全行排序。
Stable sort (sort -s) 會很有用。例如:如果你要想對兩例排序,先是以第二列,然後再以第一列,那麼你可以這樣: sort -k1,1 | sort -s -k2,2
我們知道,在bash命令行下,Tab鍵是用來做目錄文件自動完成的事的。但是如果你想輸入一個Tab字符(比如:你想在sort -t選項後輸入字符),你可以先按Ctrl-V,然後再按Tab鍵,就可以輸入字符了。當然,你也可以使用$'\t'。
如果你想查看二進製文件,你可以使用hd命令(在CentOS下是hexdump命令),如果你想編譯二進製文件,你可以使用bvi命令(http://bvi.sourceforge.net/ 牆)
另外,對於二進製文件,你可以使用strings(配合grep等)來查看二進制中的文本。
對於文本文件轉碼,你可以試一下iconv。或是試試更強的uconv 命令(這個命令支持更高級的Unicode編碼)
如果你要分隔一個大文件,你可以使用split命令(split by size)和csplit命令(split by a pattern)。
系統調試

如果你想知道磁盤、CPU、或網絡狀態,你可以使用iostat, netstat, top (或更好的htop),還有dstat命令。你可以很快地知道你的系統發生了什麼事。關於這方面的命令,還有iftop, iotop等(參看《28個Unix/Linux的命令行神器》)
要了解內存的狀態,你可以使用free和vmstat命令。具體來說,你需要注意“cached” 的值,這個值是Linux內核佔用的內存。還有free的值。
Java 系統監控有一個小的技巧是,你可以使用kill -3 發一個SIGQUIT的信號給JVM,可以把堆棧信息(包括垃圾回收的信息)dump到stderr/logs。
使用mtr 會比使用traceroute 要更容易定位一個網絡問題。
如果你要找到哪個socket或進程在使用網絡帶寬,你可以使用iftop 或nethogs。
Apache的一個叫ab 的工具是一個很有用的,用quick-and-dirty的方式來測試網站服務器的性能負載的工作。如果你需要更為複雜的測試,你可以試試siege。
如果你要抓網絡包的話,試試wireshark 或tshark。
了解strace 和ltrace。這兩個命令可以讓你查看進程的系統調用,這有助於你分析進程的hang在哪了,怎麼crash和failed的。你還可以用其來做性能profile,使用-c 選項,你可以使用-p選項來attach上任意一個進程。
了解用ldd命令來檢查相關的動態鏈接庫。注意:ldd的安全問題
使用gdb來調試一個正在運行的進程或分析core dump文件。參看我寫的《GDB中應該知道的幾個調試方法》
學會到/proc 目錄中查看信息。這是一個Linux內核運行時記錄的整個操作系統的運行統計和信息,比如: /proc/cpuinfo, /proc/xxx/cwd, /proc/xxx/exe, /proc/xxx/fd/, /proc/ xxx/smaps.
如果你調試某個東西為什麼出錯時,sar命令會有用。它可以讓你看看CPU, 內存, 網絡, 等的統計信息。
使用dmesg 來查看一些硬件或驅動程序的信息或問題。
作者最後加了一個免責聲明:Disclaimer: Just because you can do something in bash, doesn't necessarily mean you should. ;) (全文完)


原文出處:应该知道的Linux技巧 | 酷壳 - CoolShell.cn
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|