Pull to refresh

Comments 23

Один финский студент тоже озаботился написанием своей версии telnet...

Ну, я не знаю такую историю конечно

Но я просто пытаюсь сделать чуть удобнее терминал =)

Все вы так говорите поначалу:

У меня возникло множество претензий к Minix. Хуже всего была эмуляция терминала, очень важная для меня программа, потому что именно ее я использовал для подключения к университетскому компьютеру. Я зависел от этой эмуляции каждый раз, когда связывался с университетским компьютером, чтобы поработать с мощной Unix-системой или просто выйти в онлайн. Пришлось писать собственную программу эмуляции.

(C) Торвальдс Л. "Just for fun"

;)

Спасибо! Изучу библиотеку тогда в ближайшее время

Мне кажется, обычно для подобных статей добавляется некий дисклеймер, что там автор, например, учится в 7 классе и первый раз что-то такое делает. Потому что такие статьи от 14-летних школьников - это скорее похвально, что что-то сделал, да и решился выложить, молодец.

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

Да, наверное стоило указать, что я не сеньор и не бог в IT

Подкорректирую тогда статью и напишу об этом. Спасибо за совет, я просто первый раз на хабре пишу что-то =)

В итоге получился не терминал, а оболочка aka shell. Терминал (а если точнее - псевдотерминал aka pty) занимается в основном приёмом ввода от пользователя и рендерингом всякого текстового на экран. Собственно Windows Command Line, Windows Terminal, Kitty, Alacritty, wezterm, xterm и тд - это именно терминалы. Bash, fish, zsh, ksh, nushell - это уже командные оболочки, которые занимаются обработкой ввода пользователя, управления сессиями, окружением и прочим. Ваш питон как раз относится к последним.

Ну и чисто совет для новичка - научитесь поьзоваться вирутальным окружением aka venv и посмотрите как устанавливаются питоновские пакеты.

Я смотрел как устанавливаются питоновские пакеты, использую venv. Насчёт так называемого "терминала", тут я согласен, что на самом деле это оболочка. В будущем планируется создать на основе имеющегося эмулятор терминала - то, что Вы перечислили в первом списке.

Спасибо за советы и фидбек!

А почему load_modules делает COMMANDS[cmd_name] = func, а не дергает register_command?

При первом написании я писал эту строчку для кода, когда еще не было функции. А позже уже забыл о ней и не поменял. Но спасибо, что заметили этот казус.

Я обязательно изменю эту строку на функцию. Спасибо!

UFO landed and left these words here

Спасибо за такое объяснение

Когда я читал обо всем этом связанном, то почти везде cmd называлось как "терминал", а программы и их команды - CLI Apps.

Но лично здесь я написал "терминал" так, как пытался заменить стандартные команды и создать свои для cmd, получилось конечно CLI в итоге.

Извините, если статья как-то вводит в заблуждение, я вроде писал, что получился в итоге CLI App

UFO landed and left these words here

На текущий момент я стараюсь создать "консольный CLI" как раз таки дополняющий системные команды (для ускорения и удобства работы).

В будущем же планируется написать вдобавок эмулятор самого shell, который будет работать на основе CLI, который как сможет запускать и системные команды, и кастомные, не входящие в стандартный пакет.

Спасибо Вам за фидбек, в следующих статьях я учту сказанную Вами теорию!

UFO landed and left these words here

Хорошо, спасибо!

Возможно это поможет мне в дальнейшем развитии проекта =)

А вы один собираетесь это делать? Я могу помочь если надо.

На текущий момент я делаю все один. Но я не откажусь от любой добровольной помощи.

Код лежит на гитхабе, в случае надобности Вы можете скачать код ветки "dev" и добавить что-то свое, а потом с помощью пулл реквеста уже предложить.

Я лично не против, поэтому был бы рад помощи!

Джва года хочу терминал, чтобы слева закладки, или, может, шаблоны команд, и чтобы быстро и удобно как-то можно было прыгать по нужным частям командной строки, хоть мышью, хоть табом, и эти части (только их) менять, например, только input и output в строке вроде `ffmpeg -y -i input.mp4 -progress pipe:1 -loglevel error -vn -c:a libmp3lame -q:a 1 output.mp3`, и чтобы... чтобы два раздельных окна для вывода того, что оно там навыводит - одно для stdout, другое для stderr... И чтобы горячие клавиши работали стандартные, а не какие-то особые, специальные, свои, только для терминала. Сохраняться можно.

Спасибо за некоторые идеи.

На текущий момент в Terminode есть простейший шаблонизатор. Если хотите, то можете создать свои моды с различным функионалом. Также в скором времени добавятся хоткеи, автодополнение и еще несколько функций. Насчет стандартных хоткеев, это смотря, что Вы имеете под в виду этими горячими клавишами.

В будущем планируется уже эмулятор терминала с интерфейсом. Также неплохая идея того, что создавать несколько окон, я подумаю над этим и возможно реализую. Если кратко - будет 2 версии, консольная и как приложение. В консольной все командами и кнопками, а в приложении уже и тыкать можно будет.

Спасибо за фидбек!

Насчет стандартных хоткеев, это смотря, что Вы имеете под в виду этими горячими клавишами.

Стандартные, типа Ctrl-C, Ctrl-V. Вряд ли будет хорошо, если так просто взять и сделать, потому что чем тогда процесс убивать, и т. п., но, может, можно упороться в мульти-модальность, а-ля Vim - в одном режиме прям терминал-терминал, в другом - закос под текстовый редактор.

Кажется , в декораторе command определять wrapper не нужно, т.к. поведение функции func не меняется, достаточно возвращать прямо ее.

Sign up to leave a comment.

Articles