*nix 的認真學生應該選擇符合 POSIX 的發行版來很好地學習標準功能嗎?
我想學習 Unix 或 Linux 作為一個認真的學生,特別想學好基礎知識,這樣我就可以有正確的理解,這樣我就可以在平台和發行版之間移動,而不會忘記不尋常的習慣。
我應該在標準發行版中尋找什麼?真的有關係嗎?許多發行版似乎都符合 POSIX 標準——這是最重要的考慮因素嗎?
選擇發行版
*nix 不是你真正坐下來學習的東西。我會選擇一個發行版,例如以下之一:
POSIX
顯然還有其他可以在distrowatch.com上看到。我之所以選擇這 5 個,是因為它們實際上代表了幾乎所有重要的 *nix,除了Solaris或HP-UX。
POSIX 合規性很重要,但不是非常關鍵,尤其是當您使用 Bash、awk、sed 類型的腳本時。毫無疑問會有差異,因此如果您傾向於留在 POSIX 路徑上,從長遠來看,它將為您節省時間,特別是如果您發行版跳躍和/或從一個 *nix 家族轉移到另一個家族。
大多數發行版不符合 POSIX,有關詳細資訊,請參閱POSIX 上的維基百科頁面。
最低位
LSB 或 Linux Standard Base是由Linux 基金會發起的一個項目/工作組,旨在跨各種 *nix 發行版標準化 API、工具等。它的目標與 POSIX 非常相似。
手冊頁和資訊頁
大多數應用程序通常會提供如何在 *nix 系統上的 3 個位置之一中使用它們的詳細資訊。
- 手冊頁- 大多數命令都提供手冊頁,它是手冊頁的縮寫。當你試圖弄清楚 *nix 上的命令如何工作時,這些是你最好的朋友。可以使用以下命令訪問它們:
man <command>
。$ man less LESS(1) LESS(1) NAME less - opposite of more SYNOPSIS less -? less --help less -V less --version less [-[+]aBcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~] [-b space] [-h lines] [-j line] [-k keyfile] [-{oO} logfile] [-p pattern] [-P prompt] [-t tag] [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines] [-# shift] [+[+]cmd] [--] [filename]... (See the OPTIONS section for alternate option syntax with long option names.)
- 資訊頁- 資訊頁類似於手冊頁。大多數 GNU 工具都提供了它們,並且可以使用命令來訪問它們
info <command>
。$ info less File: *manpages*, Node: less, Up: (dir) LESS(1) LESS(1) NAME less - opposite of more SYNOPSIS less -? less --help less -V less --version less [-[+]aBcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~] [-b space] [-h lines] [-j line] [-k keyfile] [-{oO} logfile] [-p pattern] [-P prompt] [-t tag] [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines] [-# shift] [+[+]cmd] [--] [filename]... (See the OPTIONS section for alternate option syntax with long option names.)
--help
** - 大多數工具都提供某種形式的幫助,以支持程序本身。它通常可以通過將參數傳遞--help
給命令來訪問,<command> --help
.$ less --help SUMMARY OF LESS COMMANDS Commands marked with * may be preceded by a number, N. Notes in parentheses indicate the behavior if N is given. h H Display this help. q :q Q :Q ZZ Exit. --------------------------------------------------------------------------- MOVING e ^E j ^N CR * Forward one line (or N lines). y ^Y k ^K ^P * Backward one line (or N lines). f ^F ^V SPACE * Forward one window (or N lines). b ^B ESC-v * Backward one window (or N lines). z * Forward one window (and set window to N). w * Backward one window (and set window to N).
要找什麼
對於初學者,您需要一個附帶的發行版
$$ gcc $$(編譯器)、包管理器、sed、awk、Perl、Bash和所有其他類型或GNU Coreutils,例如:
這個列表還在繼續,這就是我認為我們大多數人都在這個 stackexchange 網站上閒逛的原因 8-)。
我認為學習 *nix 是一門手藝,就像木工或木工一樣。入門很容易,但掌握這些工具可能需要一生的時間。
編輯#1
談到評論中的一些觀點。我正在將@JoelDavis提出的一系列問題轉移到答案中,以便潛在讀者更容易看到它。
**問:**為什麼沒有提到 Fedora/Ubuntu?選擇 FreeBSD 而不是其中一個似乎就像您將它們扔到池子的最深處一樣。
答: CentOS 涵蓋 Red Hat,FreeBSD 涵蓋 BSD。對於學習 *nix 的初學者,我會通過 Fedora 推動 CentOS 開始,因為我們正在教授基礎知識。如果你要出去找工作,CentOS(BSD、Debian 和 SUSE)可以說更適合你,而不是 Fedora/Ubuntu。
我也會向任何即將到來的 *nix 人提及這一點:“首先學習如何將 *nix 管理為伺服器作業系統,然後是桌面作業系統)”。在我在 SE 網站上回答的大約 80% 的問題中,我通常會看到使用者對如何管理 *nix 伺服器或不了解如何在其中開發/操作沒有很好的基本了解。
如果您需要進一步證明,請參閱這篇 zdnet 文章:Linux 伺服器不斷增長,Windows 和 Unix 不斷縮小。伺服器是我們大多數人需要處理 *nix 的地方。
不要將上述內容視為我以任何方式駁斥 *nix 桌面技能或 *nix 在桌面上的功能。10 多年來,我的主要日常作業系統一直是 Fedora 或 CentOS。我只是把學習 *nix 作為伺服器作業系統的重點。
嗯…實際上有點高要求。對於所有類 Unix 系統(包括 Linux),日常命令(例如 cp、ps、rm)和實用程序(例如 vi、top)幾乎相同 - 儘管選項各不相同(可用和字母切換到使用它們。
另一方面,對於系統管理,它們有很大的不同——從處理列印機、添加使用者和安裝軟體包……即使在不同的 Linux 發行版中,這裡也會有不同。此外,設備的名稱——尤其是硬碟、分區、“切片”——各不相同。配置文件和服務的處理方式也有很大不同。
此外,更底層的系統——如何設置磁碟(例如,邏輯卷或軟體 RAID)、如何使用系統使用者和組(例如,具有它的“角色”的 Solaris)等等——變化很大。
至於 X 下的 GUI 程序——Unix/Linux 下的“windows”系統——它的外觀和感覺會非常不同,具體取決於哪個 WindowManager(提供視窗和按鈕等的形狀)或哪個 DesktopEnviroment(基本上是一個更複雜的 WM與其他程序 - 編輯器,郵件客戶端,文件瀏覽器等 - 具有相同的“外觀”,集成到它)你使用 - 以及“主題”,因為許多都可以用於“外觀”和“感覺”(哪些按鈕以及滑鼠如何工作)。不同的 Unix 系統或 Linux 發行版具有不同的預設 WM/DE(儘管切換到另一個通常很簡單)。
當然,在“日常使用”方面,應用程序的使用——電子表格、文字處理器、圖像編輯軟體——同樣的應用程序將以同樣的方式工作——尤其是因為即使是“商業”的 Unix 系統現在也經常使用開源軟體也。
不同類 Unix 或 Linux 系統的內部結構相似,但並不完全相同。我不會立即深入研究核心內部,但如果你這樣做,請記住它們有些相似,但遠非相同。
+++
因此,任何 Unix 系統或 Linux 發行版都應該讓您學習日常命令並讓您執行(大多數)應用程序(在作業系統上執行,但不是其中的一部分 - 儘管 Linux 發行版通常將兩者捆綁在一起),這應該很漂亮在任何其他系統上也有很多相同的工作。然而,當涉及到系統管理時,儘管所有工具都具有基本相同的可用工具集,但它們的名稱和用法會有所不同。基本上,您可以在任何系統上學習良好的管理常式(例如備份),但必須針對每個作業系統學習實際的命令和配置文件。
對於新手,我建議使用 Linux 發行版——它與所有 Unix 系統的普通內容足夠相似,而對於管理員來說,它與其他任何東西都沒有什麼不同。它是免費的並且經常使用,因此您可以輕鬆地在網上找到幫助。我建議你選擇三大 Ubuntu 發行版之一——Ubuntu、Kubuntu 或 Xbuntu——因為它們被廣泛使用,有很多軟體包並且易於管理…… LinuxMint 也非常簡單,並且是從 Ubuntu 分叉的。
當您學習了基礎知識後,您可以嘗試 SlacwareLinux,因為它比其他發行版更“動手”。還有GentooLinux,您可以在其中從原始碼建構所有內容,並在閱讀一本書的同時“引導”您的系統——這個過程將教您很多關於系統的知識。最後是 LinuxFromScratch,您可以在其中建構“您自己的”Linxu 系統(沒有像 Gentoo 那樣的部分自動化),遵循一本書——這將真正教會您 Linux 的不同部分如何相互適應。編譯幾個 Linux 核心並查看核心和其他部分的原始碼,也會教給你很多東西。
FreeBSD 是一種開源免費的非 Linux 替代品,基於“原始”Unix 系統 (BSD) 之一。Solaris 不是開源的,但可以下載(儘管更新和支持成本)——它是另一個“原創”,並且有一些關於使用者(例如“角色”)和磁碟處理的相當有趣的特性。Minix 是一本“教學 Unix”,最初是一本關於作業系統的教科書的伴侶。Debian/Hurd 是一個使用非常“現代”的核心的正在進行中的工作。
要被允許將作業系統稱為“Unix”,它必須經過認證……因為這要花很多錢,大多數 Linux 和其他免費作業系統(如 FreeBSD)都沒有經過認證,儘管大多數 Linux 發行版可能已經過認證。POSIX 是另一個認證標準,指定了一個類 Unix 的“夢想作業系統”。很少(非?)實際上完全遵循這個標准或實現了所有部分,但許多類 Unix 作業系統或多或少是兼容的。再次證明認證成本,儘管許多免費項目實施標準與商業 POSIX 認證的作業系統一樣好(例如,Linux 核心很好地遵循它),但許多免費項目並未獲得認證。除非您正在為美國政府或類似機構設置系統(可能需要認證,例如因為安全和加密問題),否則我不會太擔心 - Linux 系統上的大多數命令,