LINUX.ORG.RU

Я сделал шелл

 , ,


0

3

Всем привет, я как-то недавно по скуке решил сделать шелл для linux в основном, но он не совсем обычный. Вы можете дополнять его сами, подключать к нему модули. Можете написать свой модуль либо взять у кого-то, если кому интересно скачать можно в github: https://github.com/05ArAchI24/Enter-terminal

название его Enter

Перемещено dataman из development



Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от arachinki

ни лицензии, ни исходников, 8 Кб хелловорда на java. Модули подключаются как классы java... умно! Фич почти нет, а в зависимостях JRE.

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

Идея норм (превратить часто нужные внешние команды в builtins), но:

1) оверхед от запуска внешних бинарников в юниксах небольшой, его ещё давным давно заточили под ситуацию когда для запуска ls требуется отдельная прога, а вот оверхед от самой джавы большой

2) у тебя по ссылке только jar, их конечно можно сконвертировать назад в .java файлы, но зачем заставлять этим заниматься юзеров?

3) слово «терминал» там совсем лишнее

4) в текущем виде это всё-таки заготовка а не продукт

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

Спасибо, что уделил время! Критика была полезна — исходники и MIT лицензия теперь в репозитории. Ты прав насчёт «модулей как классов Java». В этом и была задумка: создать не просто ещё один shell, а безопасную платформу (JVM sandbox), где можно экспериментировать с собственными командами, не боясь сломать систему. Это образовательный проект, который я сделал, чтобы разобраться в архитектуре shell’ов. 20 встроенных команд — база. А фичи вроде ping, сетевых утилит — отличный повод для сообщества написать свои модули. Исходники и интерфейсы выложены как раз для этого.

arachinki
() автор топика
Ответ на: комментарий от firkax

Спасибо за развернутый фидбек, очень ценно. Про оверхед Java — согласен, это осознанный компромисс. Цена JVM — безопасная изоляция модулей (песочница) и кроссплатформенность «из коробки». Идея в том, чтобы дать возможность писать плагины на знакомом языке без риска для системы, а не соревноваться с нативным bash в скорости. Про исходники — вы правы, это было упущение. Исходный код (Main.java, Module.java, Command.java, пример модуля) и MIT лицензия уже выложены в репозиторий. Про «терминал» — технически вы абсолютно правы, это shell (командная оболочка). В README поправлю. Про «заготовку» — да, это именно что учебный каркас (proof-of-concept) для безопасной модульной системы. Он задуман не как замена bash/zsh, а как среда, где можно безопасно экспериментировать с архитектурой команд и писать свои модули на Java. Основная ценность сейчас — не в фичах, а в чистоте интерфейсов Module и Command. Если интересна архитектура — буду рад мнению или пул-реквесту. Например, как лучше реализовать конвейеры (pipes) или переменные окружения в такой модели.

arachinki
() автор топика

ИИшку придумали чтобы мир порабощать, а не на жабе хелоуворлдить. Что, ради вот этого говна мы за раму переплачиваем??

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

Проект написан мной, а не ИИ. GPT помогал написать текс для команды help, потому что самому мне было немного в падлу. можешь задать любой вопрос по коду — отвечу. P.S. Странно, что теперь любой маленький проект сразу записывают в ИИ. Раньше просто говорили «кривой код», теперь — «ИИ написал». Прогресс.

arachinki
() автор топика

Перепиши readme (да и заголовок этой темы тоже, ну и теги). Если это шелл, так и напиши. Не надо называть шелл терминалом и консолью и вводить людей в заблуждение — это совсем разные вещи.

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

Блин, испанский стыд, давай без ИИ общаться.

Критика была полезна — исходники и MIT

Если бы это была твоя задумка, то ты сделал бы это в первую очередь

создать не просто ещё один shell

то ты бы не путал шелл и терминал.

А фичи вроде ping, сетевых утилит — отличный повод для сообщества написать свои модули.

Отличный повод для сообщества написать еще один ping, на Java, который будет работать только на твоём шелле и тянуть JRE? Ты серьёзно?

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

P.S. ты зачем в репозитории всё в одну кучу свалил, .java .jar .md, проект конечно не большой, но всё же. И если ты уж упираешь на модули, то добавь директорию modules или skins, или extension и в них нафигач по паре модулей для своего шелла.

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

А ты точно Java-программист? Обычно твои собратья каждую функцию помещают в отдельный класс.

А если серьëзно, то класс Main получился раздутый.

PunkPerson
()

Облегчи жизнь людям, которые могут заинтересоваться твоим проектом – внедри gradle.

PunkPerson
()

название его Enter

Хочу Ctrl-D.

dataman ★★★★★
()

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

EAT_INSIDE
()
            case "grep":
                if (parts.length > 2) {
                    grepCommand(parts[1], parts[2]);
                } else {
                    System.out.println("Usage: grep <pattern> <file>");
                }
                break;

Ты что делаешь? Зачем вот это всё?

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

Это у него такая встроенная утилита grep, по аналогии как в bash есть встроенные утилиты подменяющие утилиты из coreutils типа cd, echo и так далее, и тут он до вызова этой встроенной утилиты проверяет правильное ли количество аргументов было передано, он мог бы проверять это внутри grepCommand, но решил снаружи.

:)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Bfgeshka

Да текущая реализация grep не учитывает, что паттерн может содержать пробелы или быть в кавычках. Я еще не успел доделать.

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

я еще только изучаю java, уже как 3 месяца только.

А чего тогда только терминал решил написать? Обычно сразу пишут ОС :)

Но вообще похвально, молодец.

Zhbert ★★★★★
()

А какой терминал эмулируется? vt100, vt320, …???

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

Странно, что теперь любой маленький проект сразу записывают в ИИ. Раньше просто говорили «кривой код», теперь — «ИИ написал». Прогресс.

Он прав, ИИ написал бы лучше и сказал бы, что идея плохая

А вообще в качестве проекта для изучения, почему-бы и нет, хоть и ясно что кроме автора это никому не нужно

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

Прошёл день, заголовок темы и теги не исправлены… Исправил за тебя, чтоб не удалять по 4.2

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

можно узнать что не так?

ИМХО это надобность JVM для «работы с терминалом»…

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

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

thesis ★★★★★
()

как учебный проект - почему бы и нет? Но вот это

Вы можете дополнять его сами, подключать к нему модули. Можете написать свой модуль

Писать, дополнять и подключать, конечно же, никто не стал. Звучит так самонадеянно и наивно, что я даже улыбнулся, вспомнив свой вкат и свои поделки в начале пути.

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

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

ugoday ★★★★★
()

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

Бинарные сборки вываливаются в Releases на GitHub, не в саму репу.

Ну и писать что-то интерактивное на Java… Я даже пробовать не стану, потому что Java - это даже без критики языка, нечто, рассчитанное на пакетную работу: один раз запустил, и оно часами молотит, долгое время запуска амортизируется. Интерактивные программы на Java поражают своими задержками по сравнению со всем остальным, до сих пор, даже в 2025 году.

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

Подход к снаряду пытались сделать многие, но ни у кого не вышло мало-мальски популярное решение. Не удаётся уйти от plain-text почему-то.

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

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

P.S. Ну и имеет смысл делать вещи, которые до тебя не получалось сделать. Потому что вещи, которые получились, уже сделаны.

P.P.S. JVM превосходит GNU/Linux как платформа.

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

Не пробовал. Твёрдого мнения не имею.

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

java язык банковых систем, язык критических инфраструктур, но точно не shellов всяких.кстати, а почему coreutils прибиты к shell?

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

java язык банковых систем, язык критических инфраструктур, но точно не shellов всяких.

Это лозунги.

почему coreutils прибиты к shell?

Потому что ни они без шелла, ни шелл без них нафиг никому не нужны.

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

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

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

Глупый вопрос. Менять нужно способ межпроцессного взаимодействия. Язык реализации тут вторичен.

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

По-моему, наоборот, со скуки поделки клепаются на русте, лиспе, APL — чём угодно вообще, но на жабе — только за деньги.

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

если интересно, залил новую небольшую обнову 311225.2r

arachinki
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.