LINUX.ORG.RU

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

 ,


8

7

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

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

★★★★★

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

Ответ на: комментарий от kirk_johnson

man ruby DL и аналоги. Подгружай любую динамическую библиотеку и используй как тебе нравится.

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

И вся эта типизация, CamelStyle и прочее жабятина ставят крест на интерактивности.

Вообще-то наоборот, ты просто не пробовал. Типизация с автокомплитом - абсолютная киллерфича.

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

А можно пример, где Баша не хватает, и надо парсить вывод команды АВКом или Седом?

А как же:
dd if=/dev/zero of=`mount | grep " / " | awk 'BEGIN{FS=" "}{print$1}'`

Это в том смысле, что написать красивый (= неочевидный) патч Бармина на Баше затруднительно?

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

Цель была не запутать вопрошающего а дать ему простой наглядный пример. Умножать его скорби перед выходными в мои планы не входило.

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

У мелкософта уже много лет формируется платформа не Win32/64, а .NET.

Я бы Вам поверил, если в Windows RT и во всех реинкарнациях WindowsPhone .Net присутствовал. Но ведь этого нет. Так что увы - MS упустила шанс сделать свою общую экосистему отвязанную от x86 и winapi. Когда в WP оказался без .Net и когда эти балбесы неоднократно поменяли идеологию платформы - я понял, что MS не имеет будущего на мобильной платформе т.к. они сами четко не понимают чего им надо. Так и вышло. Закопана куча денег впустую.

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

А можно пример, где Баша не хватает, и надо парсить вывод команды АВКом или Седом?

А как же:
dd if=/dev/zero of=`mount | grep " / " | awk 'BEGIN{FS=" "}{print$1}'`

Это в том смысле, что написать красивый (= неочевидный) патч Бармина на Баше затруднительно?

дать ему простой наглядный пример

То есть это вы всерьез считаете, что это тот случай, когда без вызова посторонних программ не обойтись?

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

Человек освоивший, и по каким-то причинам предпочитающий АВК, написал бы:

$ awk '$3 == "/" { print $1 }' < <(mount)

а на Баше это пишется как-то так:

while read dev _on mpoint __; do
    [[ $mpoint == "/" ]] \
        && printf '%s\n' "$dev"
done < \
     <(mount)
Zmicier ★★★★★
()
Ответ на: комментарий от anonymous

Типизация с автокомплитом - абсолютная киллерфича?

ты просто не пробовал

Я, вот, попробовал. И, похоже, понял, почему ПШ «не нужен». Дело в том, что это не «шел» общего назначения. Это «шел» именно администратора именно винды(второе менее существенно, можно подставить ещё несколько програмок, если их заточить под такого рода взаимодействие).

Почему так? «Обычный» шел чаще всего соединён с конечным пользователем и интерфейсом для ввода кода, и минимум одним из интерфейсов данных(ввода или вывода), часто обими. А гомо тупо не умеет в структурированные типизированные данные. На больших программах это несущественная проблема, но их, обычно, пишут специально обученные люди, и интерфейстая часть может быть незначительной или всё равно необходимой, и для такого применения шелы не предназначены совсем. Также это не всегда проблема для «админов», источники-результаты работы которых, чаще обычного, состояния-настройки программ, которые, наоборот, хорошо умеют в структурированные типизированные данные. И для юниксовых пользователей это редко проблема - у них ввод-вывод уже почти человеческий(что может создавать сложности программам - но это же их работа, работать). А если тебе нужно самому потребить выхлоп или поставить ввод, и программа твоя - одноразовый пайплайн из 3х команд, и объекты содержат больше подробностей, чем ты готов потребить, оверхед на структурированности начинает казаться заметным.

Например, «ps x | grep ssh» ни с каким автокомплитом не будет неудобнее структурированного аналога. Хотя и даёт на выхлопе несколько мусора - человеки это отфильтровывают проще, чем при всём автокомплите написать правильную команду. И наоборот, «| format-table | out-file -encoding utf-8 -path» трудно сравнить с «>» - первое универсальнее, но в большинстве случаев второго достаточно.

Т.ч. для своих задач не самый плохой вариант, но задачи эти «ненастоящие» :)

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

«Возрождённому шеллу Борна» PowerShell не конкурент.

Анальные рабы Майкрософта, которые затёрлись среди жителей ЛОРа, это я вам говорю: «Зря стараетесь!» У подавляющей массы линуксоидов, аллергия на творения компании Майкрософт.

Пусть ваш главный индус лучше анонсирует открытие туалетов по всей Индии. А то там, антисанитария полная.

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

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

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

Тогда уж лучше

mount | awk -F " on / " 'NF==2{print$1}'
Но там ведь вопрос совсем не про это был, я написал первое что в голову пришло.

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

не стыдно?

нет. чем это лучше echo $(TMP=${FILE##*/};echo ${TMP%.*}) или echo $(basename "$FILE" .txt), при том, что переменную $FILE я не порчу? Да даже если бы портил выкинув $TMP.

Переопределение разделителя IFS тут, конечно, лишнее. Я его вставлял, чтобы получать список директорий имена которых содержат пробелы, иначе он при помещении в переменную $mydir при итерировании пробелы считались разделителем. Забыл, что сделал это именно для этого и в конкретно этом урезанном примере он не нужен.

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

команды общаются друг с другом не текстовыми потоками, а типизированными объектами

Опыт использования ActiveX их ничему не научил?

rezedent12 ☆☆☆
()

Дле тех кто не в курсе, кроме лора есть и другие новостные сайты про СПО. Читайте opennet, там есть новость про far.

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

Ещё бывает вот так: find -print0 | grep | xargs -0 -n5.

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

На пистончике же элементарно:

call(["cat"] + list(iglob('src/**/*.py', recursive=True)))
Freyr69 ★★★
()
Ответ на: комментарий от eR

пора валить на хурд, тут стало слишком тесно.

Hurd вечно в состояни беты находится. Тебе, в этой жизни его 1.0 версии не видать.

anonymous
()

Глянул в исходники и чуть не ослеп... Нахожусь в недоумении, нахрена для написания шелла нужно столько XML, XSD и джаваскрипта?

Сдается мне, что мои почти 30 лет за монитором прошли даром.

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

Причем тут ядро?
Гну окружение никуда не дели жеж.

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

Видать попал в самое яблоко, бухыхыхы. Обтекай, араб.

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

Наглядное доказательство нужности awk.

???

Тогда уж лучше, как dexpl предлагает, /proc/mounts парсить.

Я, кажется, специально оговорился, что не обсуждаю mount(8) как лучший / не лучший способ получить блочное устройство по точке монтирования. Вы́ его вывод выбрали примером, а я лишь постарался показать, что культура писания скриптов уродцами типа a=$( ... | grep ... | awk ... ) проистекают из массового неосилия ГНУ Баша. Что лично мне дико удивительно, ибо Баш — язык-то действительно весьма ограниченный — его с нуля целиком освоить за один вечер можно.

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

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

швах, длиннотред не читал, но думаю следующий шаг заслать к поттерингу идею реализовать настройкий systemd на powershell же! вот это круто будет. а потом еще ж надо заявить что coreutils это все старье и надо все срочно на js/.Net и тд перепилить. Логи то поди уже в бинарном формате хранятся, так что ...

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

Сдается мне, что мои почти 30 лет за монитором прошли даром.

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

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

нет

1. $(...) — это форк;

2. FILE="mydir/-n.txt" (!!!)

3. FILE="mydir/ foo bar.txt"

4. FILE=$'mydir/foo\n\n\nbar.txt'

Судя по рассуждениям об IFS, баш ты не знаешь вообще.

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

И это just works.

Угу, вечное переизобретение троллейбуса из буханки; задорное садомазо с пробелами, табуляцией, кавычками и прочими эскейпами; захватывающее гадание на регэкспах. М-м-м! А сколько систем похакано из-за кривых парсеров текста за эти 40 лет!

anonymous
()

оверхед на структурированности

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

Например, «ps x | grep ssh» ни с каким автокомплитом не будет неудобнее структурированного аналога.

Так в пс тебе никто не мешает работать с плейнтекстом. Но при этом ты _можешь_ работать сор структурированными данными - это очень часто это бытрсее, проще и удобнее.

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

Ну да, ну да.. Какой же линукс без дотнета? :)

да, поэтому начали с systemd, сейчас запилят в RH powershell c дотнетом, заменят coreutils, тк кто ж в 21м веке обменивается текстом, надо объектами и на js, и логи бинарные, консоль да, старье тоже, надо срочно запилить новое поделие, а потом притянуть зауши ядро, чтобы без systemd нельзя было работать, и тогда в полный путь.

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

Я не утверждал, что знаю bash o_O. Ну и что, что форк? Писать от этого нужно не больше, как и во втором случае.

IFS в данном примере вообще не нужен был и я об этом уже говорил.

Его переопределение я использовал для передачи в переменную-итератор внешнего цикла (внешнего относительно приведенного) имён директорий (имена с пробелами) в текущем каталоге взятых как вывод find с несколькими параметрами. И без переопределение IFS пробелы рассматривались как разделители. Список с / на конце можно было б получить и как ls -d, емнип, но проблема с пробелами останется, имхо. Другого способа я не нашёл.

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

Ну и что, что форк?

Медленно же. А ещё твой код ломается на приведённых мною примерах. Поэтому-то мой код и лучше, вот.

Другого способа я не нашёл.

while IFS= read -rd '' file; do
    printf '=> %s\n' "$file"
done < <(find -print0)

Работает с любыми именами файлов вообще.

anonymous
()

Скоро в репозиториях вашего любимого дистрибутива.

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

Если админишь и вин и лин сервера приходилось писать на трех-четырех разных скриптовых языках.

Или брать универсальные утилиты, позволяющие автоматизировать хоть Линукс, хоть Винду, хоть AIX. Но зачем? Лучше наколхозить ещё скриптов для ansible.

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

На структурированности нет никакого оверхеда

аналог «ps | grep» в студию.

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

Не мешает. Просто это чуть менее удобно. Да, за счёт большего удобства работы с настоящими данными. Нельзя иметь всё сразу. Одни выбрали одно, другие - другое. Я утверждаю, что в типичные для пользовательского шела задачи ближе к «обработай мне то, не знаю что». Ибо структурированные данные роботы обрабатывают лучше, и человек не нужен.

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