1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

シェルユーティリティスクリプトのいくつかの例(コレクターズ・エディション)

2022-01-05 23:29:25

1 特殊なファイル名のリモートコピー

サーバー間のファイルのコピーは、scpコマンドで行うことが多く、以下のような書式になります。

(1) scp ファイル名 [ユーザー@]ホスト:ディル

(2) scp [ユーザ@]ホスト:ディレクトリ1

(1)はローカルファイルのファイル名をリモートサーバホストのdirディレクトリにコピーし、(2)はリモートサーバホストのdir1ディレクトリにあるファイルのファイル名をローカルの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
 
12345

3 バージョン番号の自己増殖の実装

docker build でアプリケーションイメージを構築する場合、イメージのバージョン管理を容易にするため、ビルドごとにイメージのバージョン番号を 1 つずつ増加させる。

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

1.0.0

バージョン番号を取得するコマンドは以下の通りです。

バージョン=cat version.txt

バージョン番号は、version変数に代入されます。

バージョン番号は自動的に1ずつ増加する。スクリプトコマンドは以下の通りである。

echo $version | awk -F '.' '{print($1".") $2"." ($3+1));}' > version.txt

コマンドの説明です。

(1) awk コマンドはセパレータドット「...」で使用します ;.

(2) $1, $2, $3はそれぞれバージョン番号の1桁目、2桁目、3桁目です。

(3) $3+1とは、バージョン番号が1つ増えることを意味します。

4 sed 実行環境を設定する

完全に分離されたWebアプリケーションのプロジェクトでは、フロントエンドはnginxを使用して静的リソースをデプロイします。プロジェクトのフロントエンドのコードのベースURL(baseUrl)は、異なる実行環境(開発、テスト、本番)に応じて適宜変更する必要があり、例えば、baseUrl割り当てのためのjsコードは以下のようになります。

{{コード
{

これは、シェルユーティリティスクリプト(コレクターズエディション)のいくつかの例に関するこの記事の終わりです、より関連するシェルユーティリティスクリプトは、スクリプトの家の前の記事を検索してくださいまたは次の関連記事を参照してくださいは、スクリプトの家をサポートすることを願って続けています!。