バリバリこの記事を参考にさせていただきました
ありがとうございます。
1. Dockerを立ち上げる
2. Dockerfileのあるディレクトリ内で、tree.shを作成する
#!/bin/bash
trap "tput reset; tput cnorm; exit" 2
# ↑ Ctrl+C が押されたときに、前の画面に戻れてカーソルも表示されるようにする
clear # 画面をきれいにする
tput civis # カーソル非表示
lin=2
col=$(($(tput cols) / 2))
c=$((col-1))
est=$((c-2))
color=0 # 文字色を変えるための変数
tput setaf 2; tput bold
# 文字を緑色 ↑ 太字
# 緑の木を作成
for ((i=1; i<20; i+=2))
{
tput cup $lin $col # 上から$col行目左から$lin文字目にカーソル移動
for ((j=1; j<=i; j++))
{
echo -n \# # -nは改行をしない
}
let lin++
let col--
}
tput sgr0; tput setaf 3
# ↑ 装飾解除 ↑ 文字を黄色
# 木の幹の部分
for ((i=1; i<=2; i++))
{
tput cup $((lin++)) $c # 上から$c行目左から$((lin++))文字目にカーソル移動
echo 'MWM'
}
tput setaf 1; tput bold
# 文字を赤色 ↑ 太字
tput cup $lin $((c - 6)); echo MERRY CRISTMAS
# ↑ 上から$((c - 6))行目左から$lin文字目にカーソル移動
let c++
k=1
# ツリーを光らす
while true; do # ずっと繰り返す
for ((i=1; i<=35; i++)) {
[ $k -gt 1 ] && {
tput setaf 2; tput bold
# 文字を緑色 ↑ 太字
tput cup ${line[$[k-1]$i]} ${column[$[k-1]$i]}; echo \#
unset line[$[k-1]$i]; unset column[$[k-1]$i]
}
li=$((RANDOM % 9 + 3))
start=$((c-li+2))
co=$((RANDOM % (li-2) * 2 + 1 + start))
tput setaf $color; tput bold # $colorのの中身は毎回変わっていく
tput cup $li $co
echo \* # ランダムに光るときのo
line[$k$i]=$li
column[$k$i]=$co
color=$(((color+1)%8))
}
k=$((k % 2 + 1))
done
tput
コマンドについては、こんな記事がわかりやすかったです。
3. chmod a+x tree.sh
chmod
コマンドは、ファイルの権限の設定コマンドです。
意味は、
a
: すべてのユーザー(allのこと)
+
: 権限を追加
x
: 実行権限
つまり、すべてのユーザーがtree.sh
を実行できるようにしています。
chmod
コマンドについてまとめました。
どのユーザーに | 権限をどうする | ○○の権限を |
---|---|---|
u (オーナー) g (所属グループのユーザー) o (その他のユーザー) a (全てのユーザー) |
+ (権限を追加 - (権限を削除) = (指定した権限のみ) |
r (読み込み権限) w (書き込み権限) x (実行権限) |
また、現在のファイルの権限は、
ls -l tree.sh
で、出力された、最初の10桁の文字列で確かめられます。
試してみると、-rwxrwxrwx
と出てきたと思います。
これらは、-
rwx
rwx
rwx
という、4つの部分に分けて考えます。
最初の-
は、ファイルタイプが、「ファイル」であることを示します。
次の3桁は、オーナーの権限を示します。
r
, w
, x
の全てが表示されたので、すべての権限を持っています。
その次の3桁は、グループの権限で、
最後の3桁は、その他のユーザーの権限です。
そして、ユーザーの権限を持っていない所は-
で示されます。
例えば、
-rw-r--r--
と表示された場合は、
-
rw-
r--
r--
と考えるのですが、
オーナーの権限は、「読み込み」と「書き込み」はできますが、x
があるはずの部分が、-
となっているので、「実行権限」は無いのです。
グループの権限、その他ののユーザーの権限は、r
とあるので、「読み込み」はできますが、wx
があるはずの部分が、--
となっているので、「書き込み権限」と「実行権限」は無いというわけです。です。
4. ./tree.sh
でプログラムを実行
きれいなツリーが描かれました!
最後に
ツリーの表現に用いる文字列や、
先ほど紹介したtputについての記事を参考にして、ツリーの色などを、カスタマイズしてみてください!
良いツリーが出来たら、コメント欄でも画像貼れそうなので、コメントしてみてください!
ありがとうございました!