Linuxのコマンドで、任意のディレクトリ内のディレクトリやファイルをツリー状で確認できるtreeというコマンドがあります。
※treeを使用する場合は、下記コマンドでtreeコマンドを使用できるようにする必要があります。
$ sudo apt install tree
$ tree sample
のようにtreeコマンドの後にディレクトリ名を指定すると、
sample/
├── dir1
│ ├── sub1
│ └── sub2
└── dir2
├── sub3
└── sub4
のように任意のディレクトリ内がどのような構成になっているか?を確認できます。
このtreeコマンドですが、
$ tree -L 1 sample
のように-L 1のようにオプション + 値を追加することで、
sample ├── dir1 └── dir2
のように出力内容を変えることができます。
今回の例であれば、-Lはツリーの深さを指定できまして、1にすることで深さ1のツリーを出力できます。
$ tree -L 2 sample
にすると、
sample
├── dir1
│ ├── sub1
│ └── sub2
└── dir2
├── sub3
└── sub4
になります。
自作のLinuxコマンドでオプションを追加しようまでで作成しましたsayコマンドに値の指定を行うオプションを追加してみます。
出力内容を繰り返し出力するためにsayコマンドに-r 数字のオプションを追加してみます。
/home/pi/say.go
package main
import (
"flag"
"fmt"
)
func main() {
var msg string
var isAdd = flag.Bool("a", false, "Add exclamation mark(!)")
var repeat = flag.Int("r", 0, "Set the number of repetitions of the output string.")
flag.Parse()
args := flag.Args()
if len(args) == 1 {
msg = args[0]
}
if *repeat > 0 {
var tmp string
for i := 0; i < *repeat; i++ {
tmp += msg
}
msg = tmp
}
if *isAdd {
msg += "!"
}
fmt.Println(msg)
}
太字で加えた箇所が出力のリピート数に関するコードです。
$ go build say.go $ sudo mv say /usr/local/bin/
をしてコマンドの確認をしてみます。
$ say hoge
hoge
$ say -r 1 hoge
hoge
$ say -r 2 hoge
hogehoge
$ say -r 3 hoge
hogehogehoge
リピートで指定した分だけ引数で指定した文字列が増えています。
sayコマンドを--helpで確認してみますと、
$ say --help
Usage of say:
-a Add exclamation mark(!)
-r int
Set the number of repetitions of the output string.
になっていました。