歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux實習筆記之(Vi與Shell編程)

Linux實習筆記之(Vi與Shell編程)

日期:2017/2/28 15:56:37   编辑:SHELL編程
說到Linux必然會提到文本編輯工具Vim和腳本語言Shell,阿裡的團隊對於你用什麼寫代碼是無要求的,這些都是自選,但是對著測試機那個純文本的操作界面實在蛋疼不已。對圖形界面的依賴還是早日切斷為好,我曾經幻想著可以用Eclipse寫就不需要VI了。。結果還是不得不面對這樣的宿命啊。程序員的命,即使不裝酷也為了生計,去學習吧! 特別對於腳本,其實很多人會說Python,但Shell畢竟是Linux原生態的,不會Shell怎麼能說會Linux呢?我的老大說的。
Vi : 三種模式:命令,編輯,一般模式
在一般模式下輸入 i, o ,a 或者Insert鍵 就可用進入編輯模式 編輯模式下按ESC就回到一般模式
命令模式下輸入q退出,w保存, 加 ! 強制執行 U回退操作,ctrl+R 撤銷回退
概念:用戶,群組,權限 權限(0 RWX RWX RWX) 分別表示文件類型,所有者權限,所在群組權限,用戶權限
Vi替換和查找
[Ctrl] + [f] 屏幕『向前』移動一頁(常用) [Ctrl] + [b] 屏幕『向後』移動一頁(常用) :n1,n2s/word1/word2/g 在第 n1 與 n2 行之間尋找 word1 這個字符串,並將該字符串取代為 word2 !(常用) :1,$s/word1/word2/g 從第一行到最後一行尋找 word1 字符串,並將該字符串取代為 word2 !(常用) :1,$s/word1/word2/gc 從第一行到最後一行尋找 word1 字符串,並將該字符串取代為 word2 !且在取代前顯示提示字符給使用者確認(conform)是否需要取代!(常用) u 復原前一個動作。(常用) yy 復制游標所在的那一行(常用) nyy 復制光標所在的向下 n 列,例如 20yy 則是復制 20 列(常用) p, P p 為復制的數據在光標下一行貼上,P 則為貼在游標上一行!(常用) 與復制結合使用 dd 刪除游標所在的那一整列(常用) ndd 刪除光標所在的向下 n 列,例如 20dd 則是刪除 20 列(常用)

Shell優點: 命令編修 檔案及補全(文件名與命令補全使用Tab)多按Tab是個好習慣 命令別名 Alias lm='ls -al'
重定向(這個概念很重要,有時候編程語言一堆語句完成的事情在腳本裡就是一個> < 或者>> <<....) 標准輸入;代碼為 0 ;或稱為 stdin ;使用的方式為 < 標准輸出:代碼為 1 ;或稱為 stdout;使用的方式為 1> 錯誤輸出:代碼為 2 ;或稱為 stderr;使用的方式為 2>
kill -l 1234 > /dev/log 2 > &1 前一部分是將執行進程終止的顯示結果輸出到/dev/log文件中,2>&1意思是將執行錯誤信息也輸出到/dev/log即標准錯誤與標准輸出位置一樣(此處可不同 2 > /dev/error )
管道命令(就像水管一樣,一個命令的輸入當成另一個的輸出,在文本處理上十分神奇) 通過|連接命令執行的結果 例子:ps|sort > a.txt
Shell腳本編寫: Vi編輯 ,開頭要有#!/bin/sh 即執行腳本的位置 然後保存,chmod +x **.sh 添加可執行權限 然後執行 ./**.sh
help test|less 可以查看Shell判斷語句test或者說是[ ]提供的基本功能,包括文件判斷字符判斷數值判斷等。 例子,輸出當前路徑下所有文件夾(加[[...]]僅僅是習慣問題,一個也可以)

#!/bin/sh
for file in *
do
if [[ -d $file ]]
then
echo $file
fi
done

通過declare -i a=4 可將變量a申明為整形

在SHell腳本中 $0 $1 $2....0表示該腳本的名稱 1,2,3 ...N 分別表示第幾個參數

$?表示上一條Shell語句執行完成的狀態碼,用於檢驗執行情況,只有返回0是正確的,其余為各種錯誤。

執行語句並查看返回結果例子,查看系統的某些端口是否在活動:

#!/bin/sh
cmd='netstat -an |grep :80'
if [[ $cmd != "" ]]
then
echo "Running"
else
echo "Stop"
fi

調試Shell腳本的語句

sh [-nvx] scripts
-n :不要執行 scripts ,查詢 scripts 內的語法,若有錯誤則予以列出!
-v :在執行 scripts 之前,先將 scripts 的內容顯示在屏幕上;
-x :將有使用到的 scripts 內容顯示在屏幕上,與 -v 稍微不同!

Copyright © Linux教程網 All Rights Reserved