码迷,mamicode.com
首页 > 系统相关 > 详细

Linux学习笔记<四>——bash特性

时间:2015-07-22 11:07:01      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:linux学习 bash特性

shell:人机交换的接口,将相关命令处理后递交给内核,内核再通过系统调用驱动硬件执行。

shell的分类:

GUI:Gnome,KDE,Xfce

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


程序的概念:

程序是经编译后形成的二进制可执行文件

进程的概念:

进程是程序的副本,是程序执行实例,在每个进程看来,当前主机上只存在内核和当前进程


bash的特性(或者说功能):

1.命令行历史、命令行补全

2.命令行编辑

3.命令别名

4.命令替换

5.文件名通配

6.管道,I/O重定向

7.变量

8.shell编程



1.命令行历史、命令行补全

history:查看命令行历史(记录暂时保存在内存缓冲区)

    -c:清除命令历史

    -d 数字:删除指定位置的命令

    -w:保存命令历史至家目录历史文件(.bash_history)退出登陆时会将内存缓冲区中的命令         行历史写入.bash_history中


命令历史的使用技巧:

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

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

!!:执行上一条命令;

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

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

按Esc键松开后按.和Alt+.:引用前一个命令的最后一个参数

Ctrl+r键:在命令行中搜索命令历史并可按Enter键快速执行


历史命令相关的环境变量:

HISTFILESIZE定义了.bash_history文件中保存的命令条目

HISTSIZE定义了history命令能够显示的最多条目

HISTTIMEFORMAT定义了history命令的时间格式,典型配置是HISTTIMEFORMAT=‘ %F %T ’

技术分享


命令行补全:

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

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



2.命令行编辑

常用的组合键:

Ctrl+p:相当于↑键

Ctrl+n:相当与↓键

Ctrl+b:相当于←键

Ctrl+f:相当于→键

Ctrl+e:跳到行尾

Ctrl+a:跳到行首

Ctrl+u:一行中删除光标左边的全部内容

Ctrl+k:一行中删除光标右边(包含光标指定的字符)的全部内容



3.命令别名

alias:直接键入alias显示当前shell下可用的别名

alias STRING=‘CMD [options] [arguments]’

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


ualias STRING:删除别名


若STRING原本为命令, \STRING 表示忽略别名,直接执行原有的STRING



4.命令替换

命令替换是在一个命令中使用另一个命令的输出结果,如COMMAND1 `COMMAND2`

$(COMMAND) `COMMAND`


bash支持的引号:

``:反引号,用于命令替换

"":双引号,弱引用,可以实现变量替换,把变量替换成变量的值

‘‘:单引号,强引用,不能实现变量替换


5.文件名通配(globbing)

*:任意长度的任意字符

?:任意单个字符

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

    [a-z] [A-Z] [a-zA-Z] [0-9a-zA-Z]

    [[:space:]]:空白字符

    [[:punct:]]:标点符号

    [[:lower:]]:小写字母

    [[:upper:]]:大写字母

    [[:alpha:]]:大小写字母

    [[:digit:]]:数字

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

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



6.I/O重定向、管道

常见INPUT设备:键盘、鼠标、硬盘等

常见OUTPUT设备:显示器、音响、硬盘等

系统设定:

    默认输出设备:标准输出,STDOUT,1

    默认输入设备:标准输入,STDIN,0

    标准错误输出:STDERR,2

标准输入:键盘

标准输出和错误输出:显示器


I/O重定向:

>:覆盖输出,将输出转到指定其他地方

>>:追加输出

set -C:禁止对已经存在文件使用覆盖重定向;

    强制覆盖输出,则使用>|

set -C:关闭上述功能

2>:重定向错误输出

2>>:追加方式

&>:重定向标准输出或错误输出至同一个文件


<:输入重定向

例子: cat>catfile<etc/profile

<<:结束的输入符号

技术分享


管道(pipe):前一个命令的输出,作为后一个命令的输入

COMMAND1 | COMMAND2 | COMMAND3...

例子:cut -d: -f1 | head -1 | id



7.变量

变量:可以理解为命名的内存空间

内存:编址的存储单元


变量类型:事先确定数据的存储格式和长度

    字符

     数值型

        整型

        浮点型

    布尔型


bash变量分类:

    环境变量:作用域为当前shell进程记起子进程

        export VARNAME=VALUE

        VARNAME=VALUE

        export VARNAME

    本地变量:作用域为整个bash进程

        set VARNAME=VALUE

    局部变量:作用域为当前代码段

        local VARNAME=VALUE

    位置变量:shell编程时,传递的参数,在.sh文件中第一个参数可表示为$1,第二个为$2...

    特殊变量:

        $?:上一个命令的执行状态返代码(0-255)

            0:正确执行

            1-255:错误执行,1、2、127系统预留


变量操作

撤销标量:unset VARNAME

查看当前shell中的所有变量:set

查看当前shell中的环境变量:

    printenv

    env

    export

    



Linux学习笔记<四>——bash特性

标签:linux学习 bash特性

原文地址:http://chenqiyi.blog.51cto.com/8125763/1676891

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!