標籤:character 程式 option 項目 開發 shell指令碼
1、查看當前系統誰在登入:who
2、數出當前系統的登入使用者:who | wc -l(l-->line,w-->word,c-->character)
3、小型shell指令碼開發週期:$cat > nusere 建立檔案,使用cat複製終端的輸入
who | wc -l 輸入程式內容
^ D Ctrl+D表示end-of-file
$chmod +x nusere 給此檔案添加執行的許可權
$./nusere 執行指令碼,輸出結果,或者/bin/sh nusere
4、#!:填寫指令碼執行路徑,shell指令碼通常第一行縮寫內容為 #! /bin/sh
5、命令與參數
(1)cd /work ; ls -l abc
(2)命令名稱是命令列的第一個項目,通常後面會跟著選項(option),任意額外的參數都會放在選項
之後
(3)選項的開頭是破折號,後面跟著一個字母,選項可有可無,有的可能需要加上,有的則可以合并
ls -l nusere,ls -lt nusere
(4)長選項使用
cd abc.c
patch --verbose --backup -p1 < /temp/abc.c (I/O重新導向,該指令從檔案中讀取資料,
而不是從鍵盤輸入)
(5)分號(;)用來分隔同一行裡面的多條命令;&符號標誌shell將在後台執行其前面的命令,這意味
著shell不用等該命令執行完,就可以執行下一條命令
(6)shell識別的三種基本命令:內建命令、shell函數、以及外部命令
內建命令:就是shell本身所執行的命令
shell函數:shell函數是功能健全的一系列程式碼,以shell語言寫成,可以像命令那樣引用
外部命令:外部命令是由shell的副本所執行的命令
a:建立一個新的進程,此進程即為shell的一個副本
b:在新的進程裡,在PATH變數所列出的目錄中,尋找特定的命令
c:在新的進程裡,以所找到的新程式取代執行中的shell程式並執行
d:程式完成後,最初的shell會從終端讀取下一條命令,或者執行指令碼裡的下一條命令
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6D/80/wKiom1VlbfnicaCmAAD_ptIdjKY174.jpg" title="程式執行.jpg" alt="wKiom1VlbfnicaCmAAD_ptIdjKY174.jpg" /> (7)變數:就是為某個資訊的片段所起的名字
a:格式是字幕或者底線開頭,後面可接任意長度的字母、底線、數字
b:變數名稱長度不限制,變數賦值長度不限制
c:書寫過程中不能出現空格
d:單行可進行多次賦值:firstname=sda lastname=rew name=fjdskfjdksa
變數值包含空格時可以使用引號:fullname="fdsa hgf kjh"
變數二次引用不用雙引號:oldname=$fullname
(8)簡單的echo輸出
(9)華麗的printf輸出
printf "the first programalwaysprints ‘%s,%s‘" HELLO WORLD
-->the first programalwaysprints ‘HELLO,WORLD‘
(10)基本的I/O重新導向:標準輸入、標準輸出、標準錯誤輸出
I/O重新導向就是你通過與終端互動,或是在shell指令碼裡設定。重新安排從哪裡輸入或者輸出到
哪裡
(11)重新導向與管道
a:以>改變標準輸入 program < file 將輸入改為file
b:以>改變標準輸出 program > file 將輸出改為file
>:重新導向符在目標檔案不存在時新加檔案,如果目標檔案已存在,則會覆蓋,原本檔案數
據丟失
c:以>>附加到檔案 program >> file 將標準輸出內容附加到file的結尾處
d:管道"|",program1 | program2 將program1的標準輸出作為program2的標準輸入
可把兩個以上的程式銜接在一起,也大大的提高了執行的速度
eg:tr -d ‘\r‘ < dos-file.txt | sort > UNIX-file.txt 先刪除檔案中的斷行符號,在排
序,最後輸出到檔案中
(12)特殊檔案/dev/null與/dev/tty 46
本文出自 “tabsang成長曆程” 部落格,請務必保留此出處http://tabsang.blog.51cto.com/6647507/1655691
shell指令碼入門