My_Shell_Learn of "Learning the bash, 3rd Edition"
声明:
本文章里面的所有内容作者保留所有权限,禁止用于商业目的, 只供个人学习使用。
但可以随意转载, 不过请保留这段文字。
作者:
Chen-Jian-151x
===========================================================================
chapter-0
===========================================================================
1. 查看 Bash Shell 版本方法:
# echo $BASH_VERSION
# bash --version
note:
# -v Print shell input lines as they are read.
# bash -v # 会打印出所有的全局变量和全局函数。
2. Directory manipulation, with the pushd, popd, and dirs commands
3. Job control, include the fg and bg commands and the ability to stop jobs with
CTRL-Z
===========================================================================
chapter-1
1.1 What Is a Shell ?
chj@linux-xzlr:chap1\> cat char_list
d
e
f
a
b
x
s
tchj@linux-xzlr:chap1\> sort -n char_list
a
b
d
e
f
s
t
x
chj@linux-xzlr:chap1\>
comments:
-n, --numeric-sort
compare according to string numerical value
1.4 Getting bash
查看当前 shell 类型
# echo $SHELL
To install bash as your login shell, type chsh bash-name, where bash-name
is the response you got to your whereis command(or whatever worked). For example:
# chsh /usr/local/bin/bash
1.6 Brace Expansion
cjash@linux-h3i2:files\> echo b{ed,olt,ar}s
beds bolts bars
cjash@linux-h3i2:files\> echo b{ar{d,n,k},ed}s
bards barns barks beds
cjash@linux-h3i2:files\> echo {2..5}
2 3 4 5
cjash@linux-h3i2:files\> echo {d..h}
d e f g h
cjash@linux-h3i2:files\> echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
cjash@linux-h3i2:files\>
1.9 Special characters
( |
Start subshell |
|
) |
End subshell |
|
{ |
Start command block |
|
} |
End command block |
|
` |
Strong quote |
|
<"> |
Weak quote |
|
Table 1-7. Control keys
Control key |
stty name |
Function description |
CTRL-C |
intr |
Stop current command |
CTRL-D |
eof |
End of input |
CTRL-\ |
quit |
Stop current command if CTRL-C doesn't work |
CTRL-S |
stop |
Halt output to screen |
CTRL-Q |
|
Restart output to screen |
DEL or CTRL-? |
erase |
Erase last character |
CTRL-U |
kill |
Erase entire command line |
CTRL-Z |
susp |
Suspend current command (see ) |
stty -a to see all control keys;
the difference of C-C and C-\
Sometimes CTRL-C doesn't
work; in that case, if you really want to stop a job, try CTRL-\. But don't just
type CTRL-\; always try CTRL-C first! explains why in detail. For
now, suffice it to say that CTRL-C gives the running job more of a chance to
clean up before exiting, so that files and other resources are not left in funny
states.
C-S, C-Q
CTRL-S and
CTRL-Q are called flow-control characters. They represent an antiquated way of
stopping and restarting the flow of output from one device to another (e.g.,
from the computer to your terminal) that was useful when the speed of such
output was low. They are rather obsolete in these days of high-speed networks.
In fact, under the latter conditions, CTRL-S and CTRL-Q are basically a
nuisance. The only thing you really need to know about them is that if your
screen output becomes "stuck," then you may have hit CTRL-S by accident. Type
CTRL-Q to restart the output; any keys you may have hit in between will then
take effect.
C-H
The final group of control characters gives you
rudimentary ways to edit your command line. DEL acts as a backspace key (in
fact, some systems use the actual BACKSPACE or CTRL-H key as "erase" instead of
DEL); CTRL-U erases the entire line and lets you start over. Again, these have
been superseded. The next chapter will look at
bash's editing modes, which are among its most useful
features and far more powerful than the limited editing capabilities described
here.
C-/, to undo
===========================================================================
===========================================================================
chapter-2
1. Enabling Command-Line Editing
bash initially starts interactively with emacs-mode
as the default (unless you have started bash with
the -noediting option; see ). There are two ways to
enter either editing mode while in the shell. First, you can use the set command:
$ set -o emacs
or:
$ set -o vi
The second way of selecting the editing mode is
to set a readline variable in the file .inputrc. We will look at this method later in this
chapter.
You will find that the vi- and
emacs-editing modes are good at emulating the
basic commands of these editors, but not their advanced features; their main
purpose is to let you transfer "keyboard habits" from your favorite editor to
the shell. fc is quite a powerful facility; it is mainly meant to
supplant C shell history and as an "escape hatch" for users of editors other
than vi or emacs.
Therefore the section on fc is mainly recommended
to C shell users and those who don't use either standard editor.
2. C-R
You sigh heavily and go back
and find the fgrep command you typed in an hour
ago. To do this, you type CTRL-R; whatever was on the line will disappear and be
replaced by (reverse-i-search)`':. Then type
fgrep, and you will see this:
$ (reverse-i-search)`fgrep': fgrep -l Duchess <~cam/book/ \
alice_in_wonderland[]
The shell dynamically searches back through the command history
each time you type a letter, looking for the current substring in the previous
commands. In this example, when you typed f the
shell would have printed the most recent command in the history with that letter
in it. As you typed more letters, the shell narrowed the search until you ended
up with the line displayed above. Of course, this may not have been the
particular line you wanted. Typing CTRL-R again makes the shell search further
back in the history list for a line with "fgrep" in it. If the shell doesn't
find the substring again, it will beep.
If you try the fgrep command by
hitting RETURN, two things will happen. First, of course, the command will run.
Second, this line will be entered into the history list at the end, and your
"current line" will be at the end as well. You will no longer be somewhere else
in the command history.
Another handy trick to save typing if you have already done a
search is to type CTRL-R twice in a row. This recalls the previous search string
you typed in.
3.
Table 2-15. Event designators
Command |
Description |
! |
Start a history substitution |
!! |
Refers to the last command |
!n |
Refers to command line n |
!-n |
Refers to the current command line minus n |
!string |
Refers to the most recent command starting with string |
!?string? |
Refers to the most recent command containing string; the ending ? is optional |
^string1^string2 |
Repeat the last command, replacing string1 with string2 |
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================
===========================================================================
chapter-0
===========================================================================