常用
# 檢視所有環境變數 - 列印環境變數
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使用率,記憶體使用率,根分割槽的磁碟占有率,百分比只需精確到個位 出現磁碟占有率...