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 $ 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.
になっていました。