Резюме. Можно ли настроить iPython так, чтобы обычный пользователь выглядел как простой терминал командной строки dos/bash (cd, ls, mkdir, rm... и т. д.), а затем предоставить несколько дополнительных проприетарные команды?
Подробно: я работаю в компании, выпускающей видеоигры, пользователи которой никогда не сталкивались с "хорошим" интерфейсом командной строки в производственном конвейере. Итак, в ответ я некоторое время работал над написанием CLI с использованием cmd.py в python, воссоздавая часто используемые команды dos, а затем дополняя их своими собственными пользовательскими командами, чтобы делать различные вещи, например: быстро переходить через предопределенные производственные папки , упрощенные команды управления perforce, поиск/импорт файлов с рекурсивными паттернами ant-glob в наш инструмент разработки... и т.д. и т.п...
В середине процесса я наткнулся на ipython. Я не очень знаком с ним, но я уже чувствую, что это то, что я должен использовать, так как он делает многое из того, что мне нужно, бесплатно. Он отлично обрабатывает цвета ansi. Все команды оболочки доступны через "!", можно использовать "|,>,‹" и все встроенные функции оболочки бесплатно, преимущества продолжаются и продолжаются...
Одно предостережение заключается в том, что мою целевую аудиторию легко запугать CLI... и поэтому, когда они вводят «more textfile.txt» в качестве входных данных, они ожидают поведения DOS по умолчанию для печати содержимого файла, а не:
In [42]: more textfile.txt
File "<ipython-input-42-e442b4ca857b>", line 1
more file.txt
^
SyntaxError: invalid syntax
Конечно, «!more textfile.txt» сделает то, что они ожидают, но я не хочу, чтобы им приходилось набирать «!» практически для 95% команд, которые они будут использовать.
Поэтому я ищу способ запустить ipython полностью упрощенным способом, где в моем идеальном (возможно, фантастическом) мире:
- Все команды оболочки (cd, ls/dir, mkdir, more, rm/del и т. д.) будут доступны на переднем плане без каких-либо "!"
- Все команды python (import, def, class, for, print, while и т. д.) будут недоступны, за исключением нескольких предопределенных проприетарных команд для выполнения различных конвейерных операций, может быть, оставить доступными основные арифметические команды?
И в качестве бонуса: способ чередовать ipython по умолчанию и очень сдержанную и упрощенную версию замены командной оболочки, о которой я мечтаю... например: ввод "normal" восстановит все поведение ipython по умолчанию... и ввод "cli "вернутся к упрощенной версии.
Последнее примечание: то, что я ищу, скорее всего, является дурацкой затеей, и мне, вероятно, следует придерживаться запуска python.exe в командной оболочке с помощью моего собственного неуклюжего сценария CLI и положить этому конец... Но Я подумал, что если то, что я хочу, чтобы iPython сделал здесь, возможно удаленно, Stackoverflow — это то место, где я быстро получу ответ :)
!, что вы не хотите отображать в своем CLI? Кроме того, исключение этого специального индикатора того, что вы вводите команду, может наложить некоторые ограничения на именование объектов (файлов, функций и т. д.). - person Aleksander Lidtke   schedule 18.12.2013%alias. Введите%rehashx, тогда у вас есть все двоичные файлы на вашем пути, ну, псевдонимы и команды, такие какmore file.txt, просто работают. - person Fredrik Pihl   schedule 18.12.2013