On 12/21/22 11:22, Chris Angelico wrote:
On Thu, 22 Dec 2022 at 03:11, Stefan Ram <ram@zedat.fu-berlin.de> wrote:
Lars Liedtke <lal@solute.de> writes:
Or you could have "native" bash ($SHELL) with WSL.
In this newsgroup, it would actually be obvious to use Python.
Less obvious than you might think - partly because bash is just so
dang good that it's really really hard to outdo it :) Sure, bash has a
lot of weird and wonky edge cases, but it's an incredibly practical
shell to use.
When you make a statement like that, Chris, you should also note that
every single one of those "wonky edge cases" is documented down to the
last dotted i. Bash's docs will kill a good sized pulp tree, needing
around a ream of paper to print on a duplex printer. I know, I did it
around a decade ago. If you like to write scripts, having a dead tree
copy of the docs at your elbow in incredibly useful. That huge man page
does not cover it like the printed docs do.
On Thu, 22 Dec 2022 at 03:11, Stefan Ram <ram@zedat.fu-berlin.de> wrote:
Lars Liedtke <lal@solute.de> writes:
Or you could have "native" bash ($SHELL) with WSL.
In this newsgroup, it would actually be obvious to use Python.
Less obvious than you might think - partly because bash is just so
dang good that it's really really hard to outdo it :) Sure, bash has a
lot of weird and wonky edge cases, but it's an incredibly practical
shell to use.
When commands are typed manually, this might be a bit verbose,
though. I mean
os.chdir( r'C:\EXAMPLE' )
versus
CD C:\EXAMPLE
Exactly. What's good for a programming language is often not good for a shell.
class PythonShell( cmd.Cmd ):
intro = 'Welcome to the Python shell. Type help or ? to list commands.\n'
prompt = '(Python) '
file = None
def do_cd( self, arg ):
'change directory: CD C:\EXAMPLE'
os.chdir( *parse( arg ))
def do_bye( self, arg ):
'Exit: BYE'
print( 'Thank you for using the Python Shell!' )
return True
Sure, you can always create your own shell. But I think you'll find
that, as you start expanding on this, you'll end up leaning more
towards "implementing bash-like and/or cmd-like semantics in Python"
rather than "creating a Python shell". Shells, in general, try to
execute programs as easily and conveniently as possible. Programming languages try to stay inside themselves and do things, with subprocess spawning being a much less important task.
Fun challenge: see how much you can do in bash without ever forking to another program. And by "fun", I mean extremely difficult, and by
"challenge" I really mean "something you might have to do when your
system is utterly hosed and all you have available is one root shell".
It's amazing how far you can go when your hard drive has crashed and
you desperately need to get one crucial login key that you thought you
had saved elsewhere but hadn't.
ChrisA
I see bash scripts that are 1000’s of line of code at work and its a maintenance nightmare.
Knowing when to make the move from “handy bash script” to “this is a production application” and needs to be python is what I see people miss.
After a certain point in complexity the python code wins on maintenance. Personally i set a low bar to move from bash to python.
When you make a statement like that, Chris, you should also note that
every single one of those "wonky edge cases" is documented down to the
last dotted i.
On 21 Dec 2022, at 17:06, Chris Angelico <rosuav@gmail.com> wrote:
On Thu, 22 Dec 2022 at 03:58, gene heskett <gheskett@shentel.net> wrote:
On 12/21/22 11:22, Chris Angelico wrote:When you make a statement like that, Chris, you should also note that
On Thu, 22 Dec 2022 at 03:11, Stefan Ram <ram@zedat.fu-berlin.de> wrote: >>>>
Lars Liedtke <lal@solute.de> writes:
Or you could have "native" bash ($SHELL) with WSL.
In this newsgroup, it would actually be obvious to use Python.
Less obvious than you might think - partly because bash is just so
dang good that it's really really hard to outdo it :) Sure, bash has a
lot of weird and wonky edge cases, but it's an incredibly practical
shell to use.
every single one of those "wonky edge cases" is documented down to the
last dotted i. Bash's docs will kill a good sized pulp tree, needing
around a ream of paper to print on a duplex printer. I know, I did it
around a decade ago. If you like to write scripts, having a dead tree
copy of the docs at your elbow in incredibly useful. That huge man page
does not cover it like the printed docs do.
Oh yes, absolutely true. Its wonkiness is dependable and consistent;
but it is definitely quirky (look at all the different ways to embed arguments into things, and the ways that $*, $@, "$*, and "$@" behave
when put into variables). Not usually a problem, but it does sometimes
leave you thinking "wow, wouldn't it be easier to just use something
like Python?". And in the complicated cases, yeah, it can be. But in
the simple cases? Bash rocks.
ChrisA
--
https://mail.python.org/mailman/listinfo/python-list
echo 11111>aa.txt
timeout 62
echo 222222>a^^a.txt
timeout 62
echo 3333333>a^^^^a.txt
dir *.txt
setlocal enabledelayedexpansion
for /f %%i in ('dir /b *.txt') do (
SET "a=%%i"
SET "b=!a:^=^^!"
call :sub !b!
)
goto :eof
:sub
SET "A=%1"
SET "B=%1"
SET "a=%a:^=^^%"
call :suba %A%, %B%
goto :eof
:suba
echo.&echo.
echo The file %1 was created on %~t2 and contains %~z2 bytes.
echo Contents:
type %1
goto :eof
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 300 |
Nodes: | 16 (2 / 14) |
Uptime: | 64:23:43 |
Calls: | 6,712 |
Files: | 12,244 |
Messages: | 5,356,124 |