鍍金池/ 教程/ Linux/ shell 學(xué)習(xí)第六天----小結(jié)
shell 學(xué)習(xí)四十一天----列出文件 ls 和 od 命令
shell 學(xué)習(xí)小結(jié)
shell 學(xué)習(xí)第二十八天----case 語句
shell 學(xué)習(xí)四十四天----尋找文件
shell 學(xué)習(xí)三十五天----波浪號展開與通配符
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 更新文件時間
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í)第二十二天----計算行數(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í)四十三天----臨時性文件的建立與使用
shell 學(xué)習(xí)四十七天----文件比較 cmp,diff,patch
shell 學(xué)習(xí)三十四天----printf 詳解
shell 學(xué)習(xí)五十七天 ----linux 任務(wù)管理,針對上一講的總結(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í)五十三天----捕獲信號 trap

shell 學(xué)習(xí)第六天----小結(jié)

shell 中的兩個特殊文件 “/dev/null” 和 “/dev/tty”

  1. /dev/null 當(dāng)被用作重定向輸出時,程序的輸出被直接丟棄。該文件用在哪些不關(guān)心程序輸出的地方。 當(dāng)被用作重定向輸入時,輸入則是文件結(jié)束。

  2. /dev/tty 當(dāng)被用作重定向時,表示重定向到終端。

基本命令查找

shell 會沿著 $PATH 來尋找命令。$PATH 是一個以冒號分割的目錄列表,你可以在列表所指定的目錄下找到所要執(zhí)行的命令。命令可能是 shell 腳本,也可能是編譯后的可執(zhí)行文件,從用戶角度來看,二者并無不同。默認(rèn)路徑至少包含 /bin/usr/bin,或許還包含其他的。名稱為 bin 的目錄用來保存可執(zhí)行文件。

如果要編寫自己的腳本,最好準(zhǔn)備一個自己的 bin 目錄來存放他們,并且讓 shell 能夠自動找到他們。

$cd                                     
$mkdir bin
$mv nusers bin
$PATH+$PATH:$HOME/bin         // 將個人的 bin 目錄附加到 PATH(暫時生效,系統(tǒng)重啟后失效)
nusers 

要想永久生效,在 /etc/profile 文件中把你的 bin 目錄加入到 $PATH,而每次登陸時 Shell 都將讀取.profile 文件。

PATH=$PATH:$HOME/bin

$PATH 里的空項(xiàng)目表示當(dāng)前項(xiàng)目??枕?xiàng)目位于路徑中間時,可以用兩個連續(xù)的冒號來表示,如果將冒號直接置于最前端或尾端,分別表示查找的時候最先查找或最后查找當(dāng)前目錄。

$PATH=:/bin:/usr/bin 先找當(dāng)前目錄
$PATH=/bin::/usr/bin 當(dāng)前目錄居中
$PATH=/bin:/usr/bin: 最后找當(dāng)前目錄
不應(yīng)該在查找路徑中放進(jìn)當(dāng)前項(xiàng)目。

訪問 shell 腳本的參數(shù)

定義參數(shù)關(guān)鍵字 $: 例如 echo frist argumentsis $1,大于等于 10 的參數(shù)需要用{}包起來,echo tenth argumentsis ${10}

例如我們想查找名字為 syx 用戶是否登陸

who | grep syx
syx pts/1 2015-06-09 11:00 (192.168.199.114)

知道了如何尋找特定的用戶后,我們可以經(jīng)命令放在腳本里,這段腳本的第一個參數(shù)就是我們要找的用戶名稱

vi findname 建立新文件
#!/bin/sh
#查看指定用戶是否登錄
who | grep $1

./findname syx syx pts/1 2015-06-09 11:00 (192.168.199.114)

但是這是在理想情況下,如果用戶不按套路出牌,即不指定參數(shù),則會報錯。

小結(jié)

編譯性語言和腳本語言本身并無優(yōu)劣之分,只有適合不適合;當(dāng)對性能要求不高,希望盡快開發(fā)出程序并以較高的方式工作是,腳本語言完全可以勝任。所有的 shell 腳本都應(yīng)該以#!為第一行,這一機(jī)制可讓你的腳本更有靈活性,你可以選擇使用 shell 或其他的語言來編寫腳本。

shell 是一個完整的程序設(shè)計語言,我們已經(jīng)說明過基本的命令,選項(xiàng),參數(shù)與變量,以及 echoprintf 的基本輸出,也稍微說了一下基本的 I/O 重定向符:<,>,>> 以及 |。shell 會在 $PATH 變量所列舉的各個目錄中尋找命令。$PATH 常會包含個人的 bin 目錄 (永愛存儲用戶個人的程序與腳本),可以在 /etc/profile 文件中將目錄列入到 PATH 里。