LINUX.ORG.RU

PowerShell открыт и доступен для Linux

 ,


8

7

Компания Microsoft анонсировала открытие исходного кода командной оболочки PowerShell под лицензией MIT и доступность под Linux. Доступны пакеты для Ubuntu и CentOS 7, а также инструкции по сборке.

>>> Подробности

★★★★★

Проверено: JB ()
Последнее исправление: cetjs2 (всего исправлений: 1)

Спасибо, но нет!

Поделюсь своим опытом.

При первом изучении ПШ не монет не понравиться, кажется все стройно и лаконично. На винде достаточно удобно работать с ним, если сравнивать со старими тулзами типа cacls и прочей ерундой с диким синтаксисом. Но вот кода пришлось нагрузить этот чей нормально по 10-15 команд в секунду через winrm начались глюки типо, команда не найдена и просто зависания. Промучались месяц, пока не попробовали поменять команды как есть, т.е. без алиасов, как в документации. Проблема оказалось именно в этом, что инангда ПШ не понимал свои алиасы и того хуже имя команды строчными буквами. После этого я что-то сложное/нагруженное не стал делать, если хотите нежданчиков.

krasoffski
()
Ответ на: Спасибо, но нет! от krasoffski

У меня не работала хеш-таблица (подробностей не помню) из-за имени которое она имела. ЕМНИП по ключу всегда возвращалось значение первой записи, а имя которое «не нравилось» содержало "-" или «_» уже не припомню точно. Индусятина

VKraft ★★
()
Ответ на: комментарий от Zmicier

культура писания скриптов уродцами типа a=$( ... | grep ... | awk ... ) проистекают из массового неосилия ГНУ Баша

мало кто хочет в это говно глубоко погружаться

его с нуля целиком освоить за один вечер можно.

сказки же ну

anonymous
()
Ответ на: комментарий от anonymous

только потом точно также придется их парсить, т.к. баш с ними работать не умеет

башу вообще пофиг и он не должен ничего уметь. Достаточно положить JSON в переменную и доставать от туда поля по имени через какую нибудь приблуду. Это всё пишется на коленке за 10 минут с перекуром, вот только нафиг никому не надо.

Или ты можешь сделать обертку вокруг баша

Зачем, если есть куча всяких tclsh и прочих питонов, которые и так это могут?

и у тебя получится павершелл

Вот именно. Вопрос - нахрен мне упал этот паврешелл, если я могу изобразить тоже самое и даже лучше на баше за 10 минут. Или просто взять питон/перл/тцл и не парить мозг?

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Естественно, речь именно о баше - встроенными фичами ps пользоваться нельзя

Просто если использовать костыли ps, то это будет функционал ps, а не баша

Давай я тебе на эмаксе покажу, дурачок. ПШ просто сосёт.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymoos

До этого единственным скриптовым кросплатформенным языком был по сути только питон.

А также perl, ruby, lua, javascript и еще десяток, которые я не вспомню.

ivlad ★★★★★
()
Ответ на: комментарий от ivlad

А также perl, ruby, lua, javascript и еще десяток, которые я не вспомню.

да да, я уже пожалел что эту чушь брякнул. Думал о своем, когда писал. В первую очередь это именно автоматизация задач системного администрирования. Куда из всего этого нормально заходит только перл. Перл хорош сам по себе (а уж в плане стабильности уделает всех прочих) но он слабее в плане если нужно чтобы его понимало и поддерживало десяток человек разной степени криворукости, знакомыми с программированием только по смутным воспоминаниям паскаля со школы.

javascript только совсем недавно (по меркам каких-нибудь цисководов) научился работать более менее одинаково на разных платформах. И у меня нет никаких гарантий и уверенности, что лет через 10 от node.js что-то останется, оно не расколится в очередной раз на десяток форков и не потеряет обратную совместимость уже через пол года. Это все не проблема для интернет-магазинов, но для поддержки стабильной работы ит инфраструктуры бизнеса это неприемлемо.

у руби какой-то инопланетный синтаксис (иногда две точечки, иногда четыре, решеточки, стрелочки, собачки, вот это вот всё). Мне сложнее редактировать на нем скрипты, не зная синтаксиса. Но можно просто считать, что как любитель питона я предвзят к руби, это у нас взаимное.

для lua модулей для игр значительно больше, чем для active directory или My/MS SQL. Пусть уж этот язык получает свою специализацию там, где хочет.

anonymoos ★★★★★
()
Последнее исправление: anonymoos (всего исправлений: 4)
Ответ на: комментарий от DonkeyHot

Во-первых ? { $_ -match pattern } можно заменить на sls pattern. Во-вторых - зачем работать с объектом как со строкой? Можно, например, вот так сделать ps | ? PM -gt 100MB. Только упоротые работают в PS с объектами (то есть где это возможно) как с текстом. А так sls (Select-String) наиболее близкий аналог grep. А ? (Where-Object) имеет куда более широкое применение, чем просто отфильтровать строки - он либо может (для простых условий) принять имя свойства объекта и условие (в моем примере имя свойства - PM, которое является алиасом для PagedMemorySize64, а условие - -gt 100MB), либо блок кода как в примере выше - $_ - это переменная с текущим объектом, -match - оператор применяющий рекэксп. Там вообще может быть произвольный блок кода возвращающий boolean.

anonymous
()
Ответ на: комментарий от anonymous

Ну и в-третьих - там где объектов нет можно работать как с текстом точно так же как в баше, никто не мешает.

anonymous
()
Ответ на: комментарий от anonymous

cat $in | sls 'step[4|9]' | sc $out

кат не нужен т.к. слс умеет работать с файлами сам, так что:

sls 'step[4|9]' $in | sc $out

anonymous
()
Ответ на: комментарий от no-such-file

Достаточно положить JSON в переменную и доставать от туда поля по имени через какую нибудь приблуду.

И это будет выглядеть как кривые костыли, потому что баш cannot into, ага. Потому оно никому и не надо - без переписывания баша не т возможности реализовать это удобным образом.

Зачем, если есть куча всяких tclsh и прочих питонов, которые и так это могут?

Они неудобны в качестве шелла

Вот именно. Вопрос - нахрен мне упал этот паврешелл, если я могу изобразить тоже самое и даже лучше на баше за 10 минут.

Потому что не можешь.

anonymous
()
Ответ на: комментарий от no-such-file

Давай я тебе на эмаксе покажу, дурачок.

Нет, давай на баше. На елиспе я и сам могу показать.

anonymous
()
Ответ на: комментарий от anonymous

Во-первых ? { $_ -match pattern } можно заменить на sls pattern.

На самом деле нельзя, т.к. в этом случае ты получишь на выхлопе строки вместо объектов и это будут совсем не те строки, которые ты ждешь:

PS C:\> ps | sls chrome

System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
System.Diagnostics.Process (chrome)
объект преобразуется через toString и инфа потеряна. Чтобы делать sls надо сперва конвертнуть нормально в строки:
PS C:\> ps | Out-String -Stream | sls chrome

    242      24    39456      46236   225     0,98    852   1 chrome                                                                                 
    240      23    31604      32032   217     0,44   1012   1 chrome                                                                                 
    223      20    23428      21444   188     0,14   1292   1 chrome                                                                                 
    224      30    82400      82852   292     8,25   1444   1 chrome                                                                                 
    231      22    24356      27656   205     0,27   1456   1 chrome                                                                                 
    223      20    21728      22328   189     0,23   1904   1 chrome                                                                                 
    230      23    39292      42272   223     1,06   2280   1 chrome                                                                                 
    383      27    41004      54824   304    19,66   3484   1 chrome                                                                                 
    231      22    28436      30348   201     2,27   3792   1 chrome                                                                                 
    223      20    23568      21868   189     0,14   3828   1 chrome                                                                                 
    219      10     1640       6232    78     0,03   3976   1 chrome                                                                                 
   1970      60   124688     169164   492    35,83   4724   1 chrome                                                                                 
    131       9     1412       7512    79     0,02   4828   1 chrome                                                                                 
    223      21    23924      22372   194     0,14   5408   1 chrome                                                                                 
    268      34    97056     126524   329    38,63   6316   1 chrome                                                                                 
и вот после out-string -stream можно спокойно пидорасить как в баше. но вообще это костыли офк и нормальные люди работают с объектами и where { ... }, а sls (прямой аналог grep) используют тогда, когда строки идут на вход бай дезигн (например, если читаем файл).

anonymous
()
Ответ на: комментарий от anonymous

Вопрос - нахрен мне упал этот паврешелл

Потому что не можешь

Ну т.к. я не пользуюсь ПШ, значит могу. Давай, отрицай реальность.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Ну т.к. я не пользуюсь ПШ, значит могу.

Каким образом из первого следует второе? У тебя явные проблемы с логикой.

А вообще ты легко можешь доказать свой тезис, предоставив свой написанный за 10 минут костыль на баше.

anonymous
()
Ответ на: комментарий от anonymous

Каким образом из первого следует второе? У тебя явные проблемы с логикой.

Т.е. серъёзно считаешь, что я или кто-то не пользуется ПШ, только потому, что нет возможности использовать этот величайший в истории инструмент? Бвахахаха.

А вообще ты легко можешь доказать свой тезис

Зачем?

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

grep - тоже мусор и его точно столько же (4 символа)

grep - это не мусор, а фильтр, типа -match у субжа. и это одно слово. $_ можно считать одним словом, оно часто встречается. остальное - отдельные синтаксические единицы, 4-5 штук в дополнение только 3м общим, и, похоже, минимальным «ps» «|» «grep-match».

ps pattern

ps | grep ищёт всё, что угодно - номера, владельцы, аргументы, размеры для крепких регекспами.

определить себе командлет

Зачем из поверШ делать другойШ, если последних уже есть десятки? Любовь к продуктам МС - но это к медикам. Суть в том, что «one size fits all» на самом деле «does not».

если ты в баше помнишь что такое grep то в чем проблема помнить в пс

На самом деле нужно определять не «grep» а «|». Грубо говоря, в неПШах в конец каждой команды встроен неявный «| format-посвоему». В ПШе это только перед терминалом(похоже). Т.ч. если человеку нужно что-то отфильтровать, поправить, whatewer, приходится восстанавливать структуру данных в мозгах. Для человека, пишущего программы, это полезно и привычно. Для человека, которому нужно данные посмотреть - потеря времени.

То есть, пока правильным ответом на «у нас что-то стряслось!» будет «посмотрю» а не «напишу программу для такого случая», ПШ решает не ту проблему.

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

Не существует ни одной пользовательской задачи, которая решается через удобнее, чем мышкой

Хватит оспаривать тобою же выдуманный аргумент.

DonkeyHot ★★★★★
()

Тред не читал, но скажите мне только одно

можно ли из поверШ из линукса, к примеру, добавить в мсДНС на домен контроллере, скажем, А-запись? Сейчас это делается двойными костылями у меня. На линуксе веб интерфейс к bind (named) и заодно к мсДНС. К мсДНС делается ssh на винду и там запускается свормированная на линуксе команда поверШ, управляющая мсДНС'ом.

Хотелось бы убрать промежуточную винду

anonymous
()
Ответ на: комментарий от anonymous

Можно, например, вот так сделать

Можно. И, даже, удобно, и даже в большинстве случаев. Кроме одного: когда ...

работать с объектом как со строкой

... проще. Я утверждаю, что это почти всегда, когда stdin/stdout находятся недалеко от конечного пользователя, т.е. «почти всегда». Человеку трудно вспоминать, что в объекте «А» интересное ему поле называется «Б», оно типа «С», для чего лучше всего подходит оператор "-D", формат второго аргумента котогого «%E», т.ч. в простых случаях можно писать «get-A | ? B -D %E | format-table -property F».(простите мой пс).

Сравни это с «текстовым» workflow: найти текст, содержащий «E», и вырезать Nю колонку.

IMO очевидно, что когда удобнее.

DonkeyHot ★★★★★
()
Ответ на: комментарий от A-234

Как раз наоборот, объекты более универсальны. Строка — частный случай объекта, но объект — не частный случай строки. При всём «патриотизме» по отношению к линукс, я не могу не признать, что в PowerShell в теории более правильный подход, и лет через 20 все придём к нему (если, конечно, никто не испортит малину неправильной реализацией).

sasha1024
()
Ответ на: комментарий от A-234

Лапша, которую Вы взамен предложили, намного хуже читается чем та связка.

«Лапша»? Вы уже что-то позабыли, макароны по-флотски из шелла Борна, Грепа и АВКа были у вас, вот такие:

dd if=/dev/zero of=`mount | grep " / " | awk 'BEGIN{FS=" "}{print$1}'`

Вы ведь даже работающий пример привести не осилили

Работающий пример чего́? Патча Бармина? Все настолько плохо, что вы не в силах заменить вывод переменной на dd? Хорошо, держите, плюс я его немножко допишу, а вы предложите, как переписать уродца, чтоб он делал то же самое:

while read -r dev _on mpoint __; do
    case "$mpoint" in
        '/')
            dd if=/dev/zero of="$dev"
            ;;
        '/home')
            dd if=/dev/urandom of="$dev"
            ;;
    esac
done < \
     <(mount)

И да, вы не подскажете, зачем вы здесь используете dd(1)?

Zmicier ★★★★★
()
Ответ на: комментарий от anonymous

культура писания скриптов уродцами типа a=$( ... | grep ... | awk ... ) проистекают из массового неосилия ГНУ Баша

мало кто хочет в это говно глубоко погружаться

И это печально. Не подходили бы у нему вообще — было бы лучше.

его с нуля целиком освоить за один вечер можно.

сказки же ну

При условии, что человек в принципе писать программы умеет (то есть Баш не первый его язык)? По-моему вполне реально — достаточно прочитать прилагаемое справочное руководство («Bash Reference Guide») для понимания того, что в языке есть, и «Bash Pitfalls» для понимания, чего в нем нет. Повторюсь — он же край какой примитивный.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Т.е. серъёзно считаешь, что я или кто-то не пользуется ПШ, только потому, что нет возможности использовать этот величайший в истории инструмент?

С чего ты взял? Что ты вообще за чушь несешь в последних постах?

anonymous
()
Ответ на: комментарий от DonkeyHot

grep - это не мусор, а фильтр, типа -match у субжа. и это одно слово. $_ можно считать одним словом, оно часто встречается. остальное - отдельные синтаксические единицы, 4-5 штук в дополнение только 3м общим, и, похоже, минимальным «ps» «|» «grep-match».

Аналог грепа - это слс, он работает также и будет тот же результат. Разница тут не в грепе, а в самом пс. Если ты из павершела дернешь обычный линуксовый пс, в чем проблем нет, то можешь спокойно писать ps | sls patt вместо ps | grep patt, т.к. линуксовый пс дает выхлоп в виде плейнтекста и это будет удобнее в 10% задач. Если же ты хочешь работать в объектами, что удобно в остальных 90% задач, то используешь ps из павершела, который возвращает объекты.

ps | grep ищёт всё, что угодно - номера, владельцы, аргументы, размеры для крепких регекспами.

Если предикат для поиска чуть сложнее обычного регекспа, то это уже не будет ps | grep patt, это будет невнятная write-only портянка. Я же предложил задачу - распарси башем результат пса, выбрав процессы с приоритетом больше 7, а потом посчитай средний workingset для топ-5 процессов с максимальным workingset

Зачем из поверШ делать другойШ, если последних уже есть десятки?

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

Да, есть десятки шеллов, но они говно вроде баша.

На самом деле нужно определять не «grep» а «|».

Давай ты не будешь рассуждать о том, чего не понимаешь?

Т.ч. если человеку нужно что-то отфильтровать, поправить, whatewer, приходится восстанавливать структуру данных в мозгах.

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

Человека, который никогда не работал с павершеллом можно посадить за терминал, объяснить работу нескольких командлетов (в самом общем виде, типа: «ps возвращает список процессов») и он спокойно сможет решить вышеописанную задачу за время порядка минут.

В случае линукса тебе придется внимательно прочитать мануалы для ps/grep/awk, разбирать конкретный вывод и дебажить полдня полученное говно.

anonymous
()
Ответ на: комментарий от anonymous

объяснить работу нескольких командлетов (в самом общем виде, типа: «ps возвращает список процессов») и он спокойно сможет решить вышеописанную задачу за время порядка минут.

А потом окажется, что

Но вот кода пришлось нагрузить этот чей нормально по 10-15 команд в секунду через winrm начались глюки типо, команда не найдена и просто зависания. Промучались месяц, пока не попробовали поменять команды как есть, т.е. без алиасов, как в документации. Проблема оказалось именно в этом, что инангда ПШ не понимал свои алиасы и того хуже имя команды строчными буквами. После этого я что-то сложное/нагруженное не стал делать, если хотите нежданчиков.

У меня не работала хеш-таблица (подробностей не помню) из-за имени которое она имела. ЕМНИП по ключу всегда возвращалось значение первой записи, а имя которое «не нравилось» содержало "-" или «_» уже не припомню точно. Индусятина

В случае линукса тебе придется внимательно прочитать мануалы для ps/grep/awk

Или просто написать все за пять минут на питоне.

Freyr69 ★★★
()
Ответ на: комментарий от DonkeyHot

Кроме одного: когда ...
работать с объектом как со строкой
... проще.

То есть практически никогда.

Сравни это с «текстовым» workflow: найти текст, содержащий «E», и вырезать Nю колонку.

Каким образом ты догадаешься, что тебе надо вырезать именно нную колонку? Если я хочу получить приоритет процесса в павершелле, то я просто пишу ps | % {$_. и вижу список доступных полей, из которого выбираю нужное и получаю ps | % { $_.BasePriority}. Затраты времени - порядка секунд, при этом я даже вообще не в курсе как работает пс, какова структура возвращаемых объектов (я даже не знал, что у процесса есть такое поле) и выхлопа этой комманды и т.д., я только знаю что пс возвращает список процессов (как-то, мне плевать как именно), больше ничего мне знать не требуется. Что мне требуется сделать в случае баша? Изучить формат вывода пс, посмотреть какая именно колонка при каких параметрах пс дает мне нужные данные и потом писать интуитивно непонятный и нечитабельный код вроде «get 4 | ? 10 -3 %2 | format-table 1» Что это за числа? что они все значат? Как мне потом, читая этот код, догадаться, что он третья колонка - это именно приоритет процесса, а не тчо-то иное?

anonymous
()
Ответ на: комментарий от Freyr69

А потом окажется, что

Не окажется.

Или просто написать все за пять минут на питоне.

Можно и так, но пока ты будешь запускать свой питон, я уже закончу со скриптом на пс.

anonymous
()
Ответ на: комментарий от anonymous

С чего ты взял?

Т.е. ты этого не утверждал? Ну ок, расскажи, что ты имел в виду когда сказал:

Потому что не можешь

Я не могу что?

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Я не могу что?

У тебя проблемы с восприятием текстовой информации? Не можешь написать на баше сколько-нибудь удобный костыль для работы со структурированными данными.

anonymous
()
Ответ на: комментарий от anonymous

Не можешь написать на баше сколько-нибудь удобный костыль для работы со структурированными данными

Зачем его писать, если он уже есть и называется jq?

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Можно и так, но пока ты будешь запускать свой питон, я уже закончу со скриптом на пс.

Пока дуднет запустится и прогреется, и ты начнешь писать скрипт, скрипт на питуне уже будет написан, оттестирован и запущен.

Freyr69 ★★★
()
Ответ на: комментарий от Freyr69

Пока дуднет запустится и прогреется, и ты начнешь писать скрипт, скрипт на питуне уже будет написан, оттестирован и запущен.

запускается меньше чем за полсекунды, хз

anonymous
()
Ответ на: комментарий от Zmicier

И это печально.

печально, что у людей есть чувство прекрасного и нет желания жрать говно?

Не подходили бы у нему вообще — было бы лучше.

Бог миловал, писать на нем почти не приходится

При условии, что человек в принципе писать программы умеет (то есть Баш не первый его язык)? По-моему вполне реально — достаточно прочитать прилагаемое справочное руководство («Bash Reference Guide») для понимания того, что в языке есть, и «Bash Pitfalls» для понимания, чего в нем нет. Повторюсь — он же край какой примитивный.

и нафига он такой корявый и примитивный нужен, когда есть python или сабж?

anonymous
()
Ответ на: комментарий от no-such-file

Зачем его писать

Откуда я знаю, зачем? Это у тебя надо спросить. Ты сказал, что за 10 минут на коленке сможешь. Так вот - не сможешь. Ни за 10 минут, ни в принципе.

, если он уже есть и называется jq

jq указанных проблем не решает. И даже не пытается решать. Это совершенно другой инструмент для решения совершенно других задач - он всего лишь позволяет делать запросы к джсон данным.

anonymous
()
Ответ на: комментарий от anonymous

jq указанных проблем не решает

Каких именно? Ты просил «костыль для работы со структурированными данными». Тебе его дали. Что ещё?

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Ну так в сообщении, на которое я отвечал дали ? { $_ -match pattern }, которое, если мне память не изменяет тоже не сработает без нормального преобразования в строки. Имел в виду, что если фильтровать строки, то sls больше подходит, а ? так применять - из пушки по воробьям. Но поскольку ps отдает нормальные объекты (тк является лишь алиасом для командлета), то извращаться со строками не нужно.

anonymous
()
Ответ на: комментарий от anonymous

Я же предложил задачу - распарси башем результат пса, выбрав процессы с приоритетом больше 7, а потом посчитай средний workingset для топ-5 процессов с максимальным workingset

Пардон, а что такое workingset, можно название поля, как его поймет ps(1)? В любом случае — задача элементарнейшая.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Каких именно? Ты просил «костыль для работы со структурированными данными». Тебе его дали. Что ещё?

jq не предназначен для работы со структурированными данными, он позволяет только делать запросы к жсону, и это _все_. Больше он ничего не позволяет.

anonymous
()
Ответ на: комментарий от Zmicier

Пардон, а что такое workingset, можно название поля, как его поймет ps(1)?

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

anonymous
()
Ответ на: комментарий от Zmicier

А, там кастрированный вывод, все десяток полей (по сравнению с более чем сотней в павершелле, лол). Ну пусть это будет vmsize

anonymous
()
Ответ на: комментарий от anonymous

мало кто хочет в это говно глубоко погружаться

И это печально. Не подходили бы у нему вообще — было бы лучше.

печально, что у людей есть чувство прекрасного и нет желания жрать говно?

Печально, что нашлось достаточное количество людей, которые начали писать, не подумав чуть-чуть сперва поучиться писать, и ожидаемо написали такие кучи говна на ГНУ Баше, что заложили целую культуру. И теперь даже человеку, что желает делать все по уму, приходиться через них продираться, воспитывая у себя не чувство прекрасного, а чувство руки на лице.

и нафига [Баш] такой примитивный нужен, когда есть python или сабж?

Во-первых, странно слышать такой вопрос — докладываю, если что, что когда появился ГНУ Баш, сабжа не было еще и в помине, да и Питон, кажется, был только в проектах, а услышат о нем еще только лет через эннадцать.

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

Zmicier ★★★★★
()
Ответ на: комментарий от anonymous

Ну так в сообщении, на которое я отвечал дали ? { $_ -match pattern }, которое, если мне память не изменяет тоже не сработает без нормального преобразования в строки.

Ну, вообще сработает, т.к. командлет потом вернет именно объекты (преобразование к строке будет только внутри предиката). Конечно, если в паттерне будет кусок «System.Diagnostics.Process», то тогда получится фейл, т.к. выведет все процессы (т.к. указанная строка будет везде). С другой тсороны в линуксе на подобные баги никто внимания не обращает, лол.

А вообще, конечно, лучше писать ? {$_.Name -match ...} и не выебываться.

anonymous
()
Ответ на: комментарий от Zmicier

Печально, что нашлось достаточное количество людей, которые начали писать, не подумав чуть-чуть сперва поучиться писать, и ожидаемо написали такие кучи говна на ГНУ Баше, что заложили целую культуру. И теперь даже человеку, что желает делать все по уму, приходиться через них продираться, воспитывая у себя не чувство прекрасного, а чувство руки на лице.

баш позволяет так писать

Во-первых, странно слышать такой вопрос — докладываю, если что, что когда появился ГНУ Баш, сабжа не было еще и в помине, да и Питон, кажется, был только в проектах, а услышат о нем еще только лет через эннадцать.

какая разница как оно было в лохматых годах? а ты чего корявый опустил? баш не корявый по-твоему?

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

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

anonymous
()
Ответ на: комментарий от matumba

Мы все помним тактику MS по вытеснению конкурентов. Это первый, но робкий шаг.

deterok ★★★★★
()
Ответ на: комментарий от anonymous

Не уверен, что в Linux вообще можно получить WSS.

Да что это такое, вы можете по-русски об’яснить? Виртуальная память, используемая процессом и всеми разделяемыми библиотеками, что ли? Так VSZ — это именно это и есть.

Zmicier ★★★★★
()
Ответ на: комментарий от anonymous

А, да, вы ожидаете, что я вам напишу решение для вашей задачки?

Хорошо, держите:

#!/bin/bash

while read pri vsize rest; do
    (( pri > 7 )) || continue
    printf '%s\n' "$rest"
    if (( ++i <= 5 )); then
        (( vsize_sum += vsize ))
    fi
done < \
     <(ps h -e -o pri,vsize,pid,cmd --sort -vsize)

echo
printf 'Avg vsize of top 5 procs with pri > 7: %d\n' $(( vsize_sum / 5 ))

Я правда не понял смысла брать только топ-5 из тех процессов, у каких приоритет больше семи, но то как вам удобнее.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Это сумма выделенных для процесса физических страниц. Я же выше сказал, не парься, пусть будет vmsize. Ну или любой другой подобный показатель - это не так важно, мы же логику скрипта хотим посомтреть, а как там столбец называется - неважно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.