On 07/27/2013 08:56 AM, Devyn Collier Johnson wrote:


    <SNIP>

Somehow during this thread, you have changed your purpose for this library. It used to be a library that Python programmers could import and use. And now, it's a shell replacement? The user runs the Python interpreter, and types the line import boash to get started.


Yeah, I have a VERY BAD habit of treating bash and the Linux shell (or
any/all shells) as the same thing. I know they are all very different,
but for some reason I still keep calling all shells in general BASH.

I seem to recall that BASH is an acronym, for Bourne Again SHell.


I will be sure to create aliases. I make alias commands so that it is
easier to guess or remember a command. For instance, a Python user my
want to clear the shell's history, but can only remember one form of the
command or must guess. On my Ubuntu system, I have set up numerous shell
aliases. I am addicted to aliases.

Nothing wrong with aliases. But how does your user create his own aliases? That's much more important than having yours available. Remember that any new globals he defines are lost when he exits the interpreter (or crashes).


I still need to add the other browsers. Do very many people use Iceweasel?

I did not notice that I have "print(subprocess.Popen('(xterm &)'))"
instead of "subprocess.Popen('(xterm &)')". The worst computer errors
are ID-10-T errors.

True, the user my have Xterm open, but what if they use Guake (like me)
or Pterm, EvilVTE, Valaterm, Gnome-Terminal, Konsole, etc.?

Exactly. If they're using a terminal with tabs, they might want to create a new tab, not a new instance of the terminal. Or if they're running screen or the equivalent, they want the new terminal to show up on their (remote) console.


How could I add security and convenience? Okay, I will try to add wget.
Are there any other shell commands that anyone feels I should add?

How about tab? The command-completion and filename-completion and parameter-completion logic of a good shell is extremely complex, and very useful.


The point of this module is to allow Linux shell users to use Python3 as
a regular shell. Instead of using CSH, Bash, Tcsh, FISH, etc., users
could use Python3 and import this module. Python is more powerful than
any shell, so I want to make it easier for anyone to use Python as the
default shell. For instance, instead of typing "print(os.getcwd())" to
get the current working directory, users could type "boash.ls()". I hope
that is easier to remember than "print(os.getcwd())".

It's easier, but doesn't begin to do the same thing.

As for using this INSTEAD of csh, bash, etc., that might be likely once it gets beyond 10% of the usefulness. Right now, it's at about 0.01% And any habits a user gets within this environment have to be unlearned when he returns to a standard shell.

Back in the early days of MSDOS, the FORMAT command didn't require you to specify a drive letter. So people could intend to format their floppy, and actually trash their hard disk. So I had colleagues who put a FORMAT.BAt command on their path which hard-wired the A: parameter. Now what happens to one of those folks when he goes to another machine which doesn't have that batch file? Ouch! Instead I wrote a batch file that checked to make sure you had the A: parameter. Rapidly, my fingers learned that FORMAT A: was the valid syntax, and pretty soon the batch file was unnecessary (for me).

If I were going to define a dozen aliases for other people to use, I'd make them something like:

def clear_hist():
    print "The function you want is probably   clear_history()"


As for the print()
command, I do not like how os.getcwd() has single quotes around the
output.

Those quotes come from the Python interpreter, not from getcwd().

Plus, Linux shell do not print output with quotes.

I want to make this a very useful and popular module, so I will use the
suggestions and add more useful wrappers. Would it help if I made a
Youtube video showing how this module can be used?

I will post the next version on this mailing list for another review.
Thanks everyone, and thanks a lot Steven D'Aprano!


Have you figured out how you're going to do things like cd (os.chdir), which have to remember state? And how to pass the new current directory to the shell that launched Python?

Have you looked at ipython (ipython.org) ? At least from there, you can get command completion with tab, one-third of the bash functionality. So if you type boash.cle then <tab> it'll fill in the rest.


--
DaveA

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to