Re: Bye, bye, bash

From: Sysadmin Lists <sysadmin.lists_at_mailfence.com>
Date: Sun, 26 Mar 2023 01:02:16 UTC

> ----------------------------------------
> From: Sysadmin Lists <sysadmin.lists@mailfence.com>
> Date: Mar 25, 2023, 5:55:15 PM
> To: <freebsd-questions@freebsd.org>
> Cc: Christian Weisgerber <naddy@mips.inka.de>
> Subject: Re: Bye, bye, bash
> 
> 
> > ----------------------------------------
> > From: Christian Weisgerber <naddy@mips.inka.de>
> > Date: Mar 25, 2023, 3:18:34 PM
> > To: <freebsd-questions@freebsd.org>
> > Subject: Bye, bye, bash
> > 
> > [...] although I use approximately 0% of bash's bloated
> > feature set.
> > 
> 
> Bash certainly has its problems, but sh's interactive feature set is primitive.
> I find most people don't even know some of the features in bash exist.
> 
> Just a few:
>    Commands for Manipulating the History
>        yank-nth-arg (M-C-y)
>               Insert the first argument to the previous command (usually the
>               second word on the previous line) at point.  With an argument n,
>               insert the nth word from the previous command (the words in the
>               previous command begin with word 0).  A negative argument
>               inserts the nth word from the end of the previous command.  Once
>               the argument n is computed, the argument is extracted as if the
>               "!n" history expansion had been specified.
>        yank-last-arg (M-., M-_)
>               Insert the last argument to the previous command (the last word
>               of the previous history entry).  With a numeric argument, behave
>               exactly like yank-nth-arg.  Successive calls to yank-last-arg
>               move back through the history list, inserting the last word (or
>               the word specified by the argument to the first call) of each
>               line in turn.  Any numeric argument supplied to these successive
>               calls determines the direction to move through the history.  A
>               negative argument switches the direction through the history
>               (back or forward).  The history expansion facilities are used to
>               extract the last word, as if the "!$" history expansion had been
>               specified.
>        shell-expand-line (M-C-e)
>               Expand the line as the shell does.  This performs alias and
>               history expansion as well as all of the shell word expansions.
>               See HISTORY EXPANSION below for a description of history
>               expansion.
>        history-expand-line (M-^)
>               Perform history expansion on the current line.  See HISTORY
>               EXPANSION below for a description of history expansion.
> 
>    Killing and Yanking
>        yank (C-y)
>               Yank the top of the kill ring into the buffer at point.
>        yank-pop (M-y)
>               Rotate the kill ring, and yank the new top.  Only works
>               following yank or yank-pop.
> 
>    Completing
>        possible-completions (M-?)
>               List the possible completions of the text before point.
>        insert-completions (M-*)
>               Insert all completions of the text before point that would have
>               been generated by possible-completions.
>        complete-into-braces (M-{)
>               Perform filename completion and insert the list of possible
>               completions enclosed within braces so the list is available to
>               the shell (see Brace Expansion above).
> 
>    Miscellaneous
>        insert-comment (M-#)
>               Without a numeric argument, the value of the readline
>               comment-begin variable is inserted at the beginning of the
>               current line.  If a numeric argument is supplied, this command
>               acts as a toggle: if the characters at the beginning of the line
>               do not match the value of comment-begin, the value is inserted,
>               otherwise the characters in comment-begin are deleted from the
>               beginning of the line.  In either case, the line is accepted as
>               if a newline had been typed.  The default value of comment-begin
>               causes this command to make the current line a shell comment.
>               If a numeric argument causes the comment character to be
>               removed, the line will be executed by the shell.
>        glob-expand-word (C-x *)
>               The word before point is treated as a pattern for pathname
>               expansion, and the list of matching filenames is inserted,
>               replacing the word.  If a numeric argument is supplied, an
>               asterisk is appended before pathname expansion.
>        glob-list-expansions (C-x g)
>               The list of expansions that would have been generated by
>               glob-expand-word is displayed, and the line is redrawn.  If a
>               numeric argument is supplied, an asterisk is appended before
>               pathname expansion.
> 
>                                                                                              
> And pretty much all of the 'HISTORY EXPANSION' section.
> 
> I use those features daily, but have watched career-long sysadmins wear out
> their arrow keys as they navigate the command line. If efficiency is key, those
> features make working on the command line a breeze.
> 
> 
> -- 
> Sent with https://mailfence.com  
> Secure and private email
> 

Forgot a couple other essentials:
   Miscellaneous
       undo (C-_, C-x C-u)
              Incremental undo, separately remembered for each line.
       revert-line (M-r)
              Undo all changes made to this line.  This is like executing the
              undo command enough times to return the line to its initial
              state.

-- 
Sent with https://mailfence.com  
Secure and private email