鍍金池/ 教程/ Linux/ shell學習第三天
shell 學習四十五天---xargs
shell學習第三天
shell 學習十五天---join 連接字段
shell 學習第二天
shell 學習四十三天---臨時性文件的建立與使用
shell 學習第六天---小結
shell 學習三十三天---關于重定向
shell 學習二十九天---循環(huán)
shell 學習二十四天---提取開頭或結尾數(shù)行
shell 學習第十天---sed 查找與替換
shell 學習第十一天---sed 正則的精確控制
shell 學習三十天---break,continue,shift,getopts
shell 學習---小結
shell 學習三十一天---函數(shù)問題
shell 學習第四天---華麗的 printf 輸出
shell 學習三十五天---波浪號展開與通配符
shell 學習十九天---文本塊排序
shell 學習十二天---行與字符串
shell 學習二十一天---重新格式化段落
shell 學習十八天---文本排序
shell 學習十三天---sed 案例分析
shell 學習四十一天---列出文件 ls 和 od 命令
shell 學習十七天---awk 命令
shell 學習三十六天---命令替換
shell 學習十六天---join 練習
shell 學習三十二天---read 讀取一行
shell 學習二十二天---計算行數(shù),字數(shù)以及字符數(shù)
shell 學習小總結---本章小結
shell 學習第八天---擴展正則表達式(ERE)
shell 學習四十二天---使用 touch 更新文件時間
shell 學習二十八天---case 語句
shell 學習三十九天---內(nèi)建命令
shell 學習第一天
shell 學習三十四天---printf 詳解
shell 學習二十六天---變量與算數(shù)
shell 學習三十八天---執(zhí)行順序和 eval
shell 學習四十四天---尋找文件
shell 學習二十五天---神器的管道符
shell 學習十四天---使用 cut 選定字段
shell 學習第五天---基本的I/O重定向
shell 學習四十天---awk 的驚人表現(xiàn)
shell 學習二十天---sort 的其他內(nèi)容以及 uniq 命令
shell 學習二十三天---打印
shell 學習第九天---分組
shell 學習四十八天---文件校驗和匹配
shell 學習二十七天---退出狀態(tài)和 if 語句
shell 學習四十七天---文件比較 cmp,diff,patch
shell 學習第七天---基礎正則表達式(BRE)
shell 學習四十六天---文件系統(tǒng)的空間信息 df 和 du 命令
shell 學習三十七天---引用
shell 學習小結

shell學習第三天

shell 的基本元素

shell 最基本的工作就是執(zhí)行命令。以互動的方式使用 shell 很容易了解這一點:每敲入一個命令,shell就會執(zhí)行。像這樣:

cd /tmp ; ll -d sh  
drwxr-xr-x 2 root root 4096 6月   7 18:56 sh  

以上是在我電腦上運行的程序。
以上的例子很簡單,展示了 linux 命令寒的原理。
首先,格式簡單,盡量以空格隔開命令中的各個組成部分。
其次,命令名稱是命令行的第一個項目。通常后面有選項,任何額外的參數(shù)都放在選項之后。兩個命令可以使用分號分割。
第三選項的開頭是一個破折號(或減號)。選項既然叫做選項,就代表選項可有可無。如需要多個選項,只需要輸入一個劍豪后面加選項即可,例如,ls -l -t /tmp/sh可以寫成 ls -lt /tmp/sh

如果多個命令之間使用的是&符號,而不是分號,則 shell 將在后臺執(zhí)行其前面的命令,這意味著 shell 不用等到該命令的完成,就可以繼續(xù)執(zhí)行下一個命令。

shell 識別三種基本命令:
內(nèi)建命令:就是 linux 的命令,例如 cd,ls,mkdir 等,這些命令是由于其必要性才內(nèi)建的,內(nèi)外一種命令的村子啊是為了效率,其中最典型的就是 test,
shell 函數(shù):功能健全的一系列程序代碼,用 shell 語言寫成,可以像使用命令一樣使用,就是在 C++中調(diào)用函數(shù)。
a.外部命令:是由 shell 的副本(新的進程)所執(zhí)行的命令,還是命令。

shell 中的變量
似乎任何一種編程語言都有變量,shell 也不例外,每一個變量都有一個值。值是配給變量的內(nèi)容或者信息。在 shell 中,變量值可以是(通常是)空值,也就是不含有任何字符。這是合理的,也是常見的,好用的特性。空值就是 null
在 shell 中變量名的長度無限制,所能保存的字符數(shù)同樣沒有限制。
變量的賦值方式:變量名=值,中間不能有任何的空格,如果想去除 shell 變量的值時,需要在變量名錢加上$字符。當所賦予的值包含空格的時候,需要將值用單引號或者雙引號包起來,用單引號包起來的后果是單引號里面的所有特殊符號都不具備特殊含義,用雙引號包起來代表特殊符號有特殊含義。
例如:

name=syx;  
echo ‘$name’  輸出$name  
echo “$name”  輸出 syx  

如果想將 name1=syx,name2=zsf 合并成 syxzsf
name=${name1}${name2},echo $name name=syxzsf,貌似還有其他的合并方法,個人覺得這一種最好。
至于變量的四種類型什么的,暫時不搞。

簡單的 echo 輸出

echo 的作用就是產(chǎn)生輸出,可以提示用戶,或者用來產(chǎn)生數(shù)據(jù)提供用戶,或者產(chǎn)生數(shù)據(jù)進一步處理。

早起的 echo 只能將參數(shù)打印到 shell 交互界面上,參數(shù)之間以一個空格隔開,并以換行符號結尾。
但是,這么強大的語言,怎么可能不進一步的發(fā)展?
后來又衍生出了-n 選項,省略結尾的換行符號。

etho的語法:
etho [string......]
用途是產(chǎn)生 shell 腳本的輸出,沒有什么主要選項。行為模式是將參數(shù)打印到標準輸出,參數(shù)之間用空格隔開,并以換行符結尾。轉(zhuǎn)義序列用來表示特殊字符,以及控制其行為模式。
常用的轉(zhuǎn)移序列:
\a:
\b:
\c:
\f:
\n:換行
\r:回車
\t:水平制表符
\v:垂直制表符
\\:反斜杠字符
\0ddd:

在實際編寫 shell 腳本的時候,\a 序列通常用來引起用戶的注意,\0ddd 序列最有用的地方就是通過送出終端轉(zhuǎn)移序列進行(非常)原始的光標操作,但是不建議這么做。很少使用\0ddd 序列。