private string GetRecommendedInfo(string v)
 {
     if (GetCommandAndArgsFromText(v, out string nameCommand, out string[] args))
     {
         List <AbstractCommand> commands = SearchRecommendations.Search(nameCommand, (t) => t.Name, this.commands);
         if (commands.Count == 0)
         {
             return("not found.");
         }
         else if (commands.Count == 1)
         {
             return(commands[0].Name + " - " + commands[0].Info);
         }
         else
         {
             return(string.Join(", ", commands));
         }
     }
        private string GetterText()
        {
            StringBuilder  sb = new StringBuilder();
            ConsoleKeyInfo info;
            var            posStart = new { X = Console.CursorLeft, Y = Console.CursorTop };
            StringBuilder  buffer   = null;

            buffer = ShowUserCommandText(sb, posStart, buffer);
            do
            {
                info = Console.ReadKey(true);
                if (ConsoleKey.Backspace == info.Key)
                {
                    if (sb.Length > 0)
                    {
                        sb.Length--;
                    }
                }
                else if (ConsoleKey.Enter == info.Key)
                {
                    break;
                }
                else if (info.Key == ConsoleKey.UpArrow || info.Key == ConsoleKey.DownArrow || info.Key == ConsoleKey.LeftArrow || info.Key == ConsoleKey.RightArrow)
                {
                    sb = new StringBuilder(history.Move(info).Value);
                }
                else
                {
                    sb.Append(info.KeyChar);
                }
                buffer = ShowUserCommandText(sb, posStart, buffer);
            } while (info.Key != ConsoleKey.Enter);
            Console.SetCursorPosition(posStart.X, posStart.Y);
            Console.Write(buffer.ToString());
            if (GetCommandAndArgsFromText(sb.ToString(), out string commandName, out string[] args))
            {
                List <AbstractCommand> recommendCommands = SearchRecommendations.Search(commandName, (t) => t.Name, commands);
                if (recommendCommands.Count == 1)
                {
                    return(recommendCommands[0].Name + " " + string.Join(" ", args));
                }
            }
            return(sb.ToString());
        }