標籤:電腦基礎知識
程式啟動並執行模式;
Linux系統將自身劃分為兩部分,一部分為核心軟體,即是kernel,也稱作核心空間,另一部分為普通應用程式,這部分稱為使用者空間。
使用者空間中的代碼運行在較低的特權層級上,只能看到允許它們使用的部分系統資源,並且不能使用某些特定的系統功能,也不能直接存取核心空間和硬體裝置,以及其它一些具體的使用限制。
使用者空間:user space,us 核心空間:system space
POS :Portable Operating System 可移植作業系統規範
POSIX
API;編程介面
運行程式格式;
window;EXE,dll (dynamic library)動態連結程式庫
Linux:ELF, so(shared object)共用對象
一般而言程式分兩部分組成
程式;指令+資料
指令;唯讀
能在CPU上啟動並執行指令,CPU上有哪些是既定的,不可能發生改變也不可能去修改它,所以通常是唯讀
資料;讀寫
資料是指令加工的對象,所以通常是讀寫的,既能讀又能修改
程式;演算法加資料結構,程式員寫程式無非是調用CPU指令其中的某些命令,對它期望加工的資料進行加工,這些資料就存放在記憶體中。
庫調用,系統調用;允許被調用的程式
malloc(), free()
程式設計語言;組合語言、微碼編程
系統中某些於硬體相關的特有代碼、驅動程式開發。
進階語言c c++ 使用面窄
主要寫系統級應用、驅動程式
進階應用程式java、python php
應用程式 使用面廣
unix-like
Linux的發行版;
slackware
二次發行版 suse
opensuse
debian:
二次發行版 ubuntu
三次發行版 mint
redhat:紅帽
rhel:redhat enterprise linux 企業版 每18個月髮型一個新版本,
CentOS;把rhel發行出來的各種版本用完全相容rhel的格式重新編譯一次在互連網上開放免費提供
fedora;每6個月發行一個新版本 個人版
ArchLinux
Gentoo
Android; kernel(核心) +busybox +java虛擬機器來實現的
Apache;apache
BSD;bsd
GNU;GPLv2版本 ,GPLv3版本,流毒無窮的概念
GPL流毒無窮的協定
LGPL(lesser)寬鬆的
例如:
A: 1000, GPL
B: 20000, 20
A程式寫了1000行代碼,遵循GPL協定的,又有了B程式,因為A程式是
自由擷取的,B程式參考了A,B程式自己有20000行代碼,其中它借用
A的20行,這隻是千分之以,但只要跟A沾上邊兒,B就必須把剩餘所
有的代碼遵循GPL協定
20000行代碼 只借用了20行 剩下的19980都開源了
Apache;apache
BSD;bsd
centos和linux的關係
centos是基礎linux建立的作業系統
linux屬於核心系統,只有終端命令介面,無圖形介面
centos同時擁有終端命令介面和圖形介面
linux和centos都是屬於開源系統
CentOS和RHEL的關係
RHEL發行時有兩種方式,二進位和原始碼的發行方式。可以網上下載免費獲得,如果使用了線上升級包括補丁諮詢服務就要付費。
RHEL一直提供原始碼的發行方式,CentOS就是將RHEL發行的原始碼重新編譯一次,形成一個可使用的二進位版本。由於LINUX的原始碼是GNU,所以從獲得RUEL的原始碼到編譯成新的二進位,都是合法。知識REDHAT是商標。所以在新的發行版裡將REDHAT的商標去掉。
GPL (General Public License)是一份GNU通用公用授權非正式的中文翻譯。它並非自由軟體基金會所代表亦非使用GNU通用公用授權的軟體的法定發布條款,只有GUN通用公用授權英文原文的攀奔始具有此等效力。
LGPL,GUN寬通用公用許可證
GNU,GNU計劃,又稱革奴計劃,是由Richard Stallman在1983年9月27公開發起的。它的目標是建立一套完全自由的作業系統。GNU通用公用許可證。即反著作權概念
Apache,是世界使用排名第一的Web伺服器軟體。它可以運行在幾乎所有廣泛使用的電腦平台上,由於其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。
BSD (Berkeley Software Distribution,伯克利軟體套件) 是Unix的衍生系統,今天BSD並不特指任何一個BSD衍生版本,而是類UNIX作業系統中的一個分支的總稱
封裝管理員
RPM;RPM Package Manager,這一檔案格式名次雖然打上了Redhat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、RHEL,Fedora,S,u,S,e,以及Turbo Linux CentOS 等都有採用,可以算是公認的行業標準了
dpt;
Debian,Ubuntu
自由軟體;
自由使用;自由學習和修改,自由分發,自由建立衍生版,
Linux的哲學思想
1、一切皆檔案,把幾乎所有資源,包括硬體裝置都祖師為檔案格式,
2、由眾多單一母的小程式組成;一個程式只實現一個功能,而且要做好,組合小程式完成複雜人物
3、盡量避免跟使用者互動,目標;實現指令碼編程,以自動完成某些功能
4、使用純文字檔案儲存配置資訊;目標;一款使用的文字編輯器既能完成系統配置工作
如何擷取CentOS的發行版;
http://mirrors.aliyun.com
http://mirrors.souhu.com
http://mirrors.163.com
終端;使用者與主機互動,必然用到的裝置;
物理終端;直接接入原生顯示器和鍵盤裝置;/dev/console (控制台)
虛擬終端;附加在物理終端之上的以軟體方式虛擬實現的終端,CentOS 6 預設啟動6個虛擬終端
Ctrl+Alt+F1-F6切換
圖形終端;附加在物理終端之上的以軟體方式虛擬現實的終端,但額外會提供案頭環境,圖形終端也是虛擬終端的一種
裝置檔案的路徑;/dev/tty# (0-...)
類比終端;圖形介面下開啟的命令列介面。基於ssh協議或telnet協議的等遠程開啟的介面
裝置檔案的路徑;/dev/pts/# (0到無窮大)
查看自己當前的終端裝置命令;#tty
互動式介面;啟動終端後,在終端裝置附加一個互動式應用程式有兩類;
GUI;映像應用介面 視窗管理器來進行管理
X protocol,window,manager,desktop X協議
Desktop;
GNOME 案頭系統 (C語言研發 圖形開發庫gtk)
ked 案頭系統 (C++研發 qt)
XFCE 嵌入式 (輕量級案頭環境)
CLI:文本介面
shell程式:shell本身的意思就是(外殼,整個系統的外殼)
sh (bourn)
csh 接近C語言風格的csh 像而已,差別還是很大的
tcsh csh的升級版
ksh (korn)商業產品 功能強大 想用得買
bash (bourn again shell) 遵循GPL協定的(集csh、ksh兩者的有點) 最為流行的開源sh
zsh 功能強大
看自己喜歡、眾多版本預設的還是bash,
顯示當前使用的shell的命令 #echo $SHELL
顯示當前系統使用的所有shell的命令, #cat /etc/shells
命令提示字元(prompt)僅指#號而已
{[email protected] ~}:$PS1 環境變數來進行定義
echo $PS1 [\[email protected]\h \W]\$ 遵循這種格式來使用
prompt;其實有兩種 Linux使用者有兩類
如果用管理員登入則顯示:#
如果用普通使用者則顯示:$
命令;
輸入命令,(Ebter)斷行符號
告訴或提請shell程式找到鍵入命令所對應的可執行程式或代碼,並由其分析後提交給核心分配資源將其運行起來。表現為一個或多個進程;運行中的程式稱之為(進程)
在shell中可執行檔命令有兩類;
內建命令;由shell內建的,而且通過某命令形式提供;
外部命令;在當前系統的某檔案系統路徑下有對應的可執行程式檔案
which,whereis, 外部命令查看檔案在哪
使用格式就是which或whereis後面跟上命令的名字就可以了
區別內部或外部命令:
#type (COMMAND)命令 例如;#type cd
注意!嚴格區分大小寫
運行命令: 在命令提示字元下鍵入命令就可以了,而命令鍵入格式通常如下;
COMMAND [OPTIONS...] [ARGUMENTS...]
命令 選項 參數
最左側的必須是一個命令,否則報錯
右側跟上可以是選項,選項可以有多個,加中括弧的意思是有些命令是不用的,這個選項是可選的,
再往後就是參數。
選項;用於啟用或關閉命令的某個或某些功能;
短選項;-c 例如: -l -h
短選項一般一個橫線加上單個字元
大多數情況下多個短選項可以命令使用,例如-l,h, 可寫作-lh;可合并,不合并使用中間必須使用空白字元隔開
長選項; --word,例如;--long --human-readable
長選項一般不能合并
長選項一般是用兩個橫線來引導
參數;命令的作用對象, 生效對象 例如,ls /etc 和ls /var
說白了參數是向命令提供資料;注意!資料不是數字。字串其實也是資料
參數有時候也可以多個,多個參數之間也需要空白字元進行分隔
再次強調,命令本身一定要卸載左側,而且命令本身是一個可執行檔二進位程式,或者是shell內建的內建的命令。
注意;
1、多選項之間,以及多參數之間和命令之間都應該使用空白字元分隔,空白字元可以是一個空白,也可以是兩個空白;
2、取消命令執行;Ctrl+c
檔案系統;
C:\Program files\office11\word\word.exe 其實這就是個路徑
/etc/sysconfig/network-scripts/ifcfg-eth0 檔案路徑
目錄最後的才叫做檔案(eth0)
對Linux而言所有起始範圍就叫做根,這是絕對頂級範圍,因為對Linux而言所有檔案上能訪問,必須從這個位置開始,這叫做跟檔案系統。
目錄只是一個路徑映射方式而已
檔案有兩類資料;檔案訪問過程是有路徑的
中繼資料;metadata
資料;data
Linux的檔案系統
1、檔案名稱嚴格區分字元大小寫;例如;file1,File1,FILE1是不同的檔案;
2、檔案名稱可使用除/意外的任一字元,不建議使用特殊字元;
(/)字元有兩種意義,第一(/)它是根目錄,第二(/它是路徑分隔字元)
3、檔案名稱長度最長不能超過255個字元;
4、所有.開頭的檔案,均為隱藏檔案;
路徑有兩種;
1、絕對路徑;從最頂級的開始、從根目錄起始的路徑;
2、相對路徑;對當前位置起始的路徑;
比如C盤ABC檔案夾有個1檔案,還有一個DEF檔案夾,而DEF檔案下有個2檔案.
那1和2的檔案路徑分別為:(都是絕對路徑)
C:\ABC\1
C:\ABC\DEF\2
如果讓1檔案來表示2檔案的路徑
絕對路徑: C:\ABC\DEF\2
相對路徑: DEF\2 (因為1和2檔案前面的C:\ABC這段路徑相同就不用寫出來了)
C:/website/img/photo.jpg 我們就知道photo.jpg檔案是在c盤的website目錄下的img子目錄中。這樣完整的描述檔案位置的路徑就是絕對路徑。我們不需要知道其它任何資訊就可以根據絕對路徑判斷出檔案的位置。
相對路徑就是自己相對與目標位置。不論將這些檔案放到哪裡,只要它們的相對關係沒有變就不會出錯。
..:表示目前的目錄的上一級目錄
目前的目錄;current directory,也稱作working directory;
pwd:printing working directory
能簡寫就一定不全寫
LSB:Linux Standard Base 標準庫
這些路徑的定義其實都是LSB有規定的
命令終結:
ls:顯示目標列表,在Linux中是使用效率較高的命令。ls命令的輸出資訊可以進行彩色加亮顯示,以分區不同類型的檔案。
cd:切換工作目錄至dirname。其中dirName標記法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的home directory(也就是剛login時的目錄)。另外~也表示為home directory的意思,
.則是表示目前所在的目錄,
type:顯示指定命令的類型,判斷給出的指令是內部指令還是外部指令
tty:列印與標準輸入串連的終端裝置的檔案名稱
cat:串連檔案並列印到標準輸出裝置上,cat經常用來顯示檔案的內容,類似於type命令
which:用於尋找並顯示給定的絕對路徑,環境變數PATH中儲存了尋找命令時需要便利的目錄。which指令會在環境變數$PATH設定的目錄裡尋找合格檔案。也就是說,使用which命令,就可以看到某個系統命令是否村長,以及執行的到底是哪一個位置的命令
whereis:定位指令的we禁止程式、原始碼檔案和man手冊頁等相關檔案的路徑。
pwd:以絕對路徑的方式顯示使用者當前工作目錄。命令將目前的目錄的全路徑名稱(從根目錄)寫入標誌輸出。全部目錄使用/分隔。第一個/表示根目錄,最後一個目錄是目前的目錄。執行pwd命令可立刻得知目前所在的工作目錄的絕對路徑名稱。
echo:用於在shell中列印shell變數的值,或者直接輸出指定的字串。linux的echo命令,在shell編程中極為常用,在終端下列印變數value的時候也是常常用到的,因此有必要瞭解下echo的用法echo命令的功能是在顯示器上的顯示一段文字,一般起到一個提示的作用。
命令:
1、檔案系統相關;
目錄管理
檔案管理
檔案查看
檔案編輯
2、系統管理相關;
Linux命令協助的擷取
外部命令;其實所有外部命令都有一個可執行程式,位於檔案系統某目錄下;用which,whereis來擷取
shell程式搜尋可執行程式檔案的路徑定義在PATH環境變數中;
#echo $PATH 注意!自左至右,至關重要,是有次序的
它第一次一旦找到了,如果一個命令在多個路徑下都有執行程式檔案,先後次序是很關鍵的,這就是搜尋路徑的概念
格式;COMMAND [OPTIONS...] [ARGUMENTS...]
命令 選項 參數
內部命令擷取協助;shell程式自己直接附帶的一些基本管理累工具
#help COMMAND 例如;help cd help help
外部命令擷取協助;有獨立的外部可執行程式檔案的命令
1、# COMMAND --help #COMMAND -h
2、使用手冊(manual) #man COMMAND
3、資訊頁 #info COMMAND
4、程式自身的協助文檔 README INSTALL Changelog
5、程式官方文檔, 官方網站;Documentation
6、發行版的官方文檔
7、Google
內建命令協助;
#help COMMAND
hash命令:
shell搜尋到的外部命令的路徑結果會緩衝至kv(key-value)儲存中;
history命令;管理命令曆史
其實linux的命令曆史,在登入進系統以後,所執行所有的新命令。都會放置在記憶體的緩衝當中,但是一旦推出這個登入,這些命令會被記錄在曆史檔案中,命令曆史都有編號。
命令曆史有兩處;
登入shell時,會讀取命令曆史檔案中記錄下的命令;cat.bash_history這個曆史檔案就在使用者的家目錄下
登入進shell後新執行的命令智慧記錄在緩衝中;這些命令會使用者退出時“追加至命令曆史檔案中”
history;
-a;追加本次會話新執行的命令曆史列表至曆史檔案中;
-d;刪除曆史中指定的命令;
-c;清空命令曆史;
8
快捷操作; 1
!#;可調用曆史中第#條命令; 6
!string;調用曆史中最近一個以string開頭的命令; 例如;!1 從下至上看 5
!!;上一條命令; 8
外部命令協助擷取;
每個程式員通常在開發主要的工作有兩部分, 1、寫程式,2、寫程式協助
man COMMAND
手冊頁;ls /usr/share/man1 cd ../man2
man1...man8 叫第一章節
man1;使用者命令 man ls
man2;系統調用
man3;C庫調用
man4;裝置檔案及特殊檔案
man5;設定檔格式
man6;遊戲相關
man7;雜項
man8;管理類的命令 對磁碟分割格式化的都是管理累命令
注意;有些關鍵字在不止一個章節中存在協助手冊;
要查看指定章節中的手冊;man # COMMAND(命令)
man命令的設定檔;/etc/man.config
MANPATH /PATH/TO/SOMEWHERE:指明新的手冊檔案搜尋位置
#man -M /PATH/TO/SOMEWHERE COMMAND:到指定位置下
搜尋COMMAND名的手冊頁並顯示之:
協助手冊中的段落說明
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
AUTHOR
REPORTING BUGS
SEE ALSO
man less
SYNOPSIS 中這些符號的意義;
{};可選內容
<> : 必選內容
a|b : 二選以
...:同一內容可出現多次
man命令的操作手法
空格鍵(space),^,^f,^F,:向檔案尾部翻屏 ^(Ctrl)
b,^B:向檔案首部翻屏
d,^D:向檔案尾部翻半屏
u,^U:向檔案首部翻半屏
RETURN:^N e ^E or ^j :向檔案尾部翻一行
y or ^Y or ^P or K or ^K :向檔案首部翻一行
q :推出
#:跳轉至第#行;
1G:回到檔案首部
G:翻至檔案首部
電腦基礎知識2