Как вы помещаете результаты в одну строку? (В баш)

Итак, я создал этот файл, и в настоящее время я запускаю его в оболочке bash, и он хорошо отображает список, однако каждый результат размещается в отдельной строке. Мне было интересно, как я мог бы сделать ту же программу, но сделать так, чтобы результаты располагались по горизонтали, один за другим.

x=0;while [ $x -le  256 ]
do
t=$(tput sgr 0);r=$(tput setaf $x);echo "${r} $x ${t}";((x=$x+1))
done

3 ответа

Решение

Как я понимаю, тебе нужно что-то вроде этого:

x=0;while [ $x -le  256 ]
do
t=$(tput sgr 0);r=$(tput setaf $x);echo -n "${r} $x ${t}";((x=$x+1))
done

Вы забыли использовать echo -n (без новой строки)

Отформатированная версия с колонками:

#!/bin/bash

t=$(tput sgr 0)
for x in {0..255}; do
  printf "%s%4s${t}" "$(tput setaf $x)" $x
  if [ $((x % 15)) -eq 0 ]; then  echo;  fi;
done

Команда echo, добавьте новую строку автоматически. Если вы хотите напечатать вывод в одну строку, используйте printf Command.

Чтобы изменить цвет, вы можете использовать \e, например:

echo -e "\e0;31m Your text"

Эта строка напечатает ваш текст красным цветом. Вы можете изменить номер 31.

Пытаться less -r или же less -R:

От less справочная страница:

-r or --raw-control-chars
         Causes "raw" control characters to be displayed. The default is to 
         display control characters using the caret notation; for example, a 
         control-A (octal 001) is displayed as "^A". Warning: when the -r 
         option is used, less cannot keep track of the actual appearance of the 
         screen (since this depends on how the screen responds to each type of
         control character). Thus, various display problems may result, such as
         long lines being split in the wrong place.

-R or --RAW-CONTROL-CHARS
         Like -r, but tries to keep track of the screen appearance where possible.
         This works only if the input consists of normal text and possibly some 
         ANSI "color" escape sequences, which are sequences of the form:

             ESC [ ... m

         where the "..." is zero or more characters other than "m". For the 
         purpose of keeping track of screen appearance, all control characters
         and all ANSI color escape sequences are assumed to not move the cursor.
         You can make less think that characters other than "m" can end ANSI 
         color escape sequences by setting the environment variable 
         LESSANSIENDCHARS to the list of characters which can end a color escape 
         sequence.
Другие вопросы по тегам