bash特性详解

2020-08-26 10:51:26 浏览数 (1)

本次我们来介绍一下Linux中的bash所具有的特性

bash的特性:

(1)命令行编辑

(2)命令历史

(3)命令别名

(4)命令替换

(5)文件名通配

(6)管道和 重定向

(7)变量

(8)编程

一、命令行编辑

(1)光标跳转

Ctrl a:跳到命令行首

Ctrl e:跳到命令行尾

Ctrl u:删除光标至命令行首的内容

Ctrl k:删除光标至命令行尾的内容

Ctrl ←:向左一个单词一个单词移动

Ctrl →:向右一个单词一个单词移动

Ctrl l:清屏

(2)命令行展开:略,请自行百度

二、命令历史

(1)查看命令历史:history

清空命令历史:history -c

(2)命令历史的使用技巧

①!n:执行命令历史的第n条命令

②!-n:执行命令历史中的倒数第n条命令

③!!:执行上一条命令

④!$:引用前一个命令的最后一个参数;与其相同的命令还有:按住[Esc]后松开按[.]

三、文件别名

注:在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程

(1)定义别名

alias [别名] =‘[命令]’

eg:alias cls =clear 即用cls代替clear,定义后用cls命令可以达到clear的作用

(2)撤销别名

unalias [别名]

eg:unalias cls 即撤销cls别名

(3)[命令]

定义别名之后,我还想用一下命令本身,即[命令]

四、命令替换

当我们使用一些命令时,我们希望命令是随着环境的变化而产生一定的灵活变化的,这个时候我们就需要用到命令替换

(1)命令替换是指将命令的输出结果赋值给某个变量

命令替换的方式:

(1)反引号:`命令`

(2)():(命令)

即:命令替换是把命令中某个子命令(pwd)替换为其(echo)执行结果的过程

五、文件名通配

(1)* :匹配任意长度的任意字符(包括0个字符)

eg:

① [root@c ]# ls

ab abb abc abm xab

# 如有文件

② [root@c ]# ls ab*

ab abb abc abm

# 匹配以ab开头后面跟着任意字符

③ [root@c ]# ls *ab

ab xab

# 匹配以ab结尾

④ [root@c ]# ls *ab*

ab abb abc abm xab

#匹配包含ab的文件

(2)?: 匹配任意单个字符

① [root@c ]# ls a?

ab

② [root@c ]# ls a??

abb abc abm

(3)[]: 匹配指定字符范围内的任意单个字符

[abc] #匹配字母abc

[a-z] #匹配小写字母a-z

[A-Z] #匹配大写字母A-Z

[0-9] #匹配数字0-9

[a-zA-Z] #匹配大小写字母a-z

eg:

① [root@c ]# ls ?[0-9].log

#查询以“.log”结尾且“.log”前只有两个字符的文件且第二个字符是数字

② [root@c ]# ls [a-zA-Z]

#只查询字母文件,且文件名仅为单字母

(4)[^]:匹配指定字符范围外的任意单个字符

[root@c ]# *[^txt]

#查询不是以“.txt”结尾的文件

六、管道和重定向

(1)>:覆盖输出

>>:追加输出

Ps.重定向错误输出及追加方式,请自行百度。

eg:执行下面的 who 命令,它将命令的完整的输出重定向在用户文件中(users):

执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。

你可以使用 cat 命令查看users文件内容

输出重定向会覆盖文件内容,请看下面的例子:

如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾,例如:

(2)<:输入重定向

和输出重定向一样,命令也可以从文件获取输入

这样,本来需要从键盘获取输入的命令会转移到文件读取内容。

接上例:

注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。

(3)管道

命令1 | 命令2 | 命令3 | ……

管道用于将一个命令的输出作为另一个命令的输入。可以将个命令依次连接起来,前一个命令的输出作为后一个命令的输入。

eg:cat /etc/log/message | more

#在执行输出内容较多的命令时可以通过管道使用 more 命令进行分页显示

END

变量和编程内容太多,我们后面再具体介绍。

0 人点赞