6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

image.png

バリバリこの記事を参考にさせていただきました
ありがとうございます。

1. Dockerを立ち上げる

2. Dockerfileのあるディレクトリ内で、tree.shを作成する

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についての記事を参考にして、ツリーの色などを、カスタマイズしてみてください!
良いツリーが出来たら、コメント欄でも画像貼れそうなので、コメントしてみてください!

ありがとうございました!

6
0
2

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
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?