2014 dxdy logo

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

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




На страницу 1, 2, 3  След.
 
 Bash - очень сложный язык
Сообщение15.03.2026, 00:38 
Я всегда был и остаюсь полным нубом во всем, что связано с компьютерами, поэтому сильно не издевайтесь. Всю жизнь я пользовался виндовз, но с ней у меня были одни сплошные проблемы: постоянно надо искать какие-то программы на торрентах, какие-то патчи, таблетки, на любой чих нужна специальная программа, все проприетарное, куча вирусов, какие-то обновления возникающие непонятно откуда и непонятно когда. В общем, это все меня максимально заколебало и решил я попробовать линукс.

Соответственно, стал вникать в администрование и баш. Что меня очень удивило (и о чем я и хотел бы поговорить) - это огромная сложность баша (и самого процесса администрирования). Bash - это буквально самая сложная вещь, которую я когда-либо изучал в жизни. Но беда в том, что это плохая сложность. Она вытекает не из сложности концепций, а из случайности и неконсистентности буквально всего подряд: синтаксиса, бинутилит, флагов, ман страниц... Я почитал форумы и вообще перестал что-либо понимать: люди говорят о bash как о простом языке, что, мол, на нем легко писать, что большинство людей считают его удобным и т.д.

Мне интересно, это у меня одного впечатление от bash как от продукта с крайне плохим дизайном?

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 00:47 
Аватара пользователя
bash предназначен для некоторых очень специфических задач. Я бы сказал, что ошибка - писать на нём скрипты длинее нескольких строчек.

А еще не надо смешивать саму оболочку и gnu tools.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 01:45 
EminentVictorians
Я бы не сказал, что язык командной строки линукс как-то радикально отличается от "классического" (который не powershell) языка командной строки виндовс. Просто в виндовс не положили все эти grep-ы, sed-ы, cat-ы и проч.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 09:20 
mihaild в сообщении #1720218 писал(а):
bash предназначен для некоторых очень специфических задач.
Я понимаю так, что по сути для одной большой задачи - администрирования той юникс подобной операционной системы, на которую его портировали (т.е. в 95% случаев линукс).

wrest в сообщении #1720220 писал(а):
Я бы не сказал, что язык командной строки линукс как-то радикально отличается от "классического" (который не powershell) языка командной строки виндовс.
Мне это мало о чем говорит, я даже powershell не использовал никогда.

wrest в сообщении #1720220 писал(а):
Просто в виндовс не положили все эти grep-ы, sed-ы, cat-ы и проч.
Вот, кстати, хорошо что речь зашла про эти утилиты. Я первоначально на что надеялся: что мне дадут какой-нибудь DSL, ну и я буду тихонько писать на нем то, что мне надо. То есть надо, мне, допустим, взять первые 5 элементов из списка [e1, e2, e3, e4, e5, e6, e7], я и напишу что-то типа take 5 [e1, e2, e3, e4, e5, e6, e7]. Другими словами, я думал, что в моем распоряжении будет много легоньких функций типа take, которые я буду применять к аргументам, брать их композиции и т.д. А оказалось, что вместо таких функций, в bash - какие-то раздутые бинарники на десятки и сотни килобайт, с кучей непонятного функционала. Мне вообще сама идея вызывать бинарники ради базовых операций кажется каким-то безумием.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 09:45 
EminentVictorians в сообщении #1720223 писал(а):
Мне вообще сама идея вызывать бинарники ради базовых операций кажется каким-то безумием.

Тогда возвращайтесь на Windows, ибо "Unix Way" (погуглите) не для вас.
Bash -- это не язык программирования "для чайников", это средство автоматизации запуска "бинарников" и передачи результата работы одного "бинарника" другому.
Сейчас, впрочем, к вашим услугам есть генеративный ИИ - спрашивайте у ИИ на естественном языке, и оно вам напишет на "безумном" bash-е что вам надо.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 09:52 
Аватара пользователя
EminentVictorians в сообщении #1720223 писал(а):
Мне вообще сама идея вызывать бинарники ради базовых операций кажется каким-то безумием.

Попробуйте воспользоваться консолью браузера Chrome. Там есть встроенный JavaScript. Может так будет проще начать программировать.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 09:56 
EminentVictorians в сообщении #1720223 писал(а):
Мне это мало о чем говорит, я даже powershell не использовал никогда.

Ещё непонятно тогда, зачем вам знать о том , что bash существует. Не используйте.

В общем, подумайте над постановкой вопроса: чего вы хотите от персонального компьютера?

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 10:09 
EminentVictorians
Я не пользовался много башем, максимум писал маленькие скрипты на несколько строк. У меня такое же впечатление создалось, какая то мешанина, в которой без бутылки не разберешься. В общем, желания углубляться не возникло.
Попробуйте питон. Пишу на нём небольшие скрипты, намного все понятнее.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 10:29 
wrest в сообщении #1720224 писал(а):
ибо "Unix Way" (погуглите) не для вас.
Ну вот открыл я ман страницу команды ls. Там пол сотни ключей. Разве это юникс вэй? Unix Way был бы, если бы была просто ls, воспринимаемая как функция. Я бы взял её, написал бы в интерпретатор что-то типа :t ls (т.е. попросил бы интерпретатор дать мне тип функции ls), он бы мне ответил что-то типа
Код:
ls :: PathToDirectory -> [File]
то есть ls берет путь к директории и выдает список её содержимого. Вместо ls -i (т.е. ключа i, нужного чтобы иноды выводить), мне хотелось бы, чтобы было как-то так:
Код:
map (\x -> inode x) (ls path)
Т.е. берем путь path, кидаем его в ls, она выдает список файлов, а дальше мапаем этот список на другой список из инодов. Преобразование имени файла в его инод должно делаться не каким-то непонятным ключом -i, а явной функцией inode. Или например хочу я посчитать вывод команды ls. Я пишу так: ls /bin | wc -l. То есть беру вывод команды ls и кидаю его по пайпу в какой-то непонятный бинарник, да еще и с ключом. А хотелось бы просто написать
Код:
length $ ls /bin
, где
Код:
length :: [a] -> Int

wrest в сообщении #1720226 писал(а):
В общем, подумайте над постановкой вопроса: чего вы хотите от персонального компьютера?
Хочу операционную систему, которую я смог бы легко администрировать под свои нужды. Для этого мне нужен формальный язык с очень простой основой (ну там я не знаю, какое-нибудь типизированное лямбда исчисление под капотом, а весь язык - просто надстройка над этим очень простым фундаментом). Чтобы вместо сложных бинарников с кучей ключей были бы более примитивные и легкие функции, которые делали бы очень маленькие и очень понятные действия.

По-моему, в моем подходе unix way-a гораздо больше, чем в традиционном линукс+bash.

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

Это как? Вы не могли бы пояснить конкретным примером?

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 10:51 
EminentVictorians в сообщении #1720229 писал(а):
Ну вот открыл я ман страницу команды ls. Там пол сотни ключей. Разве это юникс вэй?

Именно.
EminentVictorians в сообщении #1720229 писал(а):
Хочу операционную систему, которую я смог бы легко администрировать под свои нужды.

Это мне непонятно. Что вам там надо "администрировать" в операционной системе? В чём состоит это администрирование, требующее программирования?

-- 15.03.2026, 11:02 --

EminentVictorians в сообщении #1720229 писал(а):
Т.е. берем путь path, кидаем его в ls, она выдает список файлов

Только по пути или с поддирректориями? Или с поддиректориями и их поддиректориями? :D А если с поддиректориями, то в имена файлов поддиректории включать? А разрешения включать? А размер файла включать? В байтах или человекочитаемый (с множителяи K,M,G) ? Сортировать надо? По алфавиту или по размеру? :D :D

-- 15.03.2026, 11:07 --

EminentVictorians в сообщении #1720229 писал(а):
Чтобы вместо сложных бинарников с кучей ключей были бы более примитивные и легкие функции, которые делали бы очень маленькие и очень понятные действия.

"Бинарники" и есть эти примитивные и легкие функции.

Но тут надо вам наверное понять, что это же сейчас opensource, нет единого центра надзора над созданием "бинарников" и универсальности применения ключей.

Посмотрите на powershell в windows, может оно вам "зайдёт" получше...

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 11:19 
alesha_popovich в сообщении #1720227 писал(а):
Попробуйте питон. Пишу на нём небольшие скрипты, намного все понятнее.
Это интересно. То есть если я, допустим, знаю питон, я могу администрировать линукс вообще без баша? А с бинутилитами как? С ними или без них?

wrest в сообщении #1720232 писал(а):
Именно.
По-моему, вы ошибаетесь. Такая помойка из тяжеленных перегруженных бинарников с кучами ключей и без намека на типизацию не может быть unix way-ем.

wrest в сообщении #1720232 писал(а):
Что вам там надо "администрировать" в операционной системе?
Да просто заколебался постоянно искать в гуи что и куда тыкать. Хочу формальный язык, чтобы взаимодействовать с компьютером через него, а не через сложные графические интерфесы. Ну могу и конкретный пример привести. Допустим, хочу я создать загрузочную флешку. На виндовз надо какие-то программы качать, руфус например. Потом разбираться в графическом интерфейсе, смотреть что и куда нажимать. На линукс чуть лучше, можно написать просто
Код:
dd if=./image.iso of=/dev/sdb (ну может быть еще что-нибудь по мелочи типа bs=1K status=progress и т.п.)
и он сам побитово просто образ создаст. То есть нету взаимодействия с графическим интерфейсом, все просто через текст делается. Но проблема в том, что dd - это какой-то сложный бинарник (а не легкая простая функция).

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 11:22 
Аватара пользователя
Баш - бери в руки и е...!
Цитата:
NAME=value
NAME= value
NAME = value

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

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 11:22 
EminentVictorians в сообщении #1720216 писал(а):
Мне интересно, это у меня одного впечатление от bash как от продукта с крайне плохим дизайном?
Да. Ну то есть на самом деле bash ужасен, и надо пользоваться dash для скриптов и zsh/fish — для интерактива, но к вашим затруднениям это отношения не имеет.
EminentVictorians в сообщении #1720229 писал(а):
Хочу операционную систему, которую я смог бы легко администрировать под свои нужды. Для этого мне нужен формальный язык
Вам видимо нужна NixOS или Guix. Правда, насколько с этим легко разобраться не имея представления об обычном Linux, я сомневаюсь.

 
 
 
 Re: Bash - очень сложный язык
Сообщение15.03.2026, 11:31 
EminentVictorians в сообщении #1720235 писал(а):
На линукс чуть лучше, можно написать просто

На Windows наверное можно написать примерно то же самое.
Но это НЕ администрирование операционной системы. В результате создания флешки операционная система остаётся ровно такой как была, никакие аспекты функционирования не меняются

-- 15.03.2026, 11:49 --

EminentVictorians в сообщении #1720235 писал(а):
Такая помойка из тяжеленных перегруженных бинарников с кучами ключей и без намека на типизацию не может быть unix way-ем.

Увы. Сочувствую :mrgreen:
Ваш лексикон свидетельствует, что вы во второй стадии (гнева).

Вы на велике ездить умеете? Помните как учились? :D

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


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