LINUX.ORG.RU
ФорумTalks

Мммм... как PowerShell со вкусом Linux

 , , ,


0

4

Так вот, по последним сводкам с фронта, Шмикрософт выпустили PoewrShell Core 6.0 которая теперь идет и под GNU/Linux (и Яблоко счастливыйОС (ц)(р)(тм))

https://betanews.com/2018/01/12/powershell-core-windows-macos-linux/

В тред приглашаются сублиматоры на PowerShell как «намного лучше єтого вашего костыльного Bash» для выяснения отношения с отрядом закапывателей. Дискач.

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

Сливаешься тут ты. В конфиг помещается интересующая информация. А то, что в sh нет ipcalc - это преимущество перед парашеллом.

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

Почему ты утверждаешь, что решение задачи не может быть решением задачи? У тебя моча в голове что ли?

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

Ты собираешься каждый раз вызывать стороннее приложение с разными параметрами?

В этом весь смысл shell - вызывать приложения с параметрами и рулить потоками данных через стандартный ввод-вывод.

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

Для доступа к «объектам» ОС и работе с ними в конечном итоге используется CreateFile и WriteFile ReadFile и IoControl. Исключение составляет только гуй.

Только на локалхосте. Самое простое: версию бинарника ты как собираешься смотреть?

Зачем в скриптах выхлоп с цветом?

Причём тут выхлоп? Ты уже вызвал ipcalc с двумя разными параметрами.

А в строки преобразовывать кто будет?

Интерпретатор.

Однострочник который в консоль скормить можно так выглядит:

Бугога:

[user@host ~]$ eval `ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '` ; echo $HostMin $HostMax

[user@host ~]$

А зачем мне решать твои задачи?

Потому что ты тут кукарекаешь, что с ООП сложнее. Давай, докажи как просто без ООП. Задача-то детсадовская.

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

Сливаешься тут ты. В конфиг помещается интересующая информация.

Ещё один кукаретик. Ну давай, покажи как легко и просто без ООП на sh получить переменные, которые потом в dhcpd.conf поместишь, имея только адрес хоста. Причём, чтобы не обкакаться, тебе придётся сделать это проще, чем

ip=`ipcalc 172.16.35.12/18`
echo $ip.subnet.host_min $ip.subnet.host_max $ip.adress $ip.netmask.long() $ip.gw
Или как Stanson шланговать будешь?

А то, что в sh нет ipcalc - это преимущество перед парашеллом.

И как же это выражается?

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

Потому что глаза и мозг есть, чтобы понять, что он распарсил только две переменных, но не все. И уже у него код сложнее ООП версии вышел. Да ещё и нерабочий. Скажи, что у тебя в мозгах, что ты этого не видишь?

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

Так и в PS нет ipcalc, если что. И ничего не мешает написать его и как коммандлет, и как shell-скрипт.

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

Только на локалхосте. Самое простое: версию бинарника ты как собираешься смотреть?

facepalm.jpg

Ты вообще понимаешь о чём речь?

Причём тут выхлоп? Ты уже вызвал ipcalc с двумя разными параметрами.

Скидка дня! Бесплатный копипаст части выхлопа ipcalc --help для идиотов!

 -n --nocolor  Don't display ANSI color codes.
 -b --nobinary Suppress the bitwise output.

Ты вообще понимаешь что происходит?

Потому что ты тут кукарекаешь, что с ООП сложнее. Давай, докажи как просто без ООП. Задача-то детсадовская.

Ты ещё не показал как просто с ООП. :)

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

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

facepalm.jpg

$ ipcalc 172.16.35.12/18
Address:   172.16.35.12         10101100.00010000.00 100011.00001100
Netmask:   255.255.192.0 = 18   11111111.11111111.11 000000.00000000
Wildcard:  0.0.63.255           00000000.00000000.00 111111.11111111
=>
Network:   172.16.0.0/18        10101100.00010000.00 000000.00000000
HostMin:   172.16.0.1           10101100.00010000.00 000000.00000001
HostMax:   172.16.63.254        10101100.00010000.00 111111.11111110
Broadcast: 172.16.63.255        10101100.00010000.00 111111.11111111
Hosts/Net: 16382                 Class B, Private Internet

$ ipcalc -b -n 172.16.35.12/18
Address:   172.16.35.12         
Netmask:   255.255.192.0 = 18   
Wildcard:  0.0.63.255           
=>
Network:   172.16.0.0/18        
HostMin:   172.16.0.1           
HostMax:   172.16.63.254        
Broadcast: 172.16.63.255        
Hosts/Net: 16382                 Class B, Private Internet

ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:'
Address:   172.16.35.12         
Netmask:   255.255.192.0 = 18   
Wildcard:  0.0.63.255           
Network:   172.16.0.0/18        
HostMin:   172.16.0.1           
HostMax:   172.16.63.254        
Broadcast: 172.16.63.255

$ ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '='
Address=   172.16.35.12         
Netmask=   255.255.192.0 = 18   
Wildcard=  0.0.63.255           
Network=   172.16.0.0/18        
HostMin=   172.16.0.1           
HostMax=   172.16.63.254        
Broadcast= 172.16.63.255  

ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '
Address=172.16.35.12
Netmask=255.255.192.0=18
Wildcard=0.0.63.255
Network=172.16.0.0/18
HostMin=172.16.0.1
HostMax=172.16.63.254
Broadcast=172.16.63.255

$ ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' ' | cut -f 1,2 -d '='
Address=172.16.35.12
Netmask=255.255.192.0
Wildcard=0.0.63.255
Network=172.16.0.0/18
HostMin=172.16.0.1
HostMax=172.16.63.254
Broadcast=172.16.63.255

и т.д.

Тут вообще ничего не надо парсить. Совсем ничего. Конвеер позволяет решать задачу в целом, а не дрочить пропертя твоих объектов по одной.

И уже у него код сложнее ООП версии вышел. Да ещё и нерабочий.

Ох уж эти сказки, ох уж эти сказочники. :) ООП головного мозга препятствует осознанию того, что есть 100500 других способов решения задач кроме ООП?

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

Ещё один кукаретик. Ну давай, покажи как легко и просто без ООП на sh получить переменные, которые потом в dhcpd.conf поместишь, имея только адрес хоста.

Ты дебил. Переменные оттуда получать нафиг не надо. Переменные при необходимости сам задам на основании того, что будет парсить shell строки ровно до того вида, который и нужен. Если внезапно у тебя в парашелле не окажется какой-то переменной, то твой подход внезапно идёт нахрен (а ты идёшь нахрен здесь и сейчас).

Или как Stanson шланговать будешь?

Шлангуешь тут ты.

И как же это выражается?

Так, что нет привязки к какому-то одному формату ввода-вывода.

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

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

Надо будет все распарсить - сделать это не проблема.

И уже у него код сложнее ООП версии вышел.

Может и сложнее, но гораздо понятнее, так как сразу ясно, откуда что берётся, и ничего под капот не прячется.

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

Ты вообще понимаешь о чём речь?

Я понимаешь, ты… пока этого не видно.

 -b --nobinary Suppress the bitwise output.

Ты смотришь от чего хелп копируешь?

$ ipcalc --help
Usage: ipcalc [OPTION...]
…
Specific info options:
  -b, --broadcast                 Display calculated broadcast address
…
  -n, --network                   Display network address
…

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

О боже, прям эталон ламерства! А kudzu у тебя на локалхосте есть? :) :) :)

Положи на место редхатовские костыли уже, и пользуй нормальный оригинальный софт. :)

У редхатовского костыля был ключик --all-info, если правильно помню, он выдавал что-то похожее на то, что выдаёт ipcalc.

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

удобнее $ip.netmask?

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

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

Так это твоя головная боль, противник объектов. В ООП мире объект передал, а там пофигу в каком виде какое приложение его на экран покажет. Объект от этого не изменится.

О боже, прям эталон ламерства…

писать скрипты с непредсказуемым поведением.

Однозначно удобнее. И понятнее.

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

И работает, в отличии от несуществующих ООП костылей.

Так мы о подходе, а не о реализации. Какой дебил будет сравнивать bash в linux и powershell под windows?

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

В ООП мире объект передал, а там пофигу в каком виде какое приложение его на экран покажет.

ООП мира не существует. Вообще. Единственная ОС, которая частично была действительно ООП - Epoc32/Symbian давно сдохла. Теперь нет ни одной ОС, в которой сущности, которыми эта ОС оперирует являются объектами.

А теперь расскажи, нахрена в оставшиеся ОС, которые по сути «всё есть файл» (да, даже винда, хоть файлы (их форматы) там в основном бинарные), пихать интерактивный шелл с ООП, который предназначен для быстрого и наглядного связывания частей ОС и программ согласно задаче?

Так мы о подходе, а не о реализации.

Смысл обсуждать подход, если реализации не существует?

Какой дебил будет сравнивать bash в linux и powershell под windows?

А в чём проблема сравнить? Два инструмента для одинаковых задач, в не особо отличающихся по структуре ОС. Одним почему-то можно делать почти что угодно, даже на «чужой» ОС, и это будет быстро, просто и удобно, а если попытаться воспользоваться другим инструментом даже на его родной ОС, то блевать будешь дальше чем видишь. Что мешает сделать вывод, что bash вполне удовлетворителен, а поверщель - эпическое говнище?

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

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

Даже в онтопике не всё есть файл, не говоря уже о родной ос PS. Живых ОС, где всё является файлом днём с огнём не найдёшь.

Касаемо последнего: ты кричишь о неюзабельности powershell, а я помню, что получив задачу я открыл ide, что с PS идёт, и за пару дней накатал решение, не зная PS до этого момента от слова «совсем», которое получилось менее лаконичное, чем на баше, но более читаемое. Из чего делаю вывод, что ты либо неосилятор, либо из детства какая-то травма мешает посмотреть объективно.

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

Даже в онтопике не всё есть файл, не говоря уже о родной ос PS. Живых ОС, где всё является файлом днём с огнём не найдёшь.

Ну и что же не является файлом в венде, кроме гуёвых сущностей?

за пару дней накатал решение, не зная PS до этого момента от слова «совсем»

Ну так продемонстрируй же это «решение». :)

ЗЫ: И почему это все любители поверщели так стесняются показать, то, что у них в итоге получилось? :) :) :) :)

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

Ну и что же не является файлом в венде, кроме гуёвых сущностей?

Процесс, подключение и много ещё чего.

Ну так продемонстрируй же это «решение». :)

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

И почему это все любители поверщели так стесняются показать, то, что у них в итоге получилось?

Потому что бесплатно тебя уму-разуму учить не желают.

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

Процесс, подключение и много ещё чего.

Бгг. И оно всё позволяет ReadFile/WriteFile (ага, даже процесс :)) и закрывается при помощи одной и той же CloseHandle. :)

а я тебе что-то демонстрировать должен?

Конечно не должен. Более того, я очень хочу чтобы ты так и не выложил свой (или чужой) поверщельный понос. Это наилучшим образом убеждает всех, что поверщель такое запредельное говно, что даже сами фанатики поверщели его стесняются. :)

Потому что бесплатно тебя уму-разуму учить не желают.

Хотеть денег за никому не нужное ненужно? Вся суть ООП фанатиков. :)

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

Ты всё не успокоишься? Синдром утёнка оказался слишком запущенным.

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

Хотеть денег за никому не нужное ненужно?

Как ты о своём образовании лихо так…

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

Не пользовался проверщелью, но что мешает без этой вашей щели программам консольным утилитам плеваться структурированными объектами в формате, например, json? Большинство консольных команд ведь не входят в bash, а являются отдельными утилитами (часть входит в состав coreutils и других пакетов, другие полностью самостоятельны, третьи являются компонентами более сложных программных продуктов). Если вам не нравится вывод, то нужно переписывать/дописывать сами команды, а не оболочку.

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

Но зачем это всё? Я даже не понимаю, как это будет работать. Ну допустим программа выбросила объект, я вызвал один из его методов. Что этот метод делает? Опять вызывает эту программу? Или же в самом объекте хранятся нужные функции.

Первое слишком запутано, второе не юниксвейно.

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

Пушкин тоже мёртв. Это не значит, что не нужно читать его произведения.

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