Re: Bye, bye, bash

From: Sysadmin Lists <sysadmin.lists_at_mailfence.com>
Date: Sun, 26 Mar 2023 00:55:15 UTC
> ----------------------------------------
> 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