【20日チャレンジ】LinuxコマンドをGoで実装

Go言語の学習のため、LinuxコマンドをGoで実装します。

目的

  • Go言語に慣れる
  • 標準パッケージの機能、使い方を知る

ルール

以下のルールでチャレンジを行います。

  • 1日1コマンドを実装する
  • 最低限、コマンドの基本的な動作(オプションなしの実行など)を行えるようにする
  • 余裕があれば追加機能を実装する
  • コマンド名は"my" + "Linuxコマンド名"とする
  • 極力標準パッケージを使用する

ソースコード

ソースコードGithubで管理します。

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を作成してみようと考えています。