Как я могу проверить, содержит ли вывод моей программы цветовые (коды )?

Вам не нужно активировать виртуальную среду, если вы просто хотите выполнить скрипт и выйти. Активация виртуальной среды — это просто удобный способ заменить исполняемый файл Python, отрегулировавPATH1 . Итак, команда

$ source path/to/myenv/bin/activate
$ python myscript.py
$ deactivate

можно эффективно заменить на

$ path/to/myenv/bin/python myscript.py

Поэтому при запуске скрипта через sshпросто выберите правильный путь к исполняемому файлу myenvs python, и все готово:

$ ssh user@host "path/to/myenv/bin/python" <./myscript.py

1 Кроме этого, переменная окружения VIRTUAL_ENVустановлена, а имя окружения добавлено к PS1.

0
20.07.2020, 12:53
1 ответ

Еще одна вещь, которую вы можете сделать, это использовать 'tr', чтобы превратить escape-символ во что-то другое, особенно если есть такой символ, как ^ или % или даже ^A (control -A ), который grep кажется доволен:

boldfoo=$(printf "not bold \033[1mfoo\033[m not bold")

echo $boldfoo
echo $boldfoo | tr '\033' '\001' | grep ^V^A  # Type <Ctrl-V><Ctrl-A>
# Use the return value from this to see whether there are escape characters in $boldfoo.

Я использовал этот прием, чтобы использовать sed/grep для поиска многострочных шаблонов --превратить в ^A, а затем сопоставить шаблон с ^A и т. д. Придется немного повозиться, так как весь ввод теперь представляет собой одну строку, но работает с некоторым усилием.

0
18.03.2021, 23:19

Теги

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