Ubuntu系統Shell指令碼

2021-09-10 04:34:12 字數 2888 閱讀 7298

常用

# 檢視所有環境變數 - 列印環境變數

envecho $path

export ld_library_path=$pwd

#定義和取消變數

var1="123"

unset var1

# 列印系統資訊 grep -v "u" 反向不匹配

uname -a

# 賬號和密碼 - 切換賬號 - 設定賬號密碼

su root

su -

sudo passwd root

# 開啟檔案管理器 - 切換到使用者目錄 - 切換到上次訪問目錄

cd cd -

nautilus .

# 目錄快速操作 目錄入棧 出棧 列出棧目錄 切換目錄 彈出指定棧中目錄

# + 從左至右 - 從右至左 序號從0開始計數

pushd .

popd

dirs

pushd -0

popd +2

# 檢視命令位置

which git

基本命令詳情

# echo 顯示文字

# -e 啟用轉義字元,不當字串輸出

echo "\nhello"

echo "\nhello\b1"

# yes 重複輸出字串

yes

yes n

# 建立目錄和刪除檔案

mkdir dir

rm -rf dir

# 複製 符號鏈結+d引數

# 複製 目錄+r引數

cp -df libdtypestd.so ..

cp -r skia ..

# 顯示最後10行

# 跟蹤log檔案

tail skia.log

tail -f skia.log

其他

# 檔案所在目錄 相對或者絕對路徑

aa=`dirname $0`

# 執行指令碼檔名

aa=`dirname $0 .sh`

# 執行指令碼檔名(加字尾)

aa=`dirname $0`

# 標準獲取指令碼所在絕對目錄

# 直接執行指令碼,啟動另乙個shell,初始化$0,如$0為./build/copy_std.sh

build_dir=$(cd $(dirname $0);pwd)

# 即使在source *.sh也正常,source並不會另起乙個新的shell程序,推薦寫法

build_dir=$(cd $(dirname $);pwd)

分支控制if

# 單分支 

a=4if [ $a -eq 4 ]

then

echo "4 == 4"

fi# 雙分支

# -e 是否存在

# -f 是否為檔案

# -d 是否為目錄

# -r 可讀 -w 可寫 -x 可執行

# -s 檔案大小不為0

# 注意內部兩邊有空格

if [ ! -e textenginelib ];then

echo "textenginelib not exist"

else

echo "textenginelib exist "

fi# 多分支

if ;then

echo "1"

elif ;then

echo "2"

else

echo "3"

fi

迴圈控制for

# 執行6次迴圈

for((i=0;i<6;++i))

do echo $i

done

# 另一種方式

for i in

do echo $i

done

# 給定列表迴圈

for file in a.so b.so c.so

do echo $file

done

# 檔案

for file in *.txt

do echo $file

done

# for file in `ls *.txt`

do echo $file

done

函式定義 、呼叫、傳參

function copy_cclib()

/$1/$2/$3/`

doecho copy $

cp -rf $/$1/$2/$3/$ $/bin

done

}copy_cclib qt 5.9.4 mac

# 判斷系統

if [[ "$(uname)" = "linux" ]]; then

homebrew_on_linux=1

fi

獲取執行目錄,指令碼目錄,上級目錄

#!/bin/bash

run_dir=$

build_dir=$(cd $(dirname $);pwd)

cd $/..

root_dir=$

echo $run_dir

echo $build_dir

echo $root_dir

cd $run_dir

/etc/profile

/etc/bashrc

~/.bash_profile   - mac

~/.bash_login

~/.profile             - ubuntu

~/.bashrc

Ubuntu下執行Shell指令碼

將乙個指令碼儲存為帶有副檔名的檔案,如test.sh,在終端上輸入 chmod x test.sh 然後輸入 test.sh 終端顯示 test.sh 找不到命令 後來看了鳥個私房菜,發現這樣輸入,系統只會在 path上列出的路徑查詢,而不會查詢當前的目錄有沒有這樣的命名,以找到的第乙個為準 但是,...

shell指令碼授權系統

某驗證系統示例 if 伺服器ip 已授權ip then else exit而依靠gzexe shc upx打包bin run等方式又無法安全的保護指令碼,這種情況下的加密也就是乙個不等式而已。觸角2.0 為指令碼增加了資源伺服器位址驗證步驟,獲取資源位址的網頁鏈結在這裡定義為galaxy galax...

shell指令碼 開發系統監控指令碼

某公司隨著業務的不斷發展,所使用的linux伺服器也越來越多。管理員希望編寫乙個簡單的效能監控指令碼,放到各伺服器中,當監控指標出現異常時傳送告警郵件。編寫名為sysmon.sh的shell監控指令碼 監控內容包括cpu使用率,記憶體使用率,根分割槽的磁碟占有率,百分比只需精確到個位 出現磁碟占有率...