Shell腳本基本命令

1. echo 命令

1.1 基本使用

Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用于字符串的輸出。輸出字符串時(shí),可以省略掉引號(hào)。echo命令默認(rèn)在末尾添加換行符。

username='uusama'
echo $username  # 輸出 uusama
echo test   # 輸出 test
echo 'test' # 輸出 test
echo there is test str  # 輸出 there is test str

1.2 echo -e 轉(zhuǎn)義字符

當(dāng)要使用轉(zhuǎn)義字符時(shí),使用 echo -e,如 echo -e “\a”,發(fā)出一聲警報(bào)。
激活轉(zhuǎn)義字符。使用-e選項(xiàng)時(shí),若字符串中出現(xiàn)以下字符,則特別加以處理,而不會(huì)將它當(dāng)成一般文字輸出:

序列 說明
\a 警告字符,通常為ASCII的BEL字符
\b 退格(BS) ,將當(dāng)前位置移到前一列
\c 不換行輸出,當(dāng)”\c”后面仍然存在字符時(shí),”\c”后面的字符將不會(huì)被輸出,如果”\c”后面不存在任何字符時(shí),效果與使用”echo -n”相同
\f 換頁(FF),將當(dāng)前位置移到下頁開頭
\n 換行(LF) ,將當(dāng)前位置移到下一行開頭
\r 回車(CR) ,將當(dāng)前位置移到本行開頭
\t 水平制表(HT) (跳到下一個(gè)TAB位置)
\v 垂直制表(VT),換行后的新行的開頭位置連接著上一行的行尾
\\ 一個(gè)字面上的反斜杠字符
\033[36m,\033[35m 顯示天藍(lán)色文本,紫色文本
\033[0m 關(guān)閉所有屬性
echo -e "ab\bcdefg"

2. printf 命令

printf 命令模仿 C 程序庫(library)里的 printf() 程序。標(biāo)準(zhǔn)所定義,因此使用printf的腳本比使用echo移植性好。

printf 使用引用文本或空格分隔的參數(shù),外面可以在printf中使用格式化字符串,還可以制定字符串的寬度、左右對齊方式等。默認(rèn)printf不會(huì)像 echo 自動(dòng)添加換行符,我們可以手動(dòng)添加 \n。

2.1 使用方法

printf format-string [arguments...]

# 舉例
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg

2.2 格式化字符串

printf的第一個(gè)參數(shù)為雙引號(hào)格式化字符串,后面為參數(shù)列表,printf的詳細(xì)格式化過程可以參照C語言的printf函數(shù)。

格式化 說明
左對齊
Width 域的步長,用0表示0步長
%c ASCII字符
%d, %i,%u 十進(jìn)制整型,%u表示不帶符號(hào)
%e,%E 科學(xué)計(jì)數(shù)法
%f 浮點(diǎn)型 #使用小數(shù)點(diǎn)后2位%.2f (用于除法后)
%g awk決定哪種浮點(diǎn)數(shù)轉(zhuǎn)換e或者f
%o 八進(jìn)制
%x,%X 十六進(jìn)制,大寫表示A-F
%s 字符串

2.3 轉(zhuǎn)義字符

序列 說明
\a 警告字符,通常為ASCII的BEL字符
\b 后退
\c 抑制(不顯示)輸出結(jié)果中任何結(jié)尾的換行字符(只在%b格式指示符控制下的參數(shù)字符串中有效)
\f 換頁(formfeed)
\n 換行
\r 回車(Carriage return)
\t 水平制表符
\v 垂直制表符
\ 一個(gè)字面上的反斜杠字符
\ddd 表示1到3位數(shù)八進(jìn)制值的字符。僅在格式字符串中有效
\0ddd 表示1到3位的八進(jìn)制值字符

3. test 命令

Shell中的 test 命令用于檢查某個(gè)條件是否成立,它可以進(jìn)行數(shù)值、字符和文件三個(gè)方面的測試。

3.1 數(shù)值測試

參數(shù) 說明
-eq 等于則為真
-ne 不等于則為真
-gt 大于則為真
-ge 大于等于則為真
-lt 小于則為真
-le 小于等于則為真

示例:

num1=100
num2=100
if test [num1] -eq[num1]?eq[num2]
then
    echo '兩個(gè)數(shù)相等!'
else
    echo '兩個(gè)數(shù)不相等!'
fi

# [] 計(jì)算簡單算術(shù)運(yùn)算
echo $[num1+num2]

代碼中的 [] 執(zhí)行基本的算數(shù)運(yùn)算。

3.2 字符串測試

參數(shù) 說明
= 等于則為真
!= 不相等則為真
-z 字符串 字符串的長度為零則為真
-n 字符串 字符串的長度不為零則為真

3.3 文件測試

參數(shù) 說明
-e 文件名 如果文件存在則為真
-r 文件名 如果文件存在且可讀則為真
-w 文件名 如果文件存在且可寫則為真
-x 文件名 如果文件存在且可執(zhí)行則為真
-s 文件名 如果文件存在且至少有一個(gè)字符則為真
-d 文件名 如果文件存在且為目錄則為真
-f 文件名 如果文件存在且為普通文件則為真
-c 文件名 如果文件存在且為字符型特殊文件則為真
-b 文件名 如果文件存在且為塊特殊文件則為真

示例:

cd /bin
if test -e ./notFile -o -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

Shell還提供了與( -a )、或( -o )、非( ! )三個(gè)邏輯操作符用于將測試條件連接起來,其優(yōu)先級(jí)為:”!”最高,”-a”次之,”-o”最低。

4.常用Shell命令

4.1 文件操作

命令 示例 說明
ls -la 或者 ll ll 列出當(dāng)前目錄下的所有文件和文件夾
cp cp a.txt ./b.txt 把文件a的內(nèi)容復(fù)制到當(dāng)前目錄的b文件
cat cat a.txt >> b.txt, cat a.txt 把a(bǔ)文件的內(nèi)容組合到b文件內(nèi)容的末尾,查了a.txt文件的內(nèi)容
rm rm -rf test 強(qiáng)制刪除test文件夾下的所有文件
mkdir mkdir test 創(chuàng)建 test 的目錄
mv mv a.txt b.txt 重命名 a.txt 為 b.txt,移動(dòng)或則重命名文件
cd cd ..,cd -,cd ~ 切換到上一級(jí)目錄,上一次瀏覽的目錄,用戶目錄
pwd pwd 顯示當(dāng)前路徑,末尾沒有斜杠
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容