Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Вопрос уважаемым знатокам python/shell  (Прочитано 973 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alcopenguin

  • Автор темы
  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Здравствуйте, товарищи. Взялся я за изучение книги Гифта и Джонса "Python в системном администрировании для UNIX и Linux". Выполнил одно из первых заданий и был несколько озадачен вот чем - при выполнении команды ls -l название файлов в каталоге выделяется определённым цветом, а при выполнении кода из книги:

#!/usr/bin/env python
#Версия команды ls на языке Python
import subprocess
subprocess.call(["ls"," l"])

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

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Вопрос уважаемым знатокам python/shell
« Ответ #1 : 10 Июня 2013, 09:49:30 »
В команде ls которая палит что её не из терминала запускают, а другая программа ну и она перестаёт цвера выдавать чтобы не ломать скрипты и не заставлять другие приложения парсить цвет

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Вопрос уважаемым знатокам python/shell
« Ответ #2 : 10 Июня 2013, 10:53:54 »
Я бы сказал, что просто питоновская консоль не умеет цвета показывать. А ls вряд ли может понять, как ее запустили.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Scorry

  • Активист
  • *
  • Сообщений: 842
    • Просмотр профиля
Re: Вопрос уважаемым знатокам python/shell
« Ответ #3 : 10 Июня 2013, 11:37:59 »
Я бы сказал, что просто питоновская консоль не умеет цвета показывать. А ls вряд ли может понять, как ее запустили.
читайте тут.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Вопрос уважаемым знатокам python/shell
« Ответ #4 : 10 Июня 2013, 12:19:38 »
Я бы сказал, что просто питоновская консоль не умеет цвета показывать. А ls вряд ли может понять, как ее запустили.
OK, сказал. Но это не стало правдой.

Я бы сказал, что просто питоновская консоль не умеет цвета показывать. А ls вряд ли может понять, как ее запустили.
читайте тут.
Цвет будет если вывод команды тупо копировать на любой терминал понимающий цвета
Однако спосок файлов станет сложнее выдирать из этого ада

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Вопрос уважаемым знатокам python/shell
« Ответ #5 : 10 Июня 2013, 13:42:40 »
Да, если добавить '--color=always' и правда появляется цвет, круто, не знал.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Вопрос уважаемым знатокам python/shell
« Ответ #6 : 11 Июня 2013, 16:36:58 »
Я бы сказал, что просто питоновская консоль не умеет цвета показывать. А ls вряд ли может понять, как ее запустили.

Где-то это было...

ls может понять, сравните результаты:
Код: (bash) [Выделить]
if [[ -t 1 ]]; then echo term; else echo redir; fiи
Код: (bash) [Выделить]
if [[ -t 1 ]]; then echo term; else echo redir; fi >trash; cat trash
Естественно, не только shell-скрипт может это понять,
любая нормальная программа может  :)

Пользователь решил продолжить мысль 11 Июня 2013, 16:41:50:
... при выполнении кода из книги:

#!/usr/bin/env python
#Версия команды ls на языке Python
import subprocess
subprocess.call(["ls"," l"])

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

В свете вышесказанного делаем вывод: этот код не просто вызывает команду,
он ее выполняет, перенаправив вывод к себе, а потом вывод этот печатает сам.

Типа

Код: (bash) [Выделить]
A=`ls`; echo $A
« Последнее редактирование: 11 Июня 2013, 16:41:50 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Вопрос уважаемым знатокам python/shell
« Ответ #7 : 11 Июня 2013, 17:24:11 »
inkblack, спасибо!
Ubuntu 14.04 (Unity), MSI GE40

 

Страница сгенерирована за 0.02 секунд. Запросов: 22.