1
0

Shell 「bash」でawsのs3ファイルのサイズ、トータルを抜き出す

Posted at

Shellを全く触ったことがない➡理解するようになるまで

今回調べたこと

● shellの基礎知識

まず最初にShellとは?は調べたら簡単にたくさんの記事がでてきます。

オススメ引用元

● 引数

オススメ引用元

● 絶対パス・相対パス

オススメ引用元

● 配列

オススメ引用元

● 変数

オススメ引用元

● ループ

オススメ引用元

● 配列とループの併用

オススメ引用元

● 連想配列

オススメ引用元

引用先は自分自身が調べていて分かりやすかったものになります。
初心者や未経験の方のお力になればと思って載せました。

基礎理解後

書き始め

#!/bin/bashシバン】で検索すると意味が調べられます。

#sh ./test.sh

※必ず sh をテキストの前につけないとエラーが出る

./example.shはエディターの現在開いているファイルの事
絶対パス、相対パスの違い
./は省いている部分【相対パス】になります。

コマンド pwd を実行してみると自分がどこにいるのか分かります。
パスの住所みたいなものです。

shellの引数の作成

sh ./example.sh 〇〇 〇〇〇
【必ずスペースをあけて記述、これで引数になります。※〇の部分に引数を記述してください】

echo "$1"
echo "$2"

これで出力できます。echoは出力する意味

配列を作成

配列は、【Shell 配列】 などと検索するとたくさん出てきます。

example=(
    "hoge"
    "fuge"
    )

変数と代入を行います。【シェル変数 代入】と検索すればたくさん出てきます!

#日付設定
yyyy-mm-dd="$1" 

#2つめの日付設定
yyyy-mm-dd_2="$2"

#時間設定
HH-MM="$3"

すべて引数で設定しています。

for e in "${example[@}"; do
echo $e
done

出力結果は

hoge
fuge

となります。
今回はaws s3の中身を見てファイルのサイズとトータルが欲しいとします。

オススメ引用元

for e in "${example[@}"; do

aws s3 ls s3://testtest-test2/"$e"/ #日付設定 / #2つめの日付設定 / #時間設定 --recursive --summarize --human-readable

# 日付や時間部分は代入を行っています。

echo $e "$日付設定" "$2つめの日付設定"

# echoは出力するのみなので、順番を入れ替えての出力も可能です。 
done

echo 後の$e "$日付設定"の間はスペースを行っていますが(/や,)を指定すると

e/日付設定
e,日付設定

と出力されます。

後はtailコマンドを使用して末尾の2行を抜き出します。
コマンドの詳細に関しましてはたくさんの記事がありますので、調べてみる事をお勧めします。

オススメ引用元

awkコマンドを使用し抜き出して出力する

オススメ引用元

aws s3を引数に設定していきます。

オススメ引用元

例)
example=`aws s3 ls ${BUCKETDIRNAME} --human-readable | tail -n (抜き出したい行数) | awk '{ print $5 }'`

あとはechoで出力したい順番に記述

echo "$e" "$example"...

上記のように記述し最後にdoneを書きます。

引用記事も多く読みにくいと思いますが、今回勉強したことをまとめてみました。
実際に記述してどのように動くかを試してみることで勉強になりますので、是非勉強してみてください。初めての経験で自信がつくようになりました。
それでは失礼します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0