菜鸟学Linux 第008篇笔记 bash及其特性


bash 及其特性:

shell: 外壳(是一个可执行程序)

GUI: Gnome, KDE, Xfce

CLI: sh, csh, ksh(付费和社区版), bash, tcsh, zsh(不是特别流行)

shell,子shell

shell设定,对子shell无效(反之亦然)


程序只有一个,进程可以有多个 进程(进程名可以同名)是程序的副本(仅作理解)



bash特性:可以自定义工作环境(默认相同)

1、命令行编辑

2、命令历史

3、路径/命令补全

4、命令别名

5、命令替换

6、文件名通配

7、变量

8、编程(shell脚本)

9、管道、重定向

10、命令行展开

……等等


Detail

命令行编辑

光标:

Ctrl+a:行首

Ctrl+e:行尾

Ctrl+u: 删除光标至行首

Ctrl+k: 删除光标至行尾

Ctrl+l: 清屏

命令历史:

查看命令历史:history

-c 清空命令历史

-d offset [n]删除指定位置的历史命令

-w 保存命令历史至历史文件中(每个用户家目录隐藏文件.bash_history)

命令历史使用技巧

!n  执行命令历史中第N条命令

!-n 执行命令历史中倒数第N条命令

!!  执行上一条命令

!string 执行命令历史中最近一个以指定字符串开头的命令

!$  引用前一个命令的最后一个参数

按完Esc 后再按. 也可引用上一个参数

Alt+. 同上


命令补全

搜索PATH环境变量所指定的每个路径下以我们给出的字符串开关的可执行文件,如果多于一个,按两次TAB,可以给出可选执行命令文件列表,否则直接补全。

路径补全

搜索我们所给出的起始路径下的每个文件名,并试图补全。

命令别名

alias commandalias='COMMAND [options] [arguments]' 定义别名仅在当前shell的生命周期有效

alias 不加任何参数显示已经定义好的别名列表

unalias aliasname 取消定义的别名

命令替换 $() ``反引号,波浪线上的

把命令中某个子命令替换为其执行结果的过程

touch ./file-$(date +%F-%H-%M-%S).txt 先执行date命令将执行结果返回做touch创建文件用的名字

文件名通配,globbing

* 匹配任意长度的任意字符

?匹配任意一个字符

[] 匹配指定范围内的任意单个字符 [abc] [a-m] [a-z] [A-Z] [0-9]

[:space:] [:punct:] [:lower:] [:upper:] [:alpha:] [:digit:] [:alnum:]

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


bash支持的引号

``:命令替换

"":弱引用,可以实现变量替换

'':强引用,不完成变量替换


环境变量

PATH: 命令搜索路径

HISTORY: 命令历史大小(默认1000)