[Sig] Re: [Lvlug] Bash: how format a number to a string?

Randy Kramer rhkramer@fast.net
Mon, 07 May 2001 09:44:15 -0400


Paul,

Thanks very much for the information.

I have the script working by using the #!/bin/ksh as the "shebang"
line.  (For a little while I was worried that I was doing something ugly
like building up a bunch of calls to ksh and bash on the "call stack",
but I think that was a result of some experimentation I did, effectively
alternately invoking ksh and bash from the command line.  I exited many
times and cleared the problem up, and I don't think it will happen when
I invoke the script.)  (If anybody needs or wants to look at the
semifinished version of the script, let me know  -- it may stay
semifinished for a long time.)

I briefly tried ksh as a replacement for bash following your
instructions.  I don't think I'm ready to make the change, maybe someday
if I learn emacs or vi, or I find the lack of typeset or similar
features from the command line to be a major problem.  (As you showed
me, I can invoke a script in ksh and overcome that lack.)

Just for the sake of exchanging information, the reasons I plan to stick
with bash for the time being include:

1.  I don't recognize any missing features in bash aside from typeset --
bash has a command line history (which can be edited in .bash_history
(IIRC)) and can be scrolled and edited using the up and down arrows. 
Bash also has a configurable command line prompt which shows me the
PWD.  It is set to show just the last directory, which I've grown used
to -- I assume I could change it to show the entire PWD if I wanted to. 
(And no, nobody has to tell me about assume.)

2.  I'm not familiar / comfortable with the editing keys you list below
(I guess they are emacs?).  In bash I can use the up and down arrows to
scroll through history, the backspace key for a "destructive" backspace,
delete to delete the character at the cursor, the left and right arrows
to navigate across the line.  I've also learned about keys like <ctrl>e
(end of line), <ctrl>a (beginning of line), <alt>b (back one word), and
<alt>f (forward one word), although I'd really prefer that those keys be
End, Home, <ctrl><left_arrow>, and <ctrl><right_arrow> respectively. 
(And, sooner or later, I'll learn how to reassign those keys, whether it
be via bash or via xmodkeys (or both).)

3.  I guess the most frustrating thing in my brief foray into trying ksh
was that I could not find a "nondestructive backspace" key.  (I didn't
look very much beyond your list and some likely guesses (IMO) -- I'm
probably a bad guesser.)

Thanks again for your help!
Randy Kramer


Ryan, Paul wrote:
> 
> I normally use the Korn shell (or PDKSH when I'm on a Linux box) since
> that is what I train students in.  Since the mid-80's it's been the
> most POSIX compliant of the shell family and has a large following.
> As for subdirectories, I place system scripts in /usr/local/sbin or
> /usr/local/bin, depending on whose gonna run'em.  I also have a
> scripts directory under $HOME, and an entry to it in my path.  There
> are those who would advise against that for security reasons.  You'll
> have to decide.
> 
> The bash shell is a sub-set/super-set (I guess that's a disjoint set!)
> of the Korn and Bourne shells, developed by Brian Fox and Chet Ramey
> of the Free Software Foundation to include the best of all worlds and
> leave out the excess.  However, as you saw with the typeset statement,
> it isn't fully compliant.  FSF was working on a complete freely
> distributable UNIX-compatible operating system (GNU) and bash (which
> stands for Bourne-Again SHell) was to be the default shell.  Linux
> came along and and it became the darling of the Linux set.
> 
> bash is fully Bourne compliant, but only partially incorporates the
> Korn and c shell features like aliases, functions, tilde notation, job
> control, etc.,.  It does, however, have one or two features that the
> other shells lack.  I must admit that when I first installed Linux I
> tried and liked bash because it was there and easy to start with.
> Now, I only use the Korn shell because of its powerful command line
> editting capabilities based on vi, it's use of the print command
> (instead of echo) and other features.
> 
> To try it, type ksh at the command line, then issue these two
> commands:
>   set -o emacs
>   export PS1='$PWD: '
> Everything above is case sensitive (of course, it's UNIX!), there are
> spaces around the -o and NO SPACES around the equal sign.  After that,
> things should look pretty bash-like to you.  The prompt will track
> your current working directory and the arrow keys will walk you around
> command history and allow you to edit a line.  Normal emacs commands
> are understood as well.  A short set includes:
> 
>   ^P - previous command
>   ^N - Next command
>   ^A - Beginning of line
>   ^E - End of line
>   ^D - Delete character under cursor
> 
> I'm a vi freak and don't play with emacs much, but those few should
> get you started.  If you know vi, than issue the  `set -o vi` command
> and use vi commands to edit your history buffer.  ESC-k should get you
> started.
> 
> Let me know how you make out.
> 
> Paul
> 
> P.S  The Korn shell compliments of David Korn (AT&T) and the Bourne
> shell from Steven Bourne.  The C-shell was written by Bill Joy (UC
> Berkeley) whose name may ring a bell.  The first major shell was the
> Bourne shell and it still continues as a standard.  Hence, most system
> scripts are written to use it since it is on every UNIX/Linux system.