Bash Shell 学习笔记


bash shell 是 Linux 可以使用的几种 shell 之一。它也称为 Bourne-again shell,这个名字来自 Stephen Bourne,以前的一个 shell(/bin/sh)的创建者。bash 大体上与 sh 兼容,但是在函数和编程功能方面提供了许多改进。它结合了来自 Korn shell(ksh)和 C shell(csh)的特性,是一种符合 POSIX 的 shell。

典型的用户提示符是美元符号$,超级用户的提示符是磅符号#

echo命令将它的参数输出到终端上,如果参数没有使用空格引用echo命令会去除多余的空格,例如
$ echo hello     world
会输出
hello world

一般情况下,echo将在输出后福建一个新行字符,可以使用-n选项抑制这种行为。

使用-e选项可以使用一些具有特殊意义的转移字符,见下表。

a 警报铃声
b 退格
c 抑制末尾新行字符(同-n)
f 换页(在视频显示器上会清空屏幕)
n 新行
r 回车
t 水平制表符

反斜线后面跟着新行字符视为行延续,转义字符必须在引号的包裹范围内。

退出

输入exit或者按下ctrl + d

环境变量

使用$引用变量,在含义不明确的表达式中使用花括号引用变量是变量名明确。

env

显示当前的环境变量

清除和设置

使用 unset 命令将变量从 shell 变量列表中清除。如果变量已经导出到环境中,那么也会从环境中删除它。
可以使用 set 命令控制 bash(或其他 shell)的工作方式的许多方面。set 是 shell 内置的命令,所以各种选项是与 shell 相关的。在 bash 中,-u 选项让 bash 在遇到未定义变量时报告错误,而不是像对待具有空值的已定义变量一样。可以在 set 中使用 - 打开各种选项,使用 + 关闭它们。可以使用 echo $- 显示当前设置的选项。
还有另一个命令,declare,可以使用它创建、导出和显示 shell 变量的值。

exec

可以使用 exec 命令运行另一个程序来 替代 当前 shell。

命令历史

在默认情况下,历史功能是打开的。可以使用 set +o history 命令关闭它,使用 set -o history 重新打开。环境变量 HISTSIZE 告诉 bash 保留多少历史行。

history
显示全部历史
history N
显示历史中最后 N
history -d N
从历史中删除第 N 行;例如,如果这一行包含密码,就可能需要这么做
!!
最近的命令
!N
N 个历史命令
!-N
历史中倒数第 N 个命令(!-1 相当于 !!)
!#
正在输入的当前命令
!string
string 开头的最近的命令
!?string?
包含 string 的最近的命令

还可以使用冒号(:)后面跟着某些值来访问或修改一个历史命令的某些部分。
!en:s/$$/$PPID/      #重新运行以 'en' 开头的最后一个命令,但是用 '$PPID' 替代 '$$',所以会显示父进程的 PID

改变工作目录

如果不带参数使用 cd,那么当前工作目录将改变为主目录。
用一个连字符(-)作为参数意味着恢复原来的工作目录。
主目录存储在 HOME 环境变量中,原来的工作目录存储在 OLDPWD 变量中,所以 cd 相当于 cd $HOMEcd - 相当于 cd $OLDPWD

命令替换

bash shell 有一种非常强大的功能,允许将一个命令的结果用作另一个命令的输入;这称为命令替换。实现方法是将您希望使用其结果的命令封闭在反单引号(`)中。这仍然是常用方法,但是有另一个方法可以更容易处理多个嵌套的命令,即将命令封闭在 $( 和 ) 之间。# for n in $(seq 7 9); do echo p$n `e2label /dev/hda$n`;donep7 RH73p8 SUSE81p9 IMAGES

man

man命令的分页程序可能是 less 程序,可以使用/(向前搜索)、?(向后搜索)、n(重复前一次搜索)命令
man 相关的两个重要命令是 whatisaproposwhatis 命令搜索您提供的名称的手册页并显示来自适当手册页的名称信息。apropos 命令对手册页进行关键词搜索并列出包含关键词的手册页。

用|构造管道

用>进行输出重定向

cat、tac、od和split

cat命令创建文件
$ cat>text2
9       plum
3       banana
10      apple
输入完成之后,输入Ctrl + d表示文件的末尾

tac反序显示文件内容

od查看文件中的控制字符

split分割文件

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s