前言:本文不僅僅是介紹經常使用的命令,還融入了bash語法,每一個知識點都有淺顯的例子配合,讓你很容易消化並吸取,最後還有一個boss任務等你挑戰,耐心學完的同窗確定會有很大的收穫的。你們以爲有用的話,star一下,而後能夠隨意分享給須要的人,重點是加顆星星哦,加顆星星哦,加顆星星哦。html
下面這張摘自鳥哥的圖能夠很好的說明linux
展現所有的環境變量,若是你想獲取某個特殊的變量,用 echo $變量名
git
展現用戶命令,系統調用、庫函數等github
搜索可執行文件、源文件正則表達式
在環境變量中搜索可執行文件,並打印完整路徑shell
清空屏幕數組
在屏幕上顯示文本文件bash
能夠改變文件和目錄的讀、寫、執行權限
linux 中的用戶、組、文件網絡
複製文件ssh
比較文件,我在上面複製的文件中加了一行diff
查找文件,能夠經過正則來查
查看文件前10行
顯示全部文件,-l
顯示長格式化 -a
顯示包括隱藏文件
移動文件,同時也能夠重命名文件
刪除文件,-r
刪除目錄 -f
強制刪除
建立新文件
很是有用的一個文本處理命令,逐行運行,默認使用空格分割,-F
表示分割的樣式
匹配正則表達式的文本行,並輸出,-E
正則模糊匹配 -F
精確字母匹配 -w
精確單詞匹配
正則替換
排序
統計文本行數,單詞數,字符數
進入目錄
建立目錄
當前目錄的路徑
月曆
當前日期和時間
磁盤使用狀況
文件或目錄使用狀況
列出你的進程
遠程鏈接
列出固然活動進程
test是關鍵字,表示判斷;EXPRESSION是被判斷的語句。
echo $?
輸出判斷結果,0表示成功,其餘表示失敗。
中括號的左右擴弧和EXPRESSION之間都必須有空格!
文件類型判斷
字符串和數字判斷
例子1:判斷文件README.md是否是文件
#!/bin/bash if [ -f ../README.md ];then echo 'file exist' else echo 'file not exist' fi exit 0
例子2:提示用戶輸入值,若是大於0輸出’正數’,小於0輸出’負數‘,等於0輸出’零‘
#!/bin/bash # 提示用戶輸入一個值 echo -n "請輸入一個數字:" # 保存用戶輸入的值到num中 read num if [ "$num" -gt 0 ];then echo '正數' elif [ "$num" -lt 0 ];then echo '負數' else echo '零' fi exit 0
例子:提示用戶輸入Y/y或N/n。若輸入Y/y,則輸出「咱們約起來吧」;若輸入N/n,則輸出「不約,再見」;不然,「輸入有誤」
#!/bin/bash echo -n "你單身嗎?(y/n)" read val case $val in Y|y) echo "咱們約起來吧" ;; N|n) echo "不約,再見" ;; *) echo "輸入有誤" ;; esac exit 0
例子1:輸出當前文件夾的一級子目錄中文件名字
#!/bin/bash # 將ls的結果保存到變量CUR_DIR中 CUR_DIR=`ls` # 顯示ls的結果 echo $CUR_DIR for val in $CUR_DIR do if [ -f $val ];then echo "FILE: $val" fi done exit 0
例子2:輸出1-10之間數字的總和
#!/bin/bash sum=0 for ((i=1;i<10;i++)) do ((sum=$sum+$i)) done echo "sum=$sum" exit 0
例子:從0開始逐步遞增,當數值等於5時,中止遞增
#!/bin/bash val=0 while [ "$val" -lt 5 ] do echo "val=$val" ((val++)) done exit 0
break命令容許跳出循環
continue命令相似於 break命令,只有一點重要差異,它不會跳出循環,只是跳過這個循環步。
例子1:[break應用]從0開始逐步遞增,當數值等於5時,中止遞增。
#!/bin/bash # 設置起始值爲0 val=0 while true do if [ "$val" -eq "5" ];then # 若是val=5,則跳出循環 break; else # 輸出數值 echo "val=$val" # 將數值加1 ((val++)) fi done exit 0
例子2:[continue應用]從0開始逐步遞增到10:當數值爲5時,將數值遞增2;不然,輸出數值
#!/bin/bash # 設置起始值爲0 val=0 while [ "$val" -le "10" ] do if [ "$val" -eq "5" ];then # 若是val=5,則將數值加2 ((val=$val+2)) continue; else # 輸出數值 echo "val=$val" # 將數值加1 ((val++)) fi done exit 0
一對括號表示是數組,數組元素用「空格」符號分割開。引用數組時從序號0開始。
array[0]=10 array[1]=20 array[2]=30 array[3]=40 array[4]=50
#!/bin/bash array=(10 20 30 40 50) # 顯示數組中全部元素 echo '顯示數組中全部元素' echo ${array[*]} echo ${array[@]} # 顯示數組第2項 echo '顯示數組第2項' echo ${array[1]} # 顯示數組長度 echo '顯示數組長度' echo ${#array[@]} # 輸出數組的第1-3項 echo '輸出數組的第1-3項' echo ${array[@]:0:3} # 將數組中的0替換成1 echo '將數組中的0替換成1' echo ${array[@]/0/1} # 刪除數組第2項元素 # 說明: # unset僅僅只清除array[1]的值,並無將array[1]刪除掉 echo '刪除數組第2項元素' unset array[1] echo ${array[@]} exit 0
#!/bin/bash # 編輯一個函數foo:打印foo的輸入參數的總數,並輸入每一個參數和參數對應的序號。 function foo() { # 定義局部變量i local i=0 # 定義局部變量total=傳入foo的參數總數 local total=$# # 輸出參數總數 echo "total param =$total" # 輸出傳入foo的每個參數 for val in $@ do ((i++)) echo "$i -- val=$val" done # 返回參數總數 return $total } foo foo param1 param2 param3 # 輸出foo param1 param2 param3的返回值 echo "return value=$?" exit 0
數值元算主要有4種實現方式:(())、let、expr、bc。 工做效率:(()) == let > expr > bc** (())和let是bash內建命令,執行效率高;而expr和bc是系統命令,會消耗內存,執行效率低。 (())、let和expr只支持整數運算,不支持浮點運算;而bc支持浮點運算。
數值運算
實例1:用4中方式實現3*(5+2)
#!/bin/bash # (()) val1=$((3*(5+2))) echo "val1=$val1" # let let "val2=3*(5+2)" echo "val2=$val2" # expr val3=`expr 3 \* \(5+2\)` echo "val3=$val3" # bc val4=`echo "3*(5+2)"|bc` echo "val4=$val4" exit 0
實例3:5/3浮點運算,保留3位小數
#!/bin/bash # bc 實現5/3浮點運算,保留3位小數 val5=`echo "scale=3; 5/3"|bc` echo "val5=$val5" exit 0
#!/bin/bash str='hello world' # 顯示字符串 echo '顯示字符串' echo ${str} # 顯示字符串長度 echo '顯示字符串長度' echo ${#str} # 提取world echo '提取world' echo ${str:6} # 提取or echo '提取or' echo ${str:7:2} # 刪除hello echo '刪除hello' echo ${str#hello} # 刪除world echo '刪除world' echo ${str%world} # 將全部的字符l替換爲m echo '將全部的字符l替換爲m' echo ${str//l/m} exit 0
選項與參數: -n: 不要執行 script,僅查詢語法的問題; -v: 再執行 sccript 前,先將 scripts 的內容輸出到屏幕上; -x: 將使用到的 script 內容顯示到屏幕上,這是頗有用的參數!
例子:想要執行bash腳本,並查看bash的調用流程,能夠經過如下命令:
bash -x test.sh
選項與參數: -n: 輸出內容以後,不換行。默認是輸入內容以後,換行。 -e: 開啓反斜線「\」轉義功能 -E: 開啓反斜線「\」轉義功能(默認)。
例子:輸出please input a number:以後不換行
echo -n "please input a number:"
在屏幕上顯示出指定的字串
從標準輸入設備讀入一行,分解成若干字,賦值給bash程序內部定義的變量
別名,alias l='ls -al'
export能夠把bash的變量向下帶入子bash(即子bash中可使用父bash的變量),從而讓子進程繼承父進程中的環境變量。但子bash不能用export把它的變量向上帶入父bash。
當bash執行到exec語句時,不會去建立新的子進程,而是轉去執行指定的命令,當指定的命令執行完時,該進程(也就是最初的bash)就終止了,因此bash程序中exec後面的語句將再也不被執行。
使bash讀入指定的bash程序文件並依次執行文件中的全部語句。
退出Shell程序,在exit以後可有選擇地指定一個數位做爲返回狀態。
後語:你們以爲有用的話,star一下,而後能夠隨意分享給須要的人,重點是加顆星星哦,加顆星星哦,加顆星星哦。