鍍金池/ 教程/ Linux/ sheel 學(xué)習(xí)第三天
shell 學(xué)習(xí)四十一天----列出文件 ls 和 od 命令
shell 學(xué)習(xí)小結(jié)
shell 學(xué)習(xí)第二十八天----case 語句
shell 學(xué)習(xí)四十四天----尋找文件
shell 學(xué)習(xí)三十五天----波浪號(hào)展開與通配符
shell 學(xué)習(xí)三十八天----執(zhí)行順序和 eval
shell 學(xué)習(xí)四十八天----文件校驗(yàn)和匹配
shell 學(xué)習(xí)四十天----awk 的驚人表現(xiàn)
shell 學(xué)習(xí)第十一天----sed 正則的精確控制
shell 學(xué)習(xí)第十七天----awk 命令
shell 學(xué)習(xí)三十九天----內(nèi)建命令
shell 學(xué)習(xí)四十五天----xargs
shell 學(xué)習(xí)三十七天----引用
shell 學(xué)習(xí)第十六天----join 練習(xí)
shell 學(xué)習(xí)第二十四天----提取開頭或結(jié)尾數(shù)行
shell 學(xué)習(xí)第九天----分組
shell 學(xué)習(xí)第五天----基本的 I/O 重定向
shell 學(xué)習(xí)第十五天----使用 cut 選定字段
shell 學(xué)習(xí)四十六天----文件系統(tǒng)的空間信息 df 和 du 命令
shell 學(xué)習(xí)第八天----擴(kuò)展正則表達(dá)式 (ERE)
shell 學(xué)習(xí)第十九天----文本塊排序
shell 學(xué)習(xí)第二十一天----重新格式化段落
shell 學(xué)習(xí)三十六天----命令替換
shell 學(xué)習(xí)第二十天----sort 的其他內(nèi)容以及 uniq 命令
shell 學(xué)習(xí)四十二天----使用 touch 更新文件時(shí)間
shell 學(xué)習(xí)五十一天----top 命令查看進(jìn)程列表
shell 學(xué)習(xí)第一天
shell 學(xué)習(xí)五十四天----進(jìn)程系統(tǒng)調(diào)用的追蹤 strace
shell 學(xué)習(xí)五十天----查看進(jìn)程 ps 命令
shell 學(xué)習(xí)第二十七天----退出狀態(tài)和 if 語句
shell 學(xué)習(xí)第二十三天----打印
shell 學(xué)習(xí)三十三天----關(guān)于重定向
shell 學(xué)習(xí)四十九天----進(jìn)程建立
shell 學(xué)習(xí)第三十天----break,continue,shift,getopts
shell 學(xué)習(xí)五十五天----進(jìn)程記賬
shell 學(xué)習(xí)總結(jié)一
shell 學(xué)習(xí)第二十六天----變量與算數(shù)
shell 學(xué)習(xí)第二十二天----計(jì)算行數(shù), 字?jǐn)?shù)以及字符數(shù)
shell 學(xué)習(xí)五十八天----/proc 文件系統(tǒng)
shell 學(xué)習(xí)第二十五天----神器的管道符
shell 學(xué)習(xí)第三十二天----read 讀取一行
sheel 學(xué)習(xí)第三天
shell 學(xué)習(xí)----小結(jié)
shell 學(xué)習(xí)第十八天----文本排序
shell 學(xué)習(xí)第三十一天----函數(shù)問題
shell 學(xué)習(xí)第十天----sed 查找與替換
shell 學(xué)習(xí)四十三天----臨時(shí)性文件的建立與使用
shell 學(xué)習(xí)四十七天----文件比較 cmp,diff,patch
shell 學(xué)習(xí)三十四天----printf 詳解
shell 學(xué)習(xí)五十七天 ----linux 任務(wù)管理,針對(duì)上一講的總結(jié)和擴(kuò)展
shell 學(xué)習(xí)第六天----小結(jié)
shell 學(xué)習(xí)第十三天----sed 案例分析
shell 學(xué)習(xí)第七天----基礎(chǔ)正則表達(dá)式 (BRE)
shell 學(xué)習(xí)第十二天----行與字符串
shell 學(xué)習(xí)小結(jié)四
shell 學(xué)習(xí)第二十九天----循環(huán)
shell 學(xué)習(xí)五十二天----刪除進(jìn)程 kill 命令
shell 學(xué)習(xí)五十六天----延遲進(jìn)程調(diào)度
shell 學(xué)習(xí)第四天----華麗的 printf 輸出
shell 學(xué)習(xí)第十五天----join 連接字段
shell 學(xué)習(xí)完結(jié)篇----希望你能看到
shell 學(xué)習(xí)第二天
shell 學(xué)習(xí)五十三天----捕獲信號(hào) trap

sheel 學(xué)習(xí)第三天

shell 的基本元素

shell 最基本的工作就是執(zhí)行命令。以互動(dòng)的方式使用 shell 很容易了解這一點(diǎn):沒敲入一個(gè)命令,shell 就會(huì)執(zhí)行。像這樣:

cd /tmp:ll -d sh
drwxr-xr-x 2 root root 4096 6 月 7 18:56 sh
以上是在我電腦上運(yùn)行的程序。
以上的例子很簡單,展示了 linux 命令寒的原理。

  • 首先,格式簡單,盡量以空格隔開命令中的各個(gè)組成部分。
  • 其次,命令名稱是命令行的第一個(gè)項(xiàng)目。通常后面有選項(xiàng),任何額外的參數(shù)都放在選項(xiàng)之后。兩個(gè)命令可以使用分號(hào)分割。

第三選項(xiàng)的開頭是一個(gè)破折號(hào)(或減號(hào))。選項(xiàng)既然叫做選項(xiàng),就代表選項(xiàng)可有可無。如需要多個(gè)選項(xiàng),只需要輸入一個(gè)劍豪后面加選項(xiàng)即可,例如,ls -l -t /tmp/sh 可以寫成 ls -lt /tmp/sh

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

shell 識(shí)別三種基本命令

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

shell 中的變量

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

例如:

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

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

簡單的 echo 輸出

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

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

etho 的語法

etho [string......]

用途是產(chǎn)生 shell 腳本的輸出,沒有什么主要選項(xiàng)。行為模式是將參數(shù)打印到標(biāo)準(zhǔn)輸出,參數(shù)之間用空格隔開,并以換行符結(jié)尾。轉(zhuǎn)義序列用來表示特殊字符,以及控制其行為模式。

常用的轉(zhuǎn)移序列:

\a:
\b:
\c:
\f:
\n: 換行
\r: 回車
\t: 水平制表符
\v: 垂直制表符
\\: 反斜杠字符
\0ddd:

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