幾例實用的Shell指令碼

2021-10-07 21:14:01 字數 2263 閱讀 5520

日常工作中,經常編寫一些shell命令或指令碼以完成重複性操作,本文分享了最近用到的幾例shell實用指令碼。

1 特殊檔名的遠端拷貝

伺服器之間拷貝檔案經常使用scp命令,其命令格式:

(1)scp filename [user@]host:dir

(2)scp [user@]host:dir1/filenamedir2

格式(1)將本地檔案filename拷貝到遠端伺服器host的dir目錄下,格式(2)將遠端伺服器host的dir1目錄下的檔案filename,拷貝到本地dir2目錄下。

如果拷貝的檔名包含特殊字元,比如ecs-eos-base:1.0.tar,冒號:屬於特殊字元。直接使用格式(1)的命令進行拷貝,命令將ecs-eos-base識別為主機名稱而命令執行報錯,如下:

[root@phy91 docker]# scp ecs-eos-base:1.0.tar root@phy94:/root/docker/

ssh: could not resolve hostname ecs-eos-base: temporary failure in name resolution

此時使用./表示當前目錄即可解決該報錯,命令如下:

[root@phy91 docker]# scp ./ecs-eos-base:1.0.tar root@phy94:/root/docker/

ecs-eos-base:1.0.tar 100% 84mb 172.7mb/s 00:00

使用./代表當前目錄,scp命令就不會將ecs-eos-base識別為主機名稱。

2 base64編碼和解碼

在centos或redhat linux作業系統中,如果要進行字串的base64編碼和解碼,可以使用base64命令即可簡單實現。

(1)編碼

[root@phy91 ~]# echo 「phy91」 | base64

uehzotek

(2)解碼

[root@phy91 ~]# echo 「uehzotek」 | base64 -d

phy91

base64既可以編碼解碼字串,也可以對檔案內容進行編碼和解碼。-d引數是表示解碼。

對檔案編碼解碼命令如下:

[root@phy91 test]# echo 「12345」 > test.txt

[root@phy91 test]# base64 test.txt

mtiznduk

[root@phy91 test]# base64 test.txt > test2.txt

[root@phy91 test]# more test2.txt

mtiznduk

[root@phy91 test]# base64 -d test2.txt

3 版本號自增長的實現

使用docker build進行應用映象構建時,為便於映象版本管理,每次構建的映象版本號會增加1。可以使用指令碼實現版本號的自增1,首先建立乙個version.txt檔案,內容如下:

[eos@host-132 eos]$ more version.txt

1.0.0

獲取版本號命令如下:

version=cat version.txt

版本號賦值給version變數。

版本號自動增加1,指令碼命令如下:

echo $version | awk -f』.』 『』 > version.txt

命令說明:

(1)使用awk命令,分隔符為點「.」;

(2)$1,$2和$3分別是版本號的第1,2,3個數字;

(3)$3+1表示版本號增加1。

4 sed配置執行環境

在動靜完全分離的web應用專案中,前端使用nginx部署靜態資源即可,專案前端**的基準url(baseurl)需要根據不同執行環境(開發、測試、生產)進行相應的修改,例如baseurl賦值的js**如下:

define([「jquery」], function ($) {

return {

//生產是prod.abc.com,測試是test.abc.com,開發是localhost

在部署測試環境和生產環境的靜態資源時,需要將baseurl替換為test.abc.com和prod.abc.com。此時可以使用sed命令進行字串替換,完整命令如下:

命令說明:

(1)common.js是定義baseurl的公共檔案;

(2)此處須使用#代替/,否則會報錯(因為替換字串和目錄字串都包含/字元);

幾例shell實用指令碼 珍藏版

伺服器之間拷貝檔案經常使用scp命令,其命令格式 1 scp filename user host dir 2 scp user host dir1 filenamedir程式設計客棧2 格式 1 將本地檔案filename拷貝到遠端伺服器host的www.cppcns.comdir目錄下,格式 2...

shell 實用指令碼

功能 將當前目錄下檔案拷貝至另一目錄下,且拷貝前先備份 bin sh 指令碼功能 覆蓋檔案前先備份 cfsuffix date y m d 備份檔案字尾 if lt 2 then 輸入引數說明 echo error.need args n echo eg path1 path2 echo path1...

shell指令碼實用技巧

別人寫命令,你也寫命令,命令知多少?內部命令 整合在bash的命令,就是內部命令。內部命令依賴於shell型別。這些命令由shell程式識別並在shell程式內部完成執行,通常在linux系統載入執行時shell就被載入並駐留在系統記憶體中。內部命令是寫在bash原始碼裡面的,其執行速度比外部命令快...