標籤:blog http ar os 使用 sp for java on
一. Linux基本命令
1.1. cp命令
該命令的功能是將給出的檔案或目錄拷貝到另一檔案或目錄中,功能十分強大。
文法: cp [選項] 源檔案或目錄 目標檔案或目錄
1.2. mv命令
使用者可以使用mv命令來為檔案或目錄改名或將檔案由一個目錄移入另一個目錄中。
文法:mv [選項] 源檔案或目錄 目標檔案或目錄
1.3. rm命令
使用者可以用rm命令刪除不需要的檔案或者目錄。
文法:rm [選項] 檔案
如果沒有使用- r選項,則rm不會刪除目錄。
1.4. mkdir和rmdir
文法:mkdir [選項] dir-name
文法:rmdir [選項] dir-name
1.5. cd 命令
功能:改變工作目錄。
文法:cd [directory]
1.6. ls 命令
ls是英文單詞list的簡寫,其功能為列出目錄的內容。該命令類似於DOS下的dir命令。
文法:ls [選項] [目錄或是檔案]
1.7. su命令
這個命令非常重要。它可以讓一個普通使用者擁有超級使用者或其他使用者的許可權,也可以讓超級使用者以普通使用者的身份做一些事情。普通使用者使用這個命令時必須有超級使用者或其他使用者的口令。
?該命令的一般形式為: su [選項] [使用者帳號]
1.8. ps命令
顯示系統中執行的程式。
文法:ps [選項]
1.9. kill命令
刪除執行中的程式
文法:kill [選項] PID
1.10. grep命令
搜尋輸出的特定文字
文法:grep 字串
例:
ps aux | grep matlab
kill PID
1.11. echo命令
echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。
該命令的一般格式為: echo [ -n ] 字串
1.12. clear命令
clear命令的功能是清除螢幕上的資訊,它類似於DOS中的 cls命令。清屏後,提示符移動到螢幕左上方。
二. Shell的基本知識
2.1. shell提示符及其環境
提示符:$
環境:Linux,Unix,Dos等等
? Shell其實就是一個解釋執行命令的程式,所謂shell編程其實就是用一定的文法將各種基本的命令組合起來,讓shell程式去解釋執行。
同傳統的程式設計語言一樣,shell提供了很多特性,這些特性可以使你的shell script編程更為有用,如:資料變數、參數傳遞、判斷、流程式控制制、資料輸入和輸出,子程式及以中斷處理等。
2.2 如何執行shell程式
Shell程式(***.sh)
? 執行這個命令時
(1) #./***.sh
(2) #chmod u+x ***.sh
#***.sh
(3) #sh ***.sh
2.3 常量
? 字串,例如“Hello World!”。
? 數字,例如705,23。
2.4 變數
shell編程中它們是沒有類型的,簡稱弱類型程式設計語言,在這個變數中可以保含一個數字,一個字串,一個單詞等。你並不需要聲明這個變數,它會在引用這個變數時建立它。
STR="Hello World!"
echo $STR
HOME="/home" //注意賦值不要有空格
a=123
HOME_LIST=$(ls /home) //把命令的執行結果賦值給變數
ehco $HOME //$ 符號是獲得變數HOME的值
a=a+1
系統變數:
$0 這個程式的執行名字
$n 這個程式的第n個參數值,n=1...9
$* 這個程式的所有參數
$# 這個程式的參數個數
$$ 這個程式的PID
$! 執行上一個背景指令的PID
$? 上一個指令的傳回值
2.5 局部變數
局部變數一般是指寫在函數中的變數,他的生命力是有限的。局部變數比較好理解,這裡就不再多介紹了。
2.6 從鍵盤輸入變數值
使用read命令
read var1 var2 … varn
2.7 注釋
?Shell編程中的注釋以#開頭
2.8 數字運算
主要是指整數運算。expr命令可以將字元型變數轉換為整數進行操作
文法:expr integer operator integer
其中operator為+ - * / %, 但對*的使用要用轉義符/,如:
[[email protected] ~]$ more dvd.sh
#!/bin/bash
expr 5 /* 5
[[email protected] ~]$ sh dvd.sh
25
2.9 邏輯運算
test進行邏輯運算,用[ ]括起來就是test運算
int1 -eq int2 相等?
int1 -ne int2 不等?
int1 -gt int2 int1 > int2 ?
int1 -ge int2 int1 >= int2 ?
int1 -lt int2 int1 < int2 ?
int1 -le int2 int1 <= int2
2.10 雙引號及單引號
?$echo "$HOME $PATH" -- 顯示變數值
/home/hbwork opt/kde/bin:/usr/local/bin:
$echo ‘$HOME $PATH‘ -- 顯示單引號裡的內容
$HOME $PATH
2.11 空格
由於shell對命令中的多餘的空格不作任何處理 ,而用引號括起來則可以防止shell去掉這些空格。
$ str1=abcd
$ str2="abcd "
2.12 分支結構
2.12.1 結構一
if [ variable = value ]
then
command
else
if [ variable = value ]
then
command
else
command
fi
2.12.2 結構二
if [ variable = value ]
then
command
elif [ variable = value ]
then
command
fi
if 語句樣本:
if [ "22" -lt "33" ] then //注意空格
echo "22 less than 33"
else
echo "no"
fi //if語句的結束
2.13 Case語句
case value in
pattern1)
command;;
pattern2)
command;;
...
patternn)
command;
esac
case 樣本:
echo "enter a number"
read ans //讀取一個變數read
case $ans in
1)
echo "you numer is $ans"
;; //注意符號是兩個 ;
2)
echo "you number is 2"
;;
[3-9])
echo "you number is $ans"
;;
*) //*萬用字元
echo "others"
esac
2.14 And 和 Or
command1 && command2
? command1 || command2
2.15 迴圈語句
2.15.1 For迴圈
for var in arg1 arg2 ... argn
do
command
....
command
done
For迴圈樣本
int=1
for $int in 1 2 3 4 5
do
sq=`expr $int /* $int`
echo $sq
int=`expr $int + 1`
done
2.15.2 while迴圈
while command
do
command
command
command
...
Done
While迴圈的樣本
int=1
while [ $int -le 5 ]
do
sq=`expr $int /* $int`
echo $sq
int=`expr $int + 1`
done
2.15.3 until迴圈結構
until command
do
command
command
....
command
done
Until迴圈樣本
? int=1
until [ $int -gt 5 ]
do
sq=`expr $int /* $int`
echo $sq
int=`expr $int + 1`
done
2.16 從迴圈中退出: break和continue命令
break 立即退出迴圈
continue 忽略本迴圈中的其他命令,繼續下一下迴圈
2.17 函數 (子過程)
funcname()
{
command
...
command; #分號
}
函數樣本
setup ()
{ command list ; }
do_data ()
{ command list ; }
setup
do_data
2.18 shell程式的調試
? 使用-x進行跟蹤執行,執行並顯示每一條指令。
2.19 比較子
2.19.1 檔案比較子
-e filename 如果 filename 存在,則為真 [ -e /var/log/syslog ]
-d filename 如果 filename 為目錄,則為真 [ -d /tmp/mydir ]
-f filename 如果 filename 為常規檔案,則為真 [ -f /usr/bin/grep ]
-L filename 如果 filename 為符號連結,則為真 [ -L /usr/bin/grep ]
-r filename 如果 filename 可讀,則為真 [ -r /var/log/syslog ]
-w filename 如果 filename 可寫,則為真 [ -w /var/mytmp.txt ]
-x filename 如果 filename 可執行,則為真 [ -L /usr/bin/grep ]
filename1 -nt filename2 如果 filename1 比 filename2 新,則為真 [ /tmp/install/etc/services -nt /etc/services ]
filename1 -ot filename2 如果 filename1 比 filename2 舊,則為真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
2.19.2 字串比較運算子 (請注意引號的使用,這是防止空格擾亂代碼的好方法)
-z string 如果 string 長度為零,則為真 [ -z "$myvar" ]
-n string 如果 string 長度非零,則為真 [ -n "$myvar" ]
string1 = string2 如果 string1 與 string2 相同,則為真 [ "$myvar" = "one two three" ]
string1 != string2 如果 string1 與 string2 不同,則為真 [ "$myvar" != "one two three" ]
2.19.3 算術比較子
num1 -eq num2 等於 [ 3 -eq $mynum ]
num1 -ne num2 不等於 [ 3 -ne $mynum ]
num1 -lt num2 小於 [ 3 -lt $mynum ]
num1 -le num2 小於或等於 [ 3 -le $mynum ]
num1 -gt num2 大於 [ 3 -gt $mynum ]
num1 -ge num2 大於或等於 [ 3 -ge $mynum ]
三. Shell 的一些注意事項
3.1. 基礎
#!/bin/bash //bash指令碼第一句都是這個,他會讓系統指定以bash來解釋這個指令碼
# //shell指令碼注釋符號
3.2. 變數
變數賦值的時候"="兩邊的內容要緊靠"="
例如:sum=0,寫java寫的時間長了總喜歡寫成sum = 0,但是這樣的結果是編輯器不識別
3.3. 在使用if、while時,在注意變數與符號之間的分割
例如:if [ `expr $a % 3` -ne 0 ],while [ "$var" != "end" ],盡量分開寫,這樣也挺好看也便於識別。
3.4. let的意思是讓"="後面的內容做算術運算,例如:let x=a-b
3.5. 大多數情況下,可以使用測試命令來對條件進行測試,比如可以比較字串、判斷檔案是否存在及是否可讀等等……通常用" [ ] "來表示條件測試,注意這裡的空格很重要,要確保方括弧前後的空格。
[ -f "somefile" ] :判斷是否是一個檔案
[ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行許可權
[ -n "$var" ] :判斷$var變數是否有值
[ "$a" = "$b" ] :判斷$a和$b是否相等
3.6 幾個簡單例子
for filename in $(ls)
do
cat $filename
done
for((i=0; i<10; i++))
do
echo $i
done
x=1
sum=0
while [ $x -le 10 ] //注意[ ] 兩邊的空格
do
let sum=sum+$x //shell中算術計算使用let
let x=x+1
done
echo $sum
來自 http://blog.csdn.net/tianlesoftware/article/details/5953577
Shell 基本文法