【20日チャレンジ】LinuxコマンドをGoで実装
Go言語の学習のため、LinuxコマンドをGoで実装します。
目的
- Go言語に慣れる
- 標準パッケージの機能、使い方を知る
ルール
以下のルールでチャレンジを行います。
- 1日1コマンドを実装する
- 最低限、コマンドの基本的な動作(オプションなしの実行など)を行えるようにする
- 余裕があれば追加機能を実装する
- コマンド名は"my" + "Linuxコマンド名"とする
- 極力標準パッケージを使用する
ソースコード
https://github.com/kyohmizu/go-cli-tools
スケジュール
No | 日付 | コマンド | 基本実装 | オプション | 学習内容 |
---|---|---|---|---|---|
1 | 5/23 | myls | 〇 |
ディレクトリ操作 エラー処理 |
|
2 | 5/24 | mycp | 〇 | △ | ファイル操作 |
3 | 5/25 | mymv | 〇 | △ | |
4 | 5/26 | myrm | 〇 | △ | |
5 | 5/27 | mycat | 〇 | △ | |
6 | 5/28 | mycurl | 〇 | △ |
http接続の実装 オプションの複数回指定 |
7 | 5/29 | mypwd | 〇 | △ | OSによる条件分岐 |
8 | 5/30 | mytouch | 〇 | △ | build tagの設定 |
9 | 5/31 | mymkdir | 〇 | △ | ファイルの操作権限 |
10 | 6/1 | mykill | 〇 | 〇 | プロセスとシグナル |
11 | 6/2 | myecho | 〇 | - | 引数の取得 |
12 | 6/3 | mytime | △ | - |
コマンド実行 timeの操作 |
13 | 6/4 | mychmod | △ | - |
bit演算 ファイルの権限 |
14 | 6/5 | myyes | 〇 | 〇 | |
15 | 6/6 | myenv | 〇 | △ |
windowsで確認不可 |
16 | 6/7 | mychown | 〇 | △ |
user,group操作 windowsで確認不可 |
17 | 6/8 | mygrep | 〇 | △ |
grepの操作 goの正規表現 |
18 | 6/9 | mysleep | 〇 | △ | |
19 | 6/10 | mymkdir | 〇 | △ | |
20 | 6/11 | myln | 〇 | △ | リンクの操作 |
成果
- Goの構文や記法に慣れてきた
- Go標準パッケージの使い方、調べ方を覚えた
- Linuxコマンドの動作を知ることができた
感想
20日も書けば、ある程度書けるようになることがわかりました。
普段使用するC#とGoが似ている点も覚えやすかったのだと思います。
次はGoでAPIを作成してみようと考えています。