Tuesday, November 12, 2013

Unix Command-Line Editing Summary

Here is a table that summarizes how to start using UNIX command-line editing
 Command-line editing can be helpful whenever the number of keystrokes it takes
 you to edit and re-run a command is less than the number of keystrokes to re-type
 it.   It is very helpful any time you are running commands repeatedly, and can
 significantly reduce the time and effort it takes to complete your Unix projects.
Part 1.   Re-Running a command line depends on which shell you are running.
How to Re-Run commands:
ksh
bash
    re-run the last command
r
!!
    re-run by <command number>, say:  90
r  <number>        e.g.,   r   90
!<number>     e.g.,    !90
    re-run  by <string>, e.g., grep
    finds most recent command line that starts-with  <string>.
r   <string>        e.g.,    r   grep
!<string>      e.g.,   !grep
Part 2:  Editing a command line depends on which style of editing you are using. 
(Just a few of the many possible commands for editing a line in "vi" and "emacs" are listed.)
Function
'vi' style 
'emacs' style 
Default for this shell
ksh
bash
"set" command to switch to it
set   -o   vi
set   -o   emacs
Finding a command line to Edit:


    enter command line edit mode
<esc>
always on because we use control characters or escape sequences
    go back a line
^P
    go forward a line
n
^N
    search back for a <string>, e.g., grep
    finds most recent command line that contains <string>.  If repeated, finds second most recent occurence.
/<string>            e.g.,    /grep 
^R<string>        e.g.,   ^Rgrep 
Positioning the cursor on the current command line: 


    start of line
^      (shift-6)
^A
    end of line
$
^E
    forward (right) one:  character
<space>
^F
                                        word
w
<esc>f
    back (left)  one:        character
h
^B
                                        word
b
<esc>b
Deleting Text:   delete character under cursor
x
^D
                   delete from cursor to end of word
dw
<esc>d
                                                 to end of line
d$
^K
Adding Text:   insert before cursor
i       (press <esc> to end)
just type
 Executing the edited command line:
<enter>   (from anywhere on  line)
<enter> (from anywhere on  line)
Note: the emacs editing control characters are capitalized only for readability.  "^A" means: ctrl-a (no shift key).

No comments:

Post a Comment