linux 檔案基本屬性
獲取當前指令碼檔案的目錄
rsync同步
用於指令碼除錯,在liunx指令碼中可用set -x就可有詳細的日誌輸出.可免去echo輸出
如下例子:
#!/bin/bash
set -x
yourname="hello world"
輸出結果
+ yourname='hello world'
執行每條指令錯誤時,可直接退出,無需繼續下條,防止錯誤放大。
如下例子:
set -e
abc = "12122"
echo $yourname
exit 0
輸出:
./test.sh: line 11: abc: command not found
若無set -e
則輸出:
./test.sh: line 11: abc: command not found
hello world
可採用以下命令檢視本目錄下所有檔案屬性
兩種方法:
方法1:採用數字表示
chmod 777
方法2:採用字母表示,+'
表示增加乙個屬性,-
表示刪除乙個屬性,=
設定乙個屬性
# 增加可執行許可權
chmod +x
dir="$( cd "$( dirname "$" )" && pwd )"
**解釋
bash_source[0] - 等價於 bash_source ,取得當前執行的 shell 檔案所在的路徑及檔名
dirname - 去除檔名中的非目錄部分,僅顯示與目錄有關的部分
$() - 相當於command
, 即獲取command命令的結果
&& - 邏輯運算符號,只有當&&左邊執行成功時才會執行&&右邊的命令
總結該命令獲取指令碼原始檔的檔案路徑名,獲取其目錄部分,然後 cd 到該目錄,使用 pwd 獲取當前目錄的完整路徑,然後將這個路徑的值賦給變數 dir。
示例:
echo "$"
echo "$"
echo "$(dirname $0)"
echo "$(dirname "$")"
echo "$( cd "$(dirname "$")" && pwd)"
輸出
outdoor@outdoor-thinkpad-x390:~/sim$ ./shell_learn/test.sh
./shell_learn/test.sh
./shell_learn/test.sh
./shell_learn
./shell_learn
/home/outdoor/sim/shell_learn
rysnc是乙個資料映象及備份工具,具有可使本地和遠端兩台主機的檔案,目錄之間,快速同步映象,遠端資料備份等功能。在同步過程中,rsync是根據自己獨特的演算法,只同步有變化的檔案,甚至在乙個檔案裡只同步有變化的部分,所以可以實現快速的同步資料的功能。
常用法:
本地同步
rsync [option]... src [src]... dest
遠端同步
rsync [option]... src [src]... [user@]host::dest
示例
rsync -a -p -z tmp/install [email protected]:/home/username/
其中常見的【option】包括:
-v, --verbose 詳細模式輸出
-q, --quiet 精簡輸出模式
-c, --checksum 開啟校驗開關,強制對檔案傳輸進行校驗
-a, --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgod
-r, --recursive 對子目錄以遞迴模式處理
-r, --relative 使用相對路徑資訊
-p, --perms 保持檔案許可權
-p, --partial 保留那些因故沒有完全傳輸的檔案,以是加快隨後的再次傳輸
-z, --compress 對備份的檔案在傳輸時進行壓縮處理
實用shell指令碼命令記錄
q 如何去掉字串中的空格?a 1.刪除行首空格 echo hello world sed s t g 2.刪除行尾空格 echo hello world sed s t g 3.刪除全部空格 echo hello world sed s space g q 如何提取指定字元後面的字元?a echo ...
shell指令碼 命令
命令連線符 表示不管前面是否執行成功都要執行 表示前面執行成功才執行後面 表示前面執行失敗才執行後面 read命令 read 選項 值 read p 提示語句 n 字元個數 t 時間秒 s 不顯示 運算子 expr 3 2 結果賦值 sum expr 3 2 或者 sum 3 2 乘法expr 3 ...
shell指令碼命令
1.建立檔案 home test test.log rootdir home test testfile rootdir test.log touch testfile 2.如果檔案存在則刪除檔案 if f testfile then rm rf testfile fi3.如果檔案不存在則建立檔案 ...