衆所周知,作業系統(簡稱OS)是最靠近硬體的一層系統軟體,它把硬體裸機改造成為功能完善的一台虛拟機,使得計算機系統的使用和管理更加友善,計算機資源的利用效率更高,上層的應用程式可以獲得比硬體提供的功能更多的支援。其中kernal作為作業系統最底層的結構,将底層的硬體資源虛拟化成更加容易通路的資源,如人機互動界面上的圖示等。kernal上一層為library(庫),它們為使用者對計算機的操作提供了接口。使用者可以通過作業系統接口調用library庫中的函數也可以直接通過kernal調用庫中函數,兩者之上都有作業系統接口。
[root@localhost ~]#
在xshell中通過使用者登入界面,連接配接到Linux系統後就可以直接啟動shell接口程式。上述字元串就是我們在shell接口程式中所使用的指令提示符。所有的指令都是在這個提示符後面完成的。
root:目前登入的使用者賬戶名稱。
localhost:目前主機的非完整格式的主機名,一般是截取自第一個'.'之前;
~:shell程式所在的非完整格式路徑的路徑的基名,其實是一個目錄名稱,這個目錄我們又稱為叫shell的工作目錄;而預設情況下,這個shell的工作目錄就是登入使用者自己的家。
#:指令提示符号。
其中當指令提示符号為#時則為超級使用者root,為$時則為普通使用者,即非root使用者;不具有管理權限,不能執行管理類操作;
程式一般包含四類檔案:
二進制檔案(可執行檔案,應用程式檔案):可以直接運作的檔案 ,windows:exe,msi,linux:ELF。
頭檔案/庫檔案:
windows:dll(dynamic:linked library動态連結庫);
Linux:so(Share Object)供應用使用的庫,共享庫;
ko(kernal Object)供核心使用的庫;
幫助檔案:是整個程式的使用說明書。
接下來說一下Linux指令的通用格式:
COMMAND OPTIONS ARGUMENTS[PARAMENTERS](三者之間必須用空格分隔)
COMMAND(指令):想要執行的具體操作,程序;
指令分為内部指令與外部指令。内部指令是内建于shell中的指令,外部指令是通過安裝應用程式而得到的指令。
這樣,在使用指令時,我們需要去區分目前使用的指令是哪一種指令,怎麼去區分内外指令呢?
# type COMMAND;
使用type指令
這個指令的結果可以有如下幾種情況:
1. 如果被檢測的指令是外部指令,則type會顯示一條具體的路徑,而這個路徑正是通過PATH變量中存放的路徑查找得到的;
2. 如果被檢測的指令是内部指令,則type指令會顯示"COMMAND is shell buildin"的資訊
3. 當然還有可能是第三種情況,那就是為了友善使用者的使用,可能把某個指令及其常用選擇放在一起建構了一個别名指令,是以如果是這種情況的話,type指令會将别名指令以及原始的指令、選項以及參數的組合顯示出來。
OPTIONS:此次指令執行過程中所使用的特性。
OPTIONS可分為短選項與長選項。
短選項:
-CHAR
一次可以寫多個, -a -l -d(分開寫的話,選項間必須空格),-ald(合起來寫必須要有空格)
長選項:
--WORD,--help,--list,--human-readable長選項不能和合并書寫,隻能一個一個書寫。
注意:
1.有些選項需要額外的參數。
2.有些選項可以不用短橫線,有些指令的選項一定不能用短橫線。
3.有些指令的長選項隻使用一個短橫線。
ARGUMENTS[PARAMENTERS](參數):此次指令換行的操作對象有些指令可以同時擁有多個參數,但是參數之間必須用空格分隔。
1.指令在書寫的時候,COMMAND,OPTIONS,ARGUMENTS[PARAMENTERS]一定要用空白字元分割。
2.有些指令在書寫時選項和參數的位置是可以調換的。
3.指令中的所有組成部分,嚴格區分大小寫。
擷取指令的使用幫助:
擷取指令的使用幫助可以分為兩種,一即為内部指令時,二即為外部指令時。
内部指令時:
# help COMMAND;直接使用help指令進行操作。
外部指令時:
1.使用--help選項
# COMMAND --help
2.使用man幫助手冊(manual)
預設情況下,我們使用軟體包管理工具直接将已經編譯好的應用程式的軟體包安裝到Linux系統中,
在安裝應用程式軟體的時候,會同時安裝這個軟體所需要用到的幫助檔案,預設的存儲位置:/usr/share/man/。
man幫助手冊中有九章内容,簡稱man九章:
1.使用者指令(所有使用者可以執行的普通指令)
2.系統調用
3.c庫函數
4.裝置和特殊檔案
5.配置檔案格式
6.遊戲相關的配置資訊
7.雜項
8.管理類指令(隻有root能夠執行的管理指令)
9.核心相關
每個man手冊中都有很多字段;
NAME:程式的名稱和功能簡介
SYNOPSIS:指令使用的文法格式
DESCRIPTION:程式的較長的描述資訊
OPTIONS:選項的用法及含義的詳細說明
AUTHON:程式的作者資訊
REFORTING BUGS:報告程式中所包含的BUG格式
EXAMPLES:指令的使用範例
SEE ALSO:額外的參考内容
FILES:與該程式相關的其他檔案,如配置檔案等
其中的SYNOPSIS,明确的說明了概指令的使用格式和選項組合方式,我們通常能看到下述這幾類特殊符号,他們的意義介紹如下:
[]:可以省略不寫,也可以根據需要填寫
<>:必須書寫
...:有更多的
a丨b丨c:多選一
看完幫助了,就按q進行退出。
那麼,在這樣的Linux的環境下,Linux的哲學思想又是什麼呢?
1.一切皆檔案
Linux把幾乎所有的資源都抽象成檔案的形式,甚至連硬體,網絡通信使用的套接字以及管道皆如此。檔案:一組由邊界的位于儲存設備中的流式資料。
2.又衆多功能單一的小程式組成,卻可以實作複雜任務;
功能單一:每個小程式隻做一件事,并且要做好;
複雜任務:盡可能完美的組成多個小程式,讓其功能發揮到極緻。
3.盡量避免與使用者直接互動,易于以程式設計的方式實作自動化任務實施。
4.使用純文字格式來儲存配置資訊。
Linux系統中,所有檔案都從屬于唯一一個原初結點“/”,系統中的檔案與“/”形成一個倒置的樹形檔案,檔案都從根起始逐級逐層的尋找到目标檔案加以操作。其中由根開始的尋找路徑被稱為絕對路徑,即一切從“/”開始查找的路徑,而從目前檔案起始出發逐層查找目标檔案的路徑稱為相對路徑。
例
touch /abc(屬于根下建立一個檔案,絕對路徑)
touch abc(目前檔案下,用相對路徑)
任何一個路徑都可以分為兩部分:
檔案基名(即路徑末尾):
指令basename(取出路徑中的基名)
檔案目錄名(即除路徑末尾之外的其與路徑的組合):
指令dirname(取出路徑中的目錄名)
注意:如果順路就用相對路徑,如果不順路就用絕對路徑。
檔案的命名格式:
在檔案系統中,基于檔案名引用檔案,按名來進行存取,在檔案系統中對檔案名有一系列規定
1.檔案名不能包含有"/"斜線字,"/"可表示根檔案系統, "/"也可表示路徑分隔符。
2.檔案名的長度不能超過255個字元
3.在同一位置中檔案名不能重複
4.檔案名要求嚴格區分大小寫
在這裡簡單描述了下關于Linux指令行操作CLI的一些基本操作和如何擷取幫助資訊,并沒有過多闡述,最後列舉一些關于HFS的層級标準了解一下在CLI界面“/”下的一些檔案具體執行的功能
/:
bin:普通使用者可以執行的普通操作指令
boot:引導作業系統啟動的靜态檔案,包括引導程式,Linux核心,initramfs等
dev:device,裝置(ls /dev)
塊裝置:凡是能夠實作資料存放的裝置都是塊裝置(U盤等)
字元裝置:能夠實作資料傳輸和資料處理的裝置,順序通路(滑鼠鍵盤等)
etc:存放着主機專用的系統配置檔案
home:普通使用者的家目錄的根
lib,lib64,存放共享庫檔案目錄,核心的子產品
media:可移動裝置的挂載點
mnt:臨時的檔案系統的挂載點
opt:以前是非常流行的第三方應用程式的安裝目錄(預設情況下是空的)
root:超級使用者root的家目錄
sbin:存放那些隻有超級使用者root能夠執行的管理類指令
srv:存放由系統提供的各種服務資料(預設情況下是空的)
tmp:temperate,臨時檔案目錄,每隔30天自動清除該目錄中沒有通路的資料
usr:對于現在的Linux而言非常重要,可以說是Linux的第二個根,所有的
第三方的應用程式預設都會裝到這個目錄下。
/usr/local第三根,主要用于編譯第三方的應用程式。
/usr/src:存放應用程式的源代碼
var:可變化的資料
本文轉自 wujunqi1996 51CTO部落格,原文連結:http://blog.51cto.com/12480612/1904558