首页 > 代码库 > linux--bash基础及特性(一)

linux--bash基础及特性(一)

对操作系统整体结构而言,shell是离用户最近的程序,也是操作系统与用户能进行交互的程序.

广义上的shell包含两类:

GUI: Gnome,KDE,Xfce

CLI:sh,csh,ksh,bash,tcsh,zsh

root,student

程序:进程

进程: 在每个进程看来,当前主机上只存在内核和当前进程:意识不到其他进程的存在

进程是程序的副本,进程是程序执行实例

用户工作坏境

bash:

    #

    #

    tom,jerry

shell,子shell

多次bash,使用pstree可以看到一个进程树

退出shell使用exit

 

bash : 

1. 命令历史,命令补全

2. 管道,重定向

3. 命令别名

4. 命令行编辑

5. 命令行展开

6. 文件名通配

7. 变量

8. 编程

 

命令行编辑:

光标跳转:

    Ctrl + a:跳到命令行首

    Ctrl + e:跳到命令行尾

    Ctrl + d:删除光标后一个字符

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

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

    Ctrl + l: 清屏

 

命令历史:

查看命令历史:history

    -c:清空命令历史

    -d OFFSET [n] : 删除指定位置的命令  history -d 500 10 从500开始删除十条命令,默认是一条

    -w: 保存命令历史至历史文件中: 用户家目录下的隐藏文件.bash_history

环境变量

PATH:命令搜索路径

HISTSIZE:命令历史缓冲区大小

 

    命令历史的使用技巧:

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

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

    !! : 执行上一条命令;

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

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

    Esc, .

    Alt + .

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

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

命令别名 : 

alias CMDALIAS = ‘COMMAND [options] [arguments]‘

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

unalias CMDALIAS    取消命令别名

\CMD

 

命令替换:$(COMMAND),反引号:`COMMAND`

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

 

bash支持的引号

`` : 命令替换

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

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

 

文件名通配,glob

* : 任意长度的任意字符

? : 任意单个字符

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

[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]

[:space:] : 空白字符

[:punct:] : 标点符号

[:lower:] : 小写字母

[:upper:] : 大写字母

[:alpha:] : 大小写字母

[:digit:] : 数字

[:alnum:] : 数字和大小写字母

# man 7 glob

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

 

练习:
1、创建a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;

2、显示所有以a或m开头的文件;
# ls [am]*
3、显示所有文件名中包含了数字的文件;
# ls *[0-9]*

# ls *[[:digit:]]*
4、显示所有以数字结尾且文件名中不包含空白的文件;
# ls *[[:space:]]*[0-9]
5、显示文件名中包含了非字母或数字的特殊符号的文件;
# ls *[^[:alnum:]]*

 

 

 

 

 

 

 

 

 

    

linux--bash基础及特性(一)