一、基礎命令
在LinuxShell的世界中,基礎命令是我們必須要學會的,例如常見的ls、mkdir、cd、cp、mv、rm、touch、echo等命令。
1、ls命令:
ls -l
在不加參數的情況下,ls命令為我們展示了當前目錄的文件列表,而加上-l參數將為我們提供更為詳細的信息,例如文件的許可權、所有者、文件大小、創建時間等。
2、mkdir命令:
mkdir test_dir
該命令用於在當前目錄下創建一個名為test_dir的目錄。
3、cd命令:
cd test_dir
該命令將進入當前目錄下的test_dir目錄。
4、cp命令:
cp test.txt test_dir/
該命令將test.txt文件複製到test_dir目錄下。
5、mv命令:
mv test.txt test_dir/
該命令將test.txt文件移動到test_dir目錄下。
6、rm命令:
rm test.txt
該命令將刪除當前目錄下的test.txt文件。
7、touch命令:
touch test.txt
該命令用於創建一個名為test.txt的新文件。
8、echo命令:
echo "Hello World"
該命令將在終端中輸出Hello World字元串。
二、Shell腳本
在了解基礎命令之後,我們就可以開始編寫Shell腳本了。Shell腳本是一種在LinuxShell環境中運行的腳本程序,常用於編寫自動執行任務、批量操作文件等自動化處理任務。
1、創建一個簡單的Shell腳本:
#!/bin/bash echo "Hello World"
該腳本包含了一個echo命令,作用是輸出Hello World字元串。
2、運行Shell腳本:
chmod +x test.sh ./test.sh
我們需要先將腳本文件test.sh賦予執行許可權,然後通過./命令運行該腳本。
三、正則表達式
正則表達式是一種靈活的字元串匹配模式,LinuxShell中許多命令都支持正則表達式。
1、使用grep命令過濾文本:
grep 'hello' file.txt
該命令將在文件file.txt中查找包含hello字元串的行,並將其列印到終端中。
2、使用sed命令編輯文件:
sed 's/old/new/g' file.txt
該命令將在文件file.txt中查找old字元串,並將其替換為new字元串,所有匹配的字元串都會被替換。
四、Shell變數
Shell變數是我們在腳本中用於存儲值的標識符,它可以是數字、文本或其他任何類型的數據。我們可以通過Shell腳本中定義的變數來進行不同的操作。
1、定義一個Shell變數:
name="Tom" echo $name
該腳本定義了一個名為name的變數,並將其值設置為Tom,在終端中運行該腳本後,將輸出Tom。
2、使用環境變數:
echo $HOME
使用$HOME環境變數,將輸出當前用戶的home目錄路徑。
3、使用特殊變數:
echo $0
使用$0特殊變數,將輸出當前腳本的名稱。
4、Shell數組:
names=("Tom" "Jerry" "Mike") echo ${names[1]}
該腳本定義了一個名為names的數組,並將其值初始化為Tom、Jerry、Mike三個數據,然後通過${names[1]}命令輸出該數組的第二個元素Jerry。
五、Shell函數
Shell函數是一段可重複使用的代碼,當需要執行某些操作時,我們可以通過調用函數的方式來完成這些操作。
1、定義一個Shell函數:
#!/bin/bash # 定義函數 function sayHello(){ echo "Hello World" } # 調用函數 sayHello
該腳本定義了一個名為sayHello的函數,並在函數中定義了echo命令,用於輸出Hello World字元串。在腳本的最後,我們調用了該函數,將在終端中輸出Hello World。
2、定義帶有參數的Shell函數:
#!/bin/bash # 定義函數 function sayHello(){ echo "Hello $1" } # 調用函數 sayHello "Tom"
該腳本定義了一個名為sayHello的函數,並在函數中定義了echo命令,用於輸出Hello和函數中傳入的參數。在腳本的最後,我們調用了該函數,並傳入了參數Tom,將在終端中輸出Hello Tom。
六、Shell條件判斷
條件判斷是我們在編寫Shell腳本時不可避免的需求,例如我們需要在特定條件下執行特定操作,這時我們可以使用Shell的條件判斷語句。
1、if語句:
num=10 if [ $num -gt 5 ]; then echo "num is greater than 5" fi
該腳本定義了一個名為num的變數,並將其值初始化為10。然後使用if語句判斷num是否大於5,如果是,則輸出num is greater than 5。
2、case語句:
fruit="apple" case $fruit in apple ) echo "This is an apple.";; banana ) echo "This is a banana.";; esac
該腳本定義了一個名為fruit的變數,並將其值初始化為apple。然後使用case語句對fruit的值進行判斷,如果是apple,則輸出This is an apple。
七、Shell循環
循環語句在編寫Shell腳本時也是常用的語句之一,例如我們需要對某些操作進行多次重複執行,這時我們就需要使用循環語句。
1、while循環:
count=0 while [ $count -lt 5 ] do echo "Current count is: $count" count=`expr $count + 1` done
該腳本定義了一個名為count的變數,並將其值初始化為0,然後使用while循環對count進行迭代,每次迭代輸出Current count is:和當前的count值。
2、for循環:
names=("Tom" "Jerry" "Mike") for name in ${names[@]} do echo "Hello $name" done
該腳本定義了一個名為names的數組,並將其值初始化為Tom、Jerry、Mike三個數據。然後使用for循環輸出Hello和數組中的每個元素。
八、Shell並發編程
當我們涉及到多個任務需要同時執行時,我們就需要使用到Shell並發編程技術,以提高代碼的效率。
1、&符號:
#!/bin/bash # 運行任務1 task1(){ echo "This is task1." sleep 5 } # 運行任務2 task2(){ echo "This is task2." sleep 5 } # 運行任務3 task3(){ echo "This is task3." sleep 5 } # 並發運行任務 task1 & task2 & task3 &
該腳本定義了三個名為task1、task2、task3的函數,每個函數都包含一個輸出語句和5秒的睡眠時間。在腳本的最後,我們使用&符號來並發運行三個函數。
九、Shell輸入輸出重定向
Shell輸入輸出重定向是我們在Shell編程中常用的技術之一,例如我們需要將命令的輸出結果保存到文件中,或者從文件中讀取輸入等操作,都需要用到輸入輸出重定向技術。
1、輸出重定向:
echo "Hello World" > file.txt
該命令將輸出Hello World字元串,並將其重定向到文件file.txt中。
2、輸入重定向:
cat < file.txt
該命令將從文件file.txt中讀取數據,並輸出到終端中。
十、Shell管道
Shell管道是我們另外一個常用的技術,通過將一個命令的輸出結果傳遞給另一個命令來完成一系列的操作,以實現更加複雜的任務。
1、使用管道過濾數據:
cat file.txt | grep "Hello"
該命令將從文件file.txt中讀取數據,然後將其傳遞給grep命令(也就是將包含Hello字元串的行輸出到終端中)。
2、使用管道排序數據:
cat file.txt | sort
該命令將從文件file.txt中讀取數據,然後將其傳遞給sort命令(也就是將文件內容按行排序輸出到終端中)。
十一、Shell網路編程
在需要與外部伺服器或者其他設備進行交互時,我們就需要使用到Shell網路編程技術,以完成網路通訊等任務。
1、使用telnet與遠程伺服器進行交互:
telnet www.baidu.com 80
該命令將連接到百度伺服器並打開80埠,在終端中可以進行與該伺服器的交互操作。
2、使用curl下載文件:
curl -O http://example.com/file.zip
該命令將從指定網址下載一個名為file.zip的文件。
十二、Shell常用工具
除了Shell自帶的命令和組件外,還有一些社區或第三方提供的庫和工具,我們可以使用這些工具來完成更加複雜的任務。
1、使用awk命令進行文本處理:
awk '{print $1}' file.txt
該命令將從文件file.txt中讀取數據,並使用awk命令將每一行的第一個單詞提取出來,輸出到終端中。
2、使用sed命令編輯文件:
sed '原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241339.html