2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3  След.
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 11:52 
EminentVictorians в сообщении #1720235 писал(а):
Это интересно. То есть если я, допустим, знаю питон, я могу администрировать линукс вообще без баша? А с бинутилитами как? С ними или без них?

Не знаю, я администрированием занимаюсь только если припрет и чаще всего это ограничивается установкой пакетов :D
Из скрипта на питоне можно вызывать все те же команды линукса, если надо, и получать результаты выполнения, если надо.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 12:31 
waxtep в сообщении #1720237 писал(а):
Баш - бери в руки и е...!
Цитата:
NAME=value
NAME= value
NAME = value

Первое присвоит переменной NAME значение value.
Второе присвоит NAME пустое значение и вызывает value.
Третье вызовет команду NAME с аргументами = и value.
https://habr.com/ru/companies/timeweb/articles/1007538/
Вы точно этого хотите? :lol1:


Вай какая красота!! :D
waxtep, спасибо, вы прямо в точку попали!

wrest в сообщении #1720232 писал(а):
Только по пути или с поддирректориями? Или с поддиректориями и их поддиректориями? :D А если с поддиректориями, то в имена файлов поддиректории включать? А разрешения включать? А размер файла включать? В байтах или человекочитаемый (с множителяи K,M,G) ? Сортировать надо? По алфавиту или по размеру?
Вот, это же только подтверждает мою мысль. Когда ls просто бинарник, про него ничего не понять, в лучшем случае надеяться на адекватность ман страницы. А была бы функцией (в языке с нормальной системой типов), можно было бы спросить интерпретатор, что это за функция и как она работает.
Код:
:t ls

Код:
ls :: PathToDirectory -> [File]


А потом спросим его что такое PathToDirectory:
Код:
:i PathToDirectory


И он с радостью расскажет что-то типа
Код:
data PathToDirectory = WholePath | RelativePath where
                                                WholePath = (тут какое-то определение того, что такое полный путь к файлу)
                                                RelativePath = (тут определение что такое относительный путь)


(Это наверняка чуть-чуть не так пишется, но для донесения мысли вполне сойдет. Я пока с типами в хаскеле работать не умею)

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 13:02 
Аватара пользователя
EminentVictorians в сообщении #1720244 писал(а):
Когда ls просто бинарник, про него ничего не понять, в лучшем случае надеяться на адекватность ман страницы

А --help не пробовали? :mrgreen:

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 13:04 
EminentVictorians в сообщении #1720244 писал(а):
Вай какая красота!
Ну надо же, язык программирования делает то, что от него хочет программист... Это никуда не годится. /сар
EminentVictorians в сообщении #1720244 писал(а):
А была бы функцией (в языке с нормальной системой типов), можно было бы спросить интерпретатор
Спросите пожалуйста у интерпретатора Rust (раз уж нужен язык непременно с нормальной системой типов), что делает функция, ну например, Option::ok_or_else.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 13:58 
EminentVictorians в сообщении #1720244 писал(а):
А была бы функцией (в языке с нормальной системой типов), можно было бы спросить интерпретатор, что это за функция и как она работает.

Если бы да кабы... Вы по-русски свободно говорите? Склонения/спряжения часто путаете? А кому-то язык кажется нелогичным и сложным. То ли дело -- китайский :D

Повторю ещё раз: теперь у нас есть генеративный ИИ, который напишет команду для командной строки за вас. Успех конечно не 100% гарантируется, но в целом жить можно. С обычными языками тоже так : в яндекс-браузере вы можете слушать ролик на ютуб на русском, если там оригинальный язык например английский. И даже тембр голоса озвучки может быть похож.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 14:20 
warlock66613 в сообщении #1720238 писал(а):
Вам видимо нужна NixOS или Guix.
Функциональный язык сборки, декларативное конфигурирование системы, здорово, мне нравится. Да, это определенно очень близко к тому, что я хочу. Я только не до конца пока понял, этот Nix язык используется только для управления пакетами или на нем вообще можно всю систему администрировать, не прикасаясь к bash?


warlock66613 в сообщении #1720249 писал(а):
Ну надо же, язык программирования делает то, что от него хочет программист... Это никуда не годится. /сар
А вот эту часть не понял. Вы же сами когда-то говорили, что мутабельность без явных на то причин подозрительна (по крайней мере я так понял, поправьте если ненароком вложил не тот смысл). Bash - это императивный язык. Там все мутабельно (и это не самая большая беда, по сравнению с тем, что я прочитал сегодня в той статье с хабра, которую выше выложили).

Я, если честно, вообще не понимаю, зачем языку сценариев быть императивным. Зачем нужны циклы в баш? Циклы - это же низкоуровневая штука. Я могу понять, если речь идет про полноценные низкоуровневые языки и пишут какие-то специальные программы, где очень важна производительность. Тут да - можно за счет мутабельных структур данных выиграть производительность. Но в баше то на кой оно нужно? Администрировать систему надо в декларативном стиле, без всяких циклов, мутабельных переменных, состояния и т.д.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 14:25 
Аватара пользователя
EminentVictorians
А что Вы вообще понимаете под "администрированием системы"?
EminentVictorians в сообщении #1720229 писал(а):
какое-нибудь типизированное лямбда исчисление под капотом
Unix philosophy писал(а):
Write programs to handle text streams, because that is a universal interface.

Собственно powershell - попытка сделать типизированный шелл. Получилось ИМХО так себе.
Шелл нужен для некоторого ограниченного набора задач, на которых типизация создает больше проблем, чем решает.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 14:47 
mihaild в сообщении #1720255 писал(а):
А что Вы вообще понимаете под "администрированием системы"?
Да вроде ничего необычного: управлять файловой системой, сетью, процессами, дисками и т.д. Я же писал, как вижу взаимодействие с коммандой ls (чтобы она была просто легкой функцией, без параметров, с понятной типовой сигнатурой, чтобы можно было спрашивать интерпретатор про её типы). В общем, вместо одной комманды с 50 параметрами, иметь много атомарных функций, которые можно легко композировать друг с другом так как мне надо.

Цитата:
Write programs to handle text streams, because that is a universal interface.
Да, я слышал про это. По-моему, это очень плохая философия.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 16:16 
Аватара пользователя
EminentVictorians в сообщении #1720256 писал(а):
В общем, вместо одной комманды с 50 параметрами, иметь много атомарных функций

И чем же тысячи атомарных функций лучше одной с парой десятков параметров?

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 16:23 
Geen в сообщении #1720265 писал(а):
И чем же тысячи атомарных функций лучше одной с парой десятков параметров?
Делают язык более консистентным, предсказуемым и простым.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 17:14 
EminentVictorians в сообщении #1720254 писал(а):
Администрировать систему надо

Вы это повторяете с начала темы. В качестве примера "администрирования" привели задачу поблочного копирования образа диска на флешку.
Вы жалуетесь не венду (где автор - корпорация, т.е. управляемая организация) что там нужны сторонние программы типа rufus, вы жалуетесь на *nix что в стане  opensource, оказывается, кто в лес а кто по дрова, а не все в одну струнку.
Говоря парой слов, "Жизнь - боль". Ну да.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 17:16 
EminentVictorians в сообщении #1720254 писал(а):
Вы же сами когда-то говорили, что мутабельность без явных на то причин подозрительна
Ну да. Я бы не стал писать серьёзную программу на shell script. (Я собственно пробовал и результат ужасен. Пришлось переписать на Питон.) Но для однострочников и даже чуть побольше он идеален. Скрипты — это не настоящие программы и требования к ним другие. А когда этого не понимают, получается инопланетный PowerShell, с которым единственный рабочий метод — нагуглить, скопировать и вставить.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 17:38 
EminentVictorians в сообщении #1720216 писал(а):
люди говорят о bash как о простом языке
Так bash это не язык программирования.
Это командная оболочка, на что намекает "sh" в конце (что значит "shell").
В таких оболочках давно есть возможность использовать скрипты. Изначально, скрипт - это последовательность команд записанная в файл, так чтобы эту полследовательность можно было выполнить не набирая каждую команду по отдельности. Потом уже добавили всякие удобства, чтобы в таких скриптах можно было что-то выполнять условно (по "if") или делать циклы.
Но синтакс так и остаётся синтаксом командной оболочки.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 18:03 
wrest в сообщении #1720272 писал(а):
Вы это повторяете с начала темы. В качестве примера "администрирования" привели задачу поблочного копирования образа диска на флешку.
Ну лично я считаю, что это вполне себе задача системного администрирования, но могу другой пример приведу. Я хочу посмотреть активные процессы системы и выбрать принадлежащие нужному пользователю user. Можно сделать так: ps aux | grep user. Тут всего 5 объектов, а проблем море. Нет гарантий, что выведутся в точности процессы пользователя user, могут вывестись дополнительные левые процесс, где-то в названии которых затесался "user" (например, в каком-нибудь пути типа .../user/...). Ладно, если просто вывести, а если с ними потом что-то еще делать? Глазами часто все не отсмотришь, значит может быть проблема (например, можно случайно убить не тот процесс или какое-нибудь разрешение не то дать и т.д.). Да, есть способ через флаг -u, но это тоже плохой способ (примерно по тем же причинам, почему в математике считается плохим тоном расширять систему аксиом утверждениями, которые легко могут быть веведены из меньшего подмножества). А были бы типы - можно было бы делать решение в духе первого способа и с гарантиями безопасности в духе второго.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 18:05 
Аватара пользователя
EminentVictorians в сообщении #1720216 писал(а):
и решил я попробовать линукс

Уважаемый EminentVictorians

По собственному опыту скажу, что переход с Windows на Linux поначалу может быть психологически болезненным.
Я несколько раз возвращался назад, придумывая оправдания: нет нужного ПО, не могу играть в какую-то игру, или же мое железо не поддерживается.

Но ведь я тыжпрограммист, и семь лет назад набрался решимости - и на новый компьютер установил Ubuntu! Одну ОС. Никакой второй системы.
Чем дальше, тем больше "Wow" и меньше "WTF".

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

Также посоветовал бы посетить интересный репозиторий github.com/ibraheemdev/modern-unix

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

EminentVictorians в сообщении #1720279 писал(а):
Я хочу посмотреть активные процессы системы и выбрать принадлежащие нужному пользователю user

Для этого есть htop

 
 
 [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group