linux發展史
unix誕生
1965年時,貝爾實驗室(Bell Labs)加入一項由通用電氣(General Electric)和麻省理工學院(MIT)合作的項目;該項目要建立一套多使用者、多任務、多層次(multi-user、multi-task、multi-level)的MULTICS操作系統。直到1969年,因MULTICS項目的工作進度太慢,該項目就被停了下來。當時,Ken Thompson已經有一個稱為"星際旅行"的程序在GE-635的機器上運行,但是反應非常的慢,正巧被他發現了一臺被閑置的PDP-7(Digital的主機),Ken Thompson和Dennis Ritchie就將"星際旅行"的程序移植到PDP-7上。而這部PDP-7就此在整個計算機歷史上留下了芳名
1973年,Ken Thompson(肯·湯姆森)和Dennis Ritchie(丹尼斯·里奇)發明了C語言之后,著手將UNIX程序用高階的C語言改寫,這個時候已經是第4版了(C的前身叫B,也是他們兩個人發明的,為了改寫UNIX,他們將B語言做了一番改進,而成了C語言)。這個劃時代的動作讓UNIX能夠很輕易地被移植到各種不同的機器上。
unix為什么成功
健壯性
功能豐富
移植性
開放性
GNU
GNU是自由軟件之父Richard Stallman在1984年組織開發的一個完全基于自由軟件的軟件體系,與此相應的有一分通用公共許可證(General Public License,簡稱GPL)。Linux以及與他有關的大量軟件是在GPL的推動下開發和發布的。
自由軟件之父 – Richard Stallman 像一個神態莊嚴的傳教士一樣喋喋不休地到處傳播自由軟件的福音,闡述他創
立GNU的夢想:“自由的思想,而不是免費的午餐”。這位自由軟件的“頂級神甫”為自己的夢想付出了大半生的努
力,他不但自己創作了許多自由軟件,如:GCC、和GDB,在他的倡導下,目前人們熟悉的一些軟件如BIND、P
erl、Apache、TCP/IP等都成了自由軟件的經典之作。
如果說Richard Stallman創立并推動了自由軟件的發展,那么,Linus Torvalds毫不猶豫奉獻給GNU的Linux,則把
自由軟件的發展帶入到一個全新的境界。
BSD
386BSD因為法律問題直到1992年還不能發布,NetBSD和FreeBSD是386BSD的后裔,比Linux早。Linus Tor
valds說,當時如果有自由的基于386的Unix-like操作系統,他就可能不會創造Linux。盡管無法預料這給以后的軟
件業究竟造成了什么樣的影響(如果沒有這個法律糾紛,很有可能沒有今天的革命性的Linux),但有一點可以肯
定,Linux更加豐富了這塊土壤。
Minix
Minix是一種基于微內核架構的類Unix計算機操作系統,由Andrew S. Tanenbaum發明。Minix最初發布于1987
年,開放全部源代碼給大學教學和研究工作。2000年重新改為BSD授權,成為自由和開放源碼軟件。
因為AT&T的政策改變,在Version 7 Unix推出之后,發布新的使用條款,將Unix源代碼私有化,在大學中不再能
使用Unix源代碼。教授為了能在課堂上教授學生操作系統運作的實務細節,決定在不使用任何AT&T的源代碼前
提、下,自行開發與Unix兼容的操作系統,以避免版權上的爭議。他以小型Unix(mini-Unix)之意,將它稱為Minix。
Minix沒有任何代碼抄襲Unix,所以它們之間并沒有任何繼承關系,Minix作為當時有史以來的第一個開源的操作系
統放到網上以后,短期之內得到了飛速發展,大量的人進行下載學習。
由于Minix是教授一人所寫,所以存在一些漏洞。這時候有使用者發現漏洞存在,想著去下載一些補丁或者自己寫
一些補丁來修補這些漏洞,修補之后發現效果不錯,然后就建議教授利用這些補丁完善下Minix,結果呢,教授比
較固執,意思是說:為了維持Minix的純潔性,不需要任何外來代碼。也就是說,根本不打算做商業發行,所以Mi
nux保持了其最原始的風范。
linux的由來
Linux是一套自由加開放源代碼的類Unix操作系統,誕生于1991年10月5日(第一次正式向外公布),由芬蘭
學生Linus Torvalds和后來陸續加入的眾多愛好者共同開發完成。
Linux是一個基于POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟
件、應用程序和網絡協議,可支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定
的多用戶網絡操作系統。
Linux存在著許多不同的版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,比如:手
機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。
嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且
使用GNU工程各種工具和數據庫的操作系統
在后來的幾年內,由于計算機硬件工業的強力運作,以Intel主導的x86系統架構的個人計算機大行其道,所以個人
計算機算是相當流行的一個機器了。但在此時,人們使用的大多還是DOS操作系統。此時,芬蘭赫爾辛基大學有
個叫Linus Torvalds的學生做了件不尋常的事情。當時他正好有一臺386的計算機,由于并不喜歡自己電腦上的DO
S系統,所以就想:既然Minix這么棒、這么穩定,那我何不將它移植到個人計算機 (好在由于Stallman提倡的Op
en Source理念,他得以接觸到一些Source Code,而經由這樣的一個想法,O(∩_∩)O~他就很有心的讀取了Unix
核心,并且去除較為繁復的核心程序,將它改寫成可以適用于一般個人計算機的x86系統上面)。
到了1991年,他終于將0.02版的原始碼hobby放到網絡上面供大家下載,由于hobby受到大家的肯定,相當多的朋
友一起投入這個工作中。終于在1994年,將第一個完整的核心Version 1.0釋出,并且造成目前的大流行。。。由
于Linux kernel的發展是由虛擬團隊所達成的,大家都是透過網絡取得Linux的核心原始碼,經由自己精心改造后再
回傳給Linux社群,進而一步一步的發展完成完整的Linux系統,至于Linus Torvalds是這個集團中的發起者。由于
這個群策群力的緣故,Linus Torvalds將Linux定為同樣造福大家的GNU授權模式!
Linux是Linus Torvalds受到Minix的影響而作成的。但在設計哲學上,Linux則和Minix大相逕庭。Minix在內核設計上
采用微內核的原則,但Linux則和原始的Unix相同都采用宏內核的概念。在Linux發展之初,雙方還于1992年在新
聞組上有過一場精彩的理念爭論。Minix的作者和支持者認為Linux的單內核構造是“向七十年代的大倒退”,而Linux
的支持者認為Minix本身沒有實用性
linux的發行版
Redhat : Redhat,應稱為Redhat系列,包括RHEL(Redhat Enterprise Linux,為收費版本)、Fedora Core(由Redhat桌面版本發展而來,免費)、CentOS(RHEL的社區克隆版本,免費)。Redhat可以說是在國內使用最多的Linux版本,甚至有人將Redhat等同于Linux。這個版本的特點就是使用人數多,資源多,而且網上的許多Linux教程也都以Redhat為例進行講解。
Debian: 或者稱Debian系列,包括Debian和Ubuntu等。Debian是社區類Linux的典范,也最遵循GNU規范。Debian分為三個分支: stable, testing和unstable。
Ubuntu: 嚴格來說不能算一個獨立的發行版本,Ubuntu是基于Debian的unstable版本加強而來,可以說Ubuntu是一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的Linux桌面系統。根據選擇的桌面系統不同,有三個版本可供選擇,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特點是界面非常友好,容易上手,對硬件的支持非常全面,是最適合做桌面系統的Linux發行版本。
Gentoo: Gentoo是Linux最年輕的發行版本,因此也吸取之前的發行版本的優點,這也是Gentoo被稱為最完美的Linux發行版本的原因之一。Gentoo最初由DanielRobbins(FreeBSD的開發者之一)創建,由于開發者對FreeBSD的熟識,所以Gentoo擁有媲美FreeBSD的廣受美譽的ports系統——Portage包管理系統。不同于APT和YUM等二進制文件分發的包管理系統,Portage是基于源代碼分發的,必須編譯后才能運行,對于大型軟件而言比較慢,不過正因為所有軟件都是在本地機器編譯的,在經過各種定制的編譯參數優化后,能將機器的硬件性能發揮到極致。Gentoo是所有Linux發行版本里安裝最復雜的,但是又是安裝完成后最便于管理的版本,也是在相同硬件環境下運行最快的版本
FreeBSD : FreeBSD并不是一個Linux系統,但FreeBSD與Linux支持的硬件環境比較一致,采用的軟件也比較類似,用戶也有許多重合。所以可以將FreeBSD視為一個Linux版本來比較。FreeBSD擁有兩個分支:stable和current。其中,stable是穩定版,而current則是添加了新技術的測試版。
CentOS:雖然社區企業操作系統(Community ENTerprise Operating System)是Linux服務器最有名最常用的發行版,但是它的桌面版本還在繼續不斷完善中。
Elementary OS:其開發人員標榜Elementary OS是“Windows和OS X快速又開放的替代品”,這款漂亮精致基于Ubuntu LTS的桌面Linux發行版,第一版發行于2011年,目前發行的是第三個穩定版本(代號“Freya”)
openSUSE :既 可作為一個滾動發布,又可當作是一個獨立的定期發布版本,openSUSE根據其開發人員的不同,是系統管理員、開發人員和桌面用戶Linux發行版的選 擇,無論你的經驗水平處于哪種級別(受到初學者和極客們的一致好評)。最重要的是,著名又屢獲殊榮的SUSE Linux Enterprise產品基于openSUSE
Linux Mint :Linux Mint的著名口號(“From freedom came elegance”),不只是說說而已。基于Ubuntu的Linux Mint,是一個穩定、功能強大、完整、易于使用的Linux發行版——我們還有很多很多的褒義詞可以用來形容Mint
linux的哲學思
1、一切皆文件
2、單一目的的小程序
3、組合小程序完成復雜任務
4、文本文件保存配置信息
5、盡量避免跟用戶交互
虛擬化
在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率
命令適用
ls用法:ls [選項]… [文件]…
-L, --dereference 當顯示符號鏈接的文件信息時,顯示符號鏈接所指示
-a, –all 不隱藏任何以. 開始的項目
cd 目錄切換命令
pwd 顯示當前目錄
-L, --logical
顯示當前目錄
-P, --physical
顯示當前目錄的實際物理地址
--help 幫助
--version 版本
mv [選項]... [-T] 源文件 目標文件
--backup[=CONTROL] 為每個已存在的目標文件創建備份
-b 類似--backup 但不接受參數
-f, --force 覆蓋前不詢問
-i, --interactive 覆蓋前詢問
-n, --no-clobber 不覆蓋已存在文件
如果您指定了-i、-f、-n 中的多個,僅最后一個生效。
--strip-trailing-slashes 去掉每個源文件參數尾部的斜線
-S, --suffix=SUFFIX 替換常用的備份文件后綴
-t, --target-directory=DIRECTORY 將所有參數指定的源文件或目錄
移動至 指定目錄
-T, --no-target-directory 將目標文件視作普通文件處理
-u, --update 只在源文件文件比目標文件新,或目標文件
不存在時才進行移動
-v, --verbose 詳細顯示進行的步驟
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
cp 用法:cp [選項]... [-T] 源文件 目標文件
長選項必須使用的參數對于短選項時也是必需使用的。
-a, --archive 等于-dR --preserve=all
--backup[=CONTROL 為每個已存在的目標文件創建備份
-b 類似--backup 但不接受參數
--copy-contents 在遞歸處理是復制特殊文件內容
-d 等于--no-dereference --preserve=links
-f, --force 如果目標文件無法打開則將其移除并重試(當 -n 選項
存在時則不需再選此項)
-i, --interactive 覆蓋前詢問(使前面的 -n 選項失效)
-H 跟隨源文件中的命令行符號鏈接
-l, --link 鏈接文件而不復制
-L, --dereference 總是跟隨符號鏈接
-n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, --no-dereference 不跟隨源文件中的符號鏈接
-p 等于--preserve=模式,所有權,時間戳
--preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果
可能保持附加屬性:環境、鏈接、xattr 等
-c same as --preserve=context
--sno-preserve=屬性列表 不保留指定的文件屬性
--parents 復制前在目標目錄創建來源文件路徑中的所有目錄
-R, -r, --recursive 遞歸復制目錄及其子目錄內的所有內容
--reflink[=WHEN] 控制克隆/CoW 副本。請查看下面的內如。
--remove-destination 嘗試打開目標文件前先刪除已存在的目的地
文件 (相對于 --force 選項)
--sparse=WHEN 控制創建稀疏文件的方式
--strip-trailing-slashes 刪除參數中所有源文件/目錄末端的斜杠
-s, --symbolic-link 只創建符號鏈接而不復制文件
-S, --suffix=后綴 自行指定備份文件的后綴
-t, --target-directory=目錄 將所有參數指定的源文件/目錄
復制至目標目錄
-T, --no-target-directory 將目標目錄視作普通文件
-u, --update copy only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-x, --one-file-system stay on this file system
-Z, --context=CONTEXT set security context of copy to CONTEXT
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
wget 用法: wget [選項]... [URL]...
下載:
-t, --tries=NUMBER 設置重試次數為 NUMBER (0 代表無限制)。
--retry-connrefused 即使拒絕連接也是重試。
-O, --output-document=FILE 將文檔寫入 FILE。
-nc, --no-clobber skip downloads that would download to
existing files (overwriting them).
-c, --continue 斷點續傳下載文件。
--progress=TYPE 選擇進度條類型。
-N, --timestamping 只獲取比本地文件新的文件。
yum whatprovides 查看命令的工具包名稱
yum install telnet tree htop 安裝
systemctl restart NetworkManager.service 重啟網卡服務
dhclient 命令使用動態主機配置協議動態的配置網絡接口的網絡參數
vi 文字編輯器
h :光標左移一個字符
l :光標右移一個字符
space:光標右移一個字符
Backspace:光標左移一個字符
k或Ctrl+p:光標上移一行
j或Ctrl+n :光標下移一行
Enter :光標下移一行
w或W :光標右移一個字至字首
b或B :光標左移一個字至字首
e或E :光標右移一個字至字尾
) :光標移至句尾
( :光標移至句首
}:光標移至段落開頭
{:光標移至段落結尾
nG:光標移至第n行首
n+:光標下移n行
n-:光標上移n行
n$:光標移至第n行尾
H :光標移至屏幕頂行
M :光標移至屏幕中間行
L :光標移至屏幕最后行
0:(注意是數字零)光標移至當前行首
$:光標移至當前行尾
su : 用法 su-用戶名 【切換用戶】
usradd :用法 useradd - 【帳 號 建 立 或 更 新 新 使 用 者 的 資 訊】
basename:(獲取基名)用法:basename 名稱 [后綴] 或:basename 選項
去掉前導的目錄部分后打印“名稱”。
如果指定的話,還會去掉尾隨的“后綴”。
--help 顯示此幫助信息并退出
--version 輸出版本信息并退出
mkdir: 用法:mkdir [選項]... 目錄...
-m, --mode=模式 設置權限模式(類似chmod),而不是rwxrwxrwx 減umask
-p, --parents 需要時創建目標目錄的上層目錄,但即使這些目錄已存在也不當作錯誤處理
-v, --verbose 每次創建新目錄都顯示信息
-Z, --context=CTX 將每個創建的目錄的SELinux 安全環境設置為CTX
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
uname:(查看內核版本號)
-a(顯示所有信息)
-r(只顯示內核版本號)
who: 用法:who [選項]... [ 文件 | 參數1 參數2 ]
-a, --all 等于-b -d --login -p -r -t -T -u 選項的組合
-b, --boot 上次系統啟動時間
-d, --dead 顯示已死的進程
-H, --heading 輸出頭部的標題列
--ips print ips instead of hostnames. with --lookup,
canonicalizes based on stored IP, if available,
rather than stored hostname
-l,--login 顯示系統登錄進程
--lookup 嘗試通過 DNS 規范化主機名
-m 只針對和標準輸入有直接交互的主機和用戶
-p, --process 顯示由 init 進程衍生的活動進程
-q, --count 列出所有已登錄用戶的登錄名與用戶數量
-r, --runlevel 顯示當前的運行級別
-s, --short 只顯示名稱、線路和時間(默認)
-T, -w, --mesg 用+,- 或 ? 標注用戶消息狀態
-u, --users 列出已登錄的用戶
--message 等于-T
--writable 等于-T
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
whoami: 用法 whoani【選項】
--help 顯示此幫助信息并退出 --version 輸出版本信息并退出
tty : 用法 tty【選項】
-s, --silent, --quiet 什么也不顯示,只返回退出狀態值 --help 顯示此幫助信息并退出 --version 顯示版本信息并退出
原創文章,作者:mxl,如若轉載,請注明出處:http://www.www58058.com/51691