using System; using System.IO; using System.Linq; namespace head { class Program { staticvoid Main(string[] args) { if (!args.Any()) { Usage(); return; } string fileName = null; int lineNumber = 10; if (args.Length == 1) { fileName = args[0]; } if (args.Length == 3) { if (args[0] != "-n") { Usage(); return; } if (!int.TryParse(args[1], out lineNumber)) { Usage(); return; } fileName = args[2]; } if (!File.Exists(fileName)) { // ファイル無いreturn; } foreach (var line in File.ReadLines(fileName).Take(lineNumber)) { Console.WriteLine(line); } } privatestaticvoid Usage() { Console.WriteLine("usage head filename or head -n N filename"); } } }
-nにしか対応していません。コマンドライン引数のパース処理ってめんどくさいですね…。NuGetでさくっと何かライブラリ入れて片づけてしまいたい。