diff --git a/dserial-cli/src/commands/ReadCommand.vala b/dserial-cli/src/commands/ReadCommand.vala
index f42ac4778da255676bdfeff190e6ab16df5cc6c2..8e5b16ab37029e45d194a3b05eb0ca85733a3019 100644
--- a/dserial-cli/src/commands/ReadCommand.vala
+++ b/dserial-cli/src/commands/ReadCommand.vala
@@ -56,7 +56,18 @@ public class ReadCommand : Object, Command
 		} else {
 			int rows;
 			int cols;
+            if(!state.interactive) Readline.initialize();
 			Readline.get_screen_size(out rows, out cols);
+            if(rows == 0 || cols == 0) {
+                string? v = Environment.get_variable("LINES");
+                if(v!=null) rows = int.parse(v);
+                v = Environment.get_variable("COLUMNS");
+                if(v!=null) cols = int.parse(v);
+            }
+            if(rows == 0 || cols == 0) {
+                rows = 23;
+                cols = 80;
+            }
 			int chars_per = 0;
 			for(int i = 0; i < printers.length; i++) {
 				chars_per += printers[i].width_per_char;
@@ -97,7 +108,7 @@ public class ReadCommand : Object, Command
 						stdout.printf("   ");
 						printers[x].a(tmpbuf);
 					}
-					stdout.printf("\n");
+					if(display_fields != "s") stdout.printf("\n");
 					counter = 0;
 				}
 			}