shell指令碼命令記錄

2021-10-07 10:47:27 字數 2454 閱讀 6238

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.如果檔案不存在則建立檔案 ...