Linux系統下shell指令碼語言學習手冊指南
Linux shell指令碼全面學習
1. Linux 指令碼編寫基礎
1.1 語法基本介紹
1.1.1 開頭
程式必須以下面的行開始(必須方在檔案的第一行):
#!/bin/sh
符號#!用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用/bin/sh來執行程式。
當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。
要使指令碼可執行:
編譯 chmod +x filename 這樣才能用./filename 來執行
1.1.2 註釋
在進行shell程式設計時,以#開頭的句子表示註釋,直到這一行的結束。我們真誠地建議您在程式中使用註釋。
如果您使用了註釋,那麼即使相當長的時間內沒有使用該指令碼,您也能在很短的時間內明白該指令碼的作用
及工作原理。
1.1.3 變數
在其他程式語言中您必須使用變數。在shell程式設計中,所有的變數都由字串組成,並且您不需要對變數
進行宣告。要賦值給一個變數,您可以這樣寫:
#!/bin/sh
#對變數賦值:
a="hello world"
# 現在列印變數a的內容:
echo "A is:"
echo $a
有時候變數名很容易與其他文字混淆,比如:
num=2
echo "this is the $numnd"
這並不會打印出"this is the 2nd",而僅僅列印"this is the ",因為shell會去搜索變數numnd的值,
但是這個變數時沒有值的。可以使用花括號來告訴shell我們要列印的是num變數:
num=2
echo "this is the ${num}nd"
這將列印: this is the 2nd
1.1.4 環境變數
由export關鍵字處理過的變數叫做環境變數。我們不對環境變數進行討論,因為通常情況下僅僅在登入
指令碼中使用環境變數。
1.1.5 Shell命令和流程控制
在shell指令碼中可以使用三類命令:
1)Unix 命令:
雖然在shell指令碼中可以使用任意的unix命令,但是還是由一些相對更常用的命令。這些命令通常是用來
進行檔案和文字操作的。
常用命令語法及功能
echo "some text": 將文字內容列印在螢幕上
ls: 檔案列表
wc –l filewc -w filewc -c file: 計算檔案行數計算檔案中的單詞數計算檔案中的字元數
cp sourcefile destfile: 檔案拷貝
mv oldname newname : 重新命名檔案或移動檔案
rm file: 刪除檔案
grep 'pattern' file: 在檔案內搜尋字串比如:grep 'searchstring' file.txt
cut -b colnum file: 指定欲顯示的檔案內容範圍,並將它們輸出到標準輸出裝置比如:輸出
每行第5個到第9個字元cut -b5-9 file.txt千萬不要和cat命令混淆,
這是兩個完全不同的命令
cat file.txt: 輸出檔案內容到標準輸出裝置(螢幕)上
file somefile: 得到檔案型別
read var: 提示使用者輸入,並將輸入賦值給變數
sort file.txt: 對file.txt檔案中的行進行排序
uniq: 刪除文字檔案中出現的行列比如: sort file.txt | uniq
expr: 進行數學運算Example: add 2 and 3expr 2 "+" 3
find: 搜尋檔案比如:根據檔名搜尋find . -name filename -print
tee: 將資料輸出到標準輸出裝置(螢幕) 和檔案比如:somecommand | tee outfile
basename file: 返回不包含路徑的檔名比如: basename /bin/tux將返回 tux
dirname file: 返回檔案所在路徑比如:dirname /bin/tux將返回 /bin
head file: 列印文字檔案開頭幾行
tail file : 列印文字檔案末尾幾行
sed: Sed是一個基本的查詢替換程式。可以從標準輸入(比如命令管道)讀入文字,並將
結果輸出到標準輸出(螢幕)。該命令採用正則表示式(見參考)進行搜尋。
不要和shell中的萬用字元相混淆。比如:將linuxfocus 替換為
LinuxFocus :cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file
awk: awk 用來從文字檔案中提取欄位。預設地,欄位分割符是空格,可以使用-F指定其他分割符。
cat file.txt | awk -F, '{print $1 "," $3 }'這裡我們使用,作為欄位分割符,同時列印
第一個和第三個欄位。如果該檔案內容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA
命令輸出結果為:Adam Bor, IndiaKerry Miller, USA
2) 概念: 管道, 重定向和 backtick
這些不是系統命令,但是他們真的很重要。
管道 (|) 將一個命令的輸出作為另外一個命令的輸入。
grep "hello" file.txt | wc -l
在file.txt中搜索包含有”hello”的行並計算其行數。
在這裡grep命令的輸出作為wc命令的輸入。當然您可以使用多個命令。
重定向:將命令的結果輸出到檔案,而不是標準輸出(螢幕)。
> 寫入檔案並覆蓋舊檔案
>> 加到檔案的尾部,保留舊檔案內容。
反短斜線
使用反短斜線可以將一個命令的輸出作為另外一個命令的一個命令列引數。
命令:
find . -mtime -1 -type f -print
用來查詢過去24小時(-mtime –2則表示過去48小時)內修改過的檔案。如果您
想將所有查詢到的檔案打一個包,則可以使用以下指令碼:
相關推薦
Linux系統下shell指令碼語言學習手冊指南
Linux shell指令碼全面學習 1. Linux 指令碼編寫基礎 1.1 語法基本介紹 1.1.1 開頭 程式必須以下面的行開始(必須方在檔案的第一行): #!/bin/sh 符號#!用來告訴系統它後面的引數是用來執行該檔案的程
Linux系統監控shell指令碼
開源專案 #! /bin/bash # unset any variable which system may be using unset tecreset os architecture kernelrelease internalip external
8個非常實用的Linux系統監控shell指令碼
在伺服器運維過程中,經常需要對伺服器的各種資源進行監控,例如:CPU的負載監控,磁碟的使用率監控,程序數目監控等等,以在系統出現異常時及時報警,通知系統管理員。本文介紹在Linux系統下幾種常見的監控需求及其shell指令碼的編寫。 文章目錄: 1.Linux使用 S
Linux系統下搭建go語言eclipse開發環境
最近想研究一下go語言,於是就嘗試著搭建一下環境。 準備工作: 一臺五年前流行的膝上型電腦:xp,win7都跑不動了,從我同學那裡淘來的。 linux作業系統:CentOs,別問我為什麼不是ubuntu,鳥哥的私房菜裡只教了CentOs的安裝。 一根網線:我很菜,沒找到Ce
Linux專題:shell指令碼語言
shell互動介面為人和作業系統、uboot之間的人機互動提供了操作介面,可以通過shell介面來向作業系統或uboot等軟體程式傳送命令,使其按照命令列事。 shell互動介面可以通過shell指令碼語言來實現,linux中常用的指令碼語言是sh和bash。指令碼語言是解
Linux系統下Shell條件語句之組合測試表達式
首先,我來幫大家回憶下Shell的測試表達式型別1.整數測試表達式[ TYPE [option] TYPE ]其中option有以下幾種選項: -eq : 判斷相等 -ne :不等 -gt :大於 -lt :小於 -ge :大於等於 -lt
Linux系統下除錯 C語言程式(使用gdb)
問題描述:Linux 系統下用C語言寫 的指令碼程式,程式執行時出現未知錯誤需要除錯找出問題所在地。(阿里雲Ubuntu系統的伺服器)。 解決方法:使用 gdb工具在終端視窗中除錯 C檔案。 具體方法: (1)安裝 gdb sudo apt-get install
Linux系統下編寫shell指令碼傳入引數列印系統當前執行緒數到指定檔案
最近在做效能測試,要檢視系統執行過程中執行緒數,很簡單輸入命令:netstat -anp |grep java |wc -l,可以查詢。但是如何在執行過程定時列印系統執行緒數且將結果輸出到指定檔案呢?也很簡單我們直接寫一個shell指令碼執行下就可以了。以
Linux系統下用shell指令碼病毒感染其它linux指令碼程式
1.前言 這篇文章算是通過學習網上其它幾篇關於shell指令碼病毒文章後自己寫的學習心得,通過寫這篇文章讓自己能夠加深理解一下相關知識。但是其實下面用到的shell指令碼病毒的現實意義不大,但是對於理解病毒傳播的機制有一定的作用,僅作為參考而已。 2.指
linux 系統下安裝shell指令碼安裝JDK
1.先將jdk放在安裝目錄下,建立一個新的資料夾 ,放在java下面(usr/java) 1) 假如你沒有jdk wget命令下載的檔案會在當前目錄下,所以如果在下載前最好先 cd 到想把JDK安裝的位置,如果沒有, 可以先建立相應目錄
Linux系統下C語言如何調用scalapack中的函數
lap inux *** col ocs ack cnblogs scala nal 在並行計算中經常需要調用scalapck(並行化的lapack)函數庫裏面的函數進行編程,這裏簡單介紹在C語言如何調用scalapck中的矩陣向量乘的函數。 註意:scalapack中的函
Linux系統下防火墻學習
我們 加載 基礎 信息 linu request 9.png 內核 目標 1、防火墻淺解iptables最大的優點是可以配置有狀態的防火墻,帶有連接跟蹤的防火墻就稱為帶有狀態機制的防火墻,相比非狀態防火墻而言更安全,因為可以編寫更縝密的安全過濾策略。有狀態的防火墻能夠指定並
Linux系統下python程式碼執行shell命令的方法
方法一:os.popen #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 使用 mkdir 命令 a = 'ls' b = os.popen(a,'w',1) print b 方法二:os.system #!/
Linux 下 expect 指令碼語言中互動處理常用命令
Linux 下 expect 指令碼語言中互動處理常用命令 Linux 下 expect 指令碼語言中互動處理常用命令 1. #!/usr/bin/expect 告訴作業系統腳本里的程式碼使用那一個 shell 來執行。這裡的 expect 其實和 Linux 下的 bash、win
Linux系統下python學習筆記——python基礎學習準備
第一個hello world程式 基本環境:Linux系統,Vim程式碼編輯器 1、使用Vim程式碼編輯器編輯程式print("hello world!") 注意:1、前面不要加空格。 2、習慣性問題:括號和分號要成對寫(不容易出錯或
Linux系統下python學習筆記——vim程式碼編輯器
Vim程式碼編輯器 一、Vim簡介 vi是"Visual Interface"的簡稱。它在Linux上的地位就彷彿Edit程式在DOS上一樣。它可以執行輸出、刪除、查詢、替換、塊操作等眾多文字操作,而且使用者可以根據自己的
Linux系統下python學習筆記——Linux系統其他命令
Linux系統其他命令 一、查詢檔案 find 通常用來在特定目錄下搜尋符合條件的檔案 find [路徑] -name "*.py" 查詢指定路徑下副檔名是.py的檔案,包括子目錄(*為萬用字元) 如果省略路徑,表示在當前資料夾下查
Linux系統下python學習筆記——Linux系統資訊相關命令
系統資訊相關命令 目的:主要是為了方便通過遠端終端維護伺服器時,檢視伺服器上當前的 系統日期 和 時間/磁碟空間佔用情況/ 程式執行情況。基本都是查詢命令,通過這些命令可以對系統資源的使用情況有個瞭解。 1、時間和日期 date&nbs
Linux系統下python學習筆記——Linux系統使用者許可權命令
1、基本概念 使用者是Linux系統工作中重要的一環,使用者管理包括使用者與組管理。在Linux系統中,不論是由本機或是遠端登入系統,每個系統都必須擁有一個賬號,並且對於不同的系統資源擁有不同的使用許可權。在Linux中,可以指定每一個使用者針對不同的檔案或者目錄的不同許可權。 對檔案/目錄
Linux系統下python學習筆記——Linux系統遠端管理命令
Linux系統遠端管理常用命令 一、關機/重啟shutdown 格式:shutdown 選項 時間 選項:-r :重新啟動 時間:now(立刻關閉) 22:45 +10(十分鐘之後執行 ) 不指定選項和引數,預設一分鐘之後關閉電腦 遠端維護伺服器時,