Обнаружение типа потока вывода сценария оболочки

Пожалуйста, проверьте, правильно ли вы предоставили JS ссылки. Сначала файлы JQuery, а затем ваши пользовательские файлы. Так как вы используете '$' в своих методах js.

14
задан Brian Gianforcaro 26 May 2009 в 17:26
поделиться

4 ответа

См. Этот предыдущий вопрос SO , который касается bash. Tcsh обеспечивает ту же функциональность с filetest -t 1 , чтобы проверить, является ли стандартный вывод терминалом. Если это так, то распечатайте цветной материал, иначе оставьте его. Вот tcsh:

#!/bin/tcsh
if ( -t 1 ) then
        printf "\033[31m Success Color is awesome!\033[0m"
else
        printf "Plain Text is awesome!"
endif
13
ответ дан 1 December 2019 в 13:10
поделиться

Внутри сценария оболочки bourne (sh, basket, ksh, ...) вы можете передать стандартный вывод в программу tty (стандартная в Unix), которая сообщает независимо от того, является ли его ввод терминалом или нет, с помощью флага -s .

Введите в «check-tty» следующее:

    #! /bin/sh
    if tty -s <&1; then
      echo "Output is a tty"
    else
      echo "Output is not a tty"
    fi

И попробуйте:

    % ./check-tty
    Output is a tty
    % ./check-tty | cat
    Output is not a tty

Я не используйте tcsh , но должен быть способ перенаправить ваш стандартный вывод на стандартный ввод tty . Если нет, используйте

    sh -c "tty -s <&1"

в качестве тестовой команды в сценарии tcsh , проверьте его статус выхода, и все готово.

6
ответ дан 1 December 2019 в 13:10
поделиться

Обнаружение типа выходного потока рассматривается в вопросе определить, выполняется ли сценарий оболочки через конвейер .

Решив, что вы разговариваете с терминалом, тогда вы можете использовать tput для получения правильных escape-кодов для конкретного терминала, который вы используете - это сделает код более переносимым.

Пример сценария (в bash Боюсь, так как tcsh не моя сильная сторона) приводится ниже.

#!/bin/bash

fg_red=
fg_green=
fg_yellow=
fg_blue=
fg_magenta=
fg_cyan=
fg_white=
bold=
reverse=
attr_end=

if [ -t 1 ]; then
    fg_red=$(tput setaf 1)
    fg_green=$(tput setaf 2)
    fg_yellow=$(tput setaf 3)
    fg_blue=$(tput setaf 4)
    fg_magenta=$(tput setaf 5)
    fg_cyan=$(tput setaf 6)
    fg_white=$(tput setaf 7)
    bold=$(tput bold)
    reverse=$(tput rev)
    underline=$(tput smul)
    attr_end=$(tput sgr0)
fi

echo "This is ${fg_red}red${attr_end}"
echo "This is ${fg_green}green${attr_end}"
echo "This is ${fg_yellow}yellow${attr_end}"
echo "This is ${fg_blue}blue${attr_end}"
echo "This is ${fg_magenta}magenta${attr_end}"
echo "This is ${fg_cyan}cyan${attr_end}"
echo "This is ${fg_white}white${attr_end}"
echo "This is ${bold}bold${attr_end}"
echo "This is ${reverse}reverse${attr_end}"
echo "This is ${underline}underline${attr_end}"

Для получения дополнительной информации см. " man tput "

3
ответ дан 1 December 2019 в 13:10
поделиться

Насколько мне известно, нет способа определить конечный пункт назначения вывода вашего сценария оболочки; единственное, что вы можете сделать, это установить переключатель, который позволяет подавлять управляющие символы в выводе.

-2
ответ дан 1 December 2019 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: