使用者體驗
:命令執行
(the shell)
一旦作業系統載入之後,他就開始等待命令。命令可以通過
cli(command
line
inte***ce)或者
gui
(graphical
user
inte***ce
)輸入。
命令輸入會進入乙個命令的解析器(在unix世界這個叫做shell)。
shell
用自己的規則解析命令之後執行命令。
乙個經典
shell流程:
終端提示-》
輸入命令-》
shell
解析命令- 》
shell
請求核心執行,shell進入睡眠狀態直到記憶體執行完畢。-》
shell
顯示執行結果和等待下個命令。
一些通用的shell:
bourne
shell
/bin/sh ,
bourne
again
shell
/bin/bash,
cshell /bin/csh, korn shell /bin/ksh
msdos
和windows
的shell
叫command
或者cmd。
通過shell
是乙個解析器,shell很快做一些複雜的任務。事實shell
是乙個很強的程式設計環境。第乙個shell可以做解析特殊字元。這些特殊字元叫萬用字元。這些特殊字元影響輸出和執行shell命令。
常用的萬用字元有:*,?
,, shell的變數
當你登陸到unix系統,你會面對乙個定義好的環境變數的shell。這個環境變數叫shell
變數。很多東西被定義在乙個檔案(
.proflie
)裡。可以通過命令env,檢視自己的shell變數。
$env
其中乙個變數是
home
,這個變數定義你的主目錄的絕對路徑。這些shell變數可以被用於任何乙個命令。例如:
$cd $home
表示回到自己的主目錄
unixshell管道(pipes)及其更改
unix
所有程式都有檔案描述
(file descriptors)
來表示它的輸入輸出。預設的檔案描述:
標準輸入
(0),
標準輸出
(1)
和標準錯誤
(2).
乙個程式將會用
fscanf(2c)
或者cin
直到eof(^d
),通過標準輸入讀取資料.
檔案描述預設是連線到乙個裝置,例如:標準輸入是連線到鍵盤。如果你不想你的程式通過鍵盤讀取輸入,想從檔案中讀取輸入。unix執行更改管道。就是你可以改變標準輸入,輸出,錯誤來自**或者到**去。
操作 ,
改變程式stdout到乙個檔案,這個檔案會被覆蓋,例子:
ls > foo.txt
cat a.txt b.txtc.txt > foo.txt
操作符改變程式stdin
這樣程式可以讀取檔案,
例子:
cat 1/11/20151/11/2015
操 ,改變程式stdout到乙個檔案,這個檔案不會被覆蓋
unix
的一些特殊檔案
/dev/urandom,
如果你改變通過這個檔案讀取你獲得隨機資料。這個通常用來當做隨機數產生器。
/dev/null
,如果你改變輸出到這個檔案,資料會消失
/dev/zero
,如果你通過這檔案讀取,你會獲得
0。通常用來初始化
資料。
道(pipes)的合併:
n>&m, 2>&1,
表示標準輸出和標準錯誤合併一起。
shell
的pipes
簡單的可以這樣:
複雜一點:
(什麼是shell),
什麼是shell
?.html
(系統的環境變數是什麼
) ,
系統的環境變數是什麼
%3f.html
7 shell程式設計
一.shell指令碼介紹 shell是什麼?一門程式語言,用來解釋執行這門程式語言語法的直譯器 計算機體系結構 命令 shell直譯器 系統呼叫的介面 核心 計算機硬體 什麼是程式語言 人 程式語言 計算機 什麼是程式設計 人 程式語言 計算機 先幹什麼 再幹什麼 然後幹什麼 什麼是程式 我們把計算...
Shell 學習7 Shell 特殊變數
前面已經講到,變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果 29949特殊變數列表 0 當前指令碼的檔名 n 傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如...
shell 學習筆記7 shell 函式
把相同程式段定義成函式,可以減少整個程式的 量,提公升開發效率 增加程式的可讀性,易讀性,提公升管理效率 可以失效程式功能模組化,使程式具備可移植性 其實linux系統裡面近2000個命令可以說都是shell的函式 function 名稱 復合命令塊 重定向 function 函式名 1 開發乙個建...