一入桂、shell命令
- $ date 顯示時(shí)間
- $ who 查看登陸系統(tǒng)的用戶
$ who am i 查看自己的信息 - $ echo 在終端機(jī)上顯示鍵入在命令行的任何信息,會(huì)去掉單詞中的空格
例如:$echo this is test
顯示 this is test - $ ls 列出文件清單
- $ cat (查看的文件名稱) 顯示文件內(nèi)容
- $ wc (參數(shù) -l 行數(shù) -c 字符數(shù) -w 單詞數(shù)) (統(tǒng)計(jì)的文件名稱) 統(tǒng)計(jì)文件中的行數(shù),字符數(shù)馁蒂,單詞數(shù)
- $ cp (源文件) (目標(biāo)文件) 復(fù)制命令
- $ mv (源文件) (目標(biāo)文件) 文件重命名命令蜘腌,也可以移動(dòng)文件的位置
- $ rm 刪除命令
- $ pwd 顯示當(dāng)前工作目錄
- $ cd 改變當(dāng)前工作目錄
- $ mkdir 創(chuàng)建目錄
- $ rmdir 刪除目錄(目錄為空)
- $ rm 刪除文件 加參數(shù) -r 刪除目錄和目錄中的文件
- 替換符合:* 替換為目錄中的所以文件的文件名。單字替換符合:撮珠? 替換單字。[abc]替換 a 或 b 或 c 勺届。[0-9] 匹配0-9的任意字符。如果 [ 后的字符是 饼酿!胚膊,表示反過(guò)來(lái)匹配,即可以匹配除方括號(hào)中所列字符以外的任何字符紊婉。
- ln:鏈接命令。(優(yōu)點(diǎn)刚陡,減小系統(tǒng)占有株汉,使文件同步)
一般格式:ln from to 把文件from 和文件to 鏈接起來(lái)。
連接的限制是必須位于同一個(gè)文件系統(tǒng)乔妈,連接后對(duì)于任何一個(gè)文件的改變都會(huì)影響的另一個(gè)文件,但是刪除任何一個(gè)文件路召,另一個(gè)文件依然存在,不受刪除的影響身隐。(判斷系統(tǒng)中有那些文件系統(tǒng)用 df 命令)不同的系統(tǒng)進(jìn)行連接加參數(shù) -s 唯灵,建立一個(gè)符合化連接。此連接與普通連接很相似埠帕,不同的是,刪除源文件后叁巨,該符合連接就不起作用了呐籽。 - 輸出的重新定向:命令的輸出通常提交到標(biāo)準(zhǔn)輸出設(shè)備蚀瘸,也可以很方便的轉(zhuǎn)向一個(gè)文件來(lái)代替庶橱,這叫輸出重新定向。
命令:在把輸出寫(xiě)入到標(biāo)準(zhǔn)輸出的命令后加 > filename
例如:$ who >filename
>
符號(hào)為不覆蓋原來(lái)的文件內(nèi)容
$ > filename
,前面沒(méi)有命令時(shí)衙猪,shell會(huì)創(chuàng)建一個(gè)空的文件(長(zhǎng)度為0個(gè)字符)布近,如果文件已經(jīng)存在,其內(nèi)容會(huì)消失棵譬。 - 輸入重定向:對(duì)應(yīng)于輸出的重新定向的就是輸入重定向预伺,命令符合是 <
例如:$ wc -l < filename - 管道:unix系統(tǒng)可以把兩條命令的的效果連接起來(lái),這種連接稱作管道酬诀。
例如:$ who | wc -l
$ ls | wc -l - 過(guò)濾器:指能夠從標(biāo)準(zhǔn)輸入接受輸入瞒御,對(duì)輸入進(jìn)行處理后,把結(jié)果寫(xiě)入標(biāo)準(zhǔn)輸出的任何程序肴裙。wc , cat 甜癞,sort 是過(guò)濾器宛乃,ls,who乔煞,date柒室,cd逗宜,pwd空骚,echo擂仍,rm,mv逢渔,cp都不是肃廓。
- 標(biāo)準(zhǔn)錯(cuò)誤:unix把大部分錯(cuò)誤信息都寫(xiě)的這里,標(biāo)準(zhǔn)錯(cuò)誤默認(rèn)也是終端盲赊。
把錯(cuò)誤輸入到文件試用命令格式:命令 2> 文件
例如:$ls n* 2> filename - 一行鍵入多個(gè)命令,用
;
號(hào)分割
例如:$ date 诚卸;pwd - 命令發(fā)送到后臺(tái)绘迁,在命令后加一個(gè) & 號(hào),該命令就發(fā)送到后臺(tái)了辫愉。
例如:$ date >> filename & - ps命令:查看進(jìn)程的命令将硝,參數(shù)
-f
查看父進(jìn)程的命令
例如:$ ps -f - 正規(guī)表達(dá)式:%s/old/new/g 注:g是全部替換
或 :%s/old/new
全部替換:看vi說(shuō)明ifconfig用root用戶登陸查看本機(jī)的ip地址 - cut:從文件中剪出各種各樣的數(shù)據(jù) 【cut -cdhars file】
- cut -c5- data 把data文件中的每一行的第五個(gè)到行尾的字符剪出來(lái),并把結(jié)果寫(xiě)入標(biāo)準(zhǔn)輸出
- who | cut -c1-8 剪出who的輸出的每一行的第一個(gè)到第八個(gè)字符
- who | cut -c1-8 | sort 剪出who的輸出的每一行的第一個(gè)到第八個(gè)字符,并進(jìn)行排序
- cut -d: -f1 /etc/passwd 剪出/etc/passwd 中的以:開(kāi)頭的第一個(gè)字段
- cut -d: -f1,6 /etc/passwd 剪出/etc/passwd 中的以:開(kāi)頭的第一個(gè)字段和第六個(gè)字段
- paste 把多個(gè)行合并起來(lái)痰腮,然后輸出 【paste files】
paste names numbers 將兩個(gè)文件合并律罢,然后輸出
paste -d'+' names numbers 將兩個(gè)文件合并中間用+號(hào)連接,然后輸出
paste -s names 將一個(gè)文件所有行合并沧踏,然后輸出ls | paste -d' ' -s - 把ls的輸出用合并一行并用空格分開(kāi)巾钉。 - sed 是用來(lái)編輯數(shù)據(jù)的程序,意思是流編輯器潦匈。sed不能用于交互〔缢酰【sed command file】。
sed 's/unix/UNIX/' intro 將unix改為UNIX
sed不對(duì)原始文件進(jìn)行更改未舟,要保存更改掂为,必須把sed的輸出重定向到一個(gè)臨時(shí)文件,然后把臨時(shí)文件移回原來(lái)的文件魂角。
sed 's/unix/UNIX/' intro > temp
mv temp intro
sed -n '1,2p' intro 顯示前兩行
sed -n '/unix/p' intro p命令前用斜扛括住字符串智绸,sed只從標(biāo)準(zhǔn)輸入中顯示包含這些字符的行。
sed '1,2d' intro 要?jiǎng)h除正行瞧栗,用d命令迹恐。刪除1,2行 - grep:從一個(gè)或多個(gè)文件中搜索特定的字符串殴边。【grep pattern files】
grep shell ed.cmd 從ed.cmd中找出shell所在行
grep '[A-Z]' list list中包含一個(gè)大寫(xiě)字母的行
grep '[0-9]' list list中包含一個(gè)數(shù)字的行
grep '[A-Z]...[0-9]' list list中包含以大寫(xiě)字母開(kāi)頭竖幔,數(shù)字結(jié)尾的5個(gè)字符組合的行
grep '.pic$' filelist filelist中以.pic結(jié)尾的行
grep -v 'unix' intro 顯示不含unix的行
grep -l 'move_history' *.c 列出包含'move_history' 變量的行
grep -n 'move_history' *.c 列出包含'move_history' 變量的行,前面加行號(hào)是偷。 - sort 輸出進(jìn)行排序
sort -u names 輸出中去掉重復(fù)的行
sort -r names 反序排序
sort names -o new_names 將結(jié)果輸出到new_names中
sort -n data 安算術(shù)方法排序
sort +1n data 跳過(guò)第一個(gè)字段排序 - uniq查找連續(xù)的重復(fù)行圣蝎〈汤玻【uniq in_file out_file】
sort names|uniq -d 顯示重復(fù)的行
二、shell編程起步
- 要讓文件可以執(zhí)行磕秤,要改變文件的許可
chmod +x nu 改變文件nu的許可捧韵,然后在當(dāng)前目錄下鍵入【./nu】即可執(zhí)行 - 注釋符合為#號(hào)
- 變量:以字母或下劃線開(kāi)頭,后跟0個(gè)或若干個(gè)字母再来、數(shù)字、下劃線字符搜变≌肼【variable=value】
count=1 注意=號(hào)兩邊不能有空格,linux中沒(méi)有數(shù)據(jù)類型的概念殖侵。 - 顯示變量的值【echo $vairable】$符合不能掉了
echo $count - 空值:如果一個(gè)變量沒(méi)有值镰烧,我們就說(shuō)它含有空值,這是變量沒(méi)有賦值時(shí)的默認(rèn)值茉唉。
- 文件名替換和變量:shell先做變量替換结执,后做文件名替換。
- $(variable)結(jié)構(gòu)
假定把一個(gè)文件名存于變量filename中献幔,要在文件名后加X(jué)
mv $filename ${filename}X 給文件名后加X(jué) - 內(nèi)部的整數(shù)算術(shù)運(yùn)算【$((espression))】
例如:echo $((a=a+1)) 應(yīng)為a沒(méi)有賦值斜姥,所以結(jié)果是1,等價(jià)于a=0+1表達(dá)式中可以隨意使用括號(hào)來(lái)強(qiáng)制分組铸敏,
例如:echo $((i=(i+10)j))如果不想用echo或其他的什么命令而想直接給變量賦值杈笔,可以把賦值移到算術(shù)擴(kuò)展前面
例如:i=$((i5))判斷表達(dá)式:result=$((i >= 0 && i<= 100)),為真是result=1,為假result=0蒙具。