Linux学习---bash及其特性

bash及其特性

shell:外壳

GUI:Gnome,KDE,Xfce

CLI:sh,csh,ksh,bash(Bourne-Again SHell),tcsh,zsh


不同用户启动相同sh程序,但是是不同的进程。

进程:在每个进程看来,当前主机上只存在内核和当前进程。

进程是程序的副本,也是程序执行的实例,具有生命周期。


用户工作环境

bash:不同用户的工作环境设定可以不同。

         # root

         $user


shell:有子shell的概念。可以交互打开。


bash:

1、命令历史,命令补全

2、管道、重定向

3、命令别名

4、命令行编辑

5、命令行展开

6、文件名通配

7、支持变量

8、支持编程


特性:

一、命令行编辑

光标跳转:Ctrl+a   跳到命令行首

                  Ctrl+e  跳到命令行尾

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

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

                  Ctrl+左右箭头  一次跳一个单词

                  Ctrl+l  清屏

                 

二、命令历史

    自动记录使用过的命令,保存在内存的一段缓冲区中。

    使用 history 查看命令历史。

           -c:清空命令历史

           -d OFFSET [n]:删除指定位置历史列表。 history -d 300 20 

     当用户退出,会在用户家目录下追加此前的命令历史到.bash_history隐藏文件。

            -w:将缓冲区的命令历史至历史文件中    

命令补全:

在PATH环境变量下搜索补全。

路径补全:


环境变量:

PATH:命令搜索路径

HISTSIZE:命令历史大小

[root@localhost ~]# echo $HISTSIZE
1000

命令历史的使用技巧:

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

  324  history
  325  ls -a
  326  echo $HISTSIZE
  327  history
[root@localhost ~]# !326
echo $HISTSIZE
1000

!-n:执行历史中倒数第n条命令。
!!:执行上一条命令。

  328  echo $HISTSIZE
  329  history
[root@localhost ~]# !-2
echo $HISTSIZE
1000
[root@localhost ~]# !!
echo $HISTSIZE
1000
[root@localhost ~]# !!
echo $HISTSIZE
1000

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

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

Esc, . :按下Esc,再按‘点’,引用最后一个参数。  



三、命令别名

alias CMDALIAS='COMMAND [option] [arguments]'

仅在当前shell进程的生命周期有用。别名的有效范围仅为当前shell进程。

[root@localhost ~]# alias cls=clear
撤销别名

[root@localhost ~]# unalias cls
\CMD : 来使用命令本身,而不是别名(当别名和命令名称一样时)

当在~/.bashrc下编辑别名后,可使用 source  .bashrc 命令运行bash。直接使用别名


四、命令替换  $(),或反引号 `COMMAND`

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

[root@localhost sysconfig]# echo "The current directory is $(pwd)."
The current directory is /etc/sysconfig.
[root@localhost sysconfig]# cd /root/
[root@localhost ~]# echo "The current directory is $(pwd)."
The current directory is /root.


[root@localhost ~]# echo "The current directory is `pwd`."
The current directory is /root.


创建 file-2016-5-17-18-52. txt

[root@localhost ~]# touch ./file-$(date +%F-%H-%M-%S).txt

bash支持的引号:

``:反引号,命令替换

"":弱引用,可以实现变量替换,将变量名替换为变量值

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


五、文件名通配,globing

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

?:匹配任意单个字符

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

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

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

[root@localhost test]# touch a123 abc ab123 xyz x12 xyz123
[root@localhost test]# ls
a123  ab123  abc  x12  xyz  xyz123
[root@localhost test]# ls a*
a123  ab123  abc
[root@localhost test]# ls a*3
a123  ab123
[root@localhost test]# ls *y*
xyz  xyz123
[root@localhost test]# touch helloy123
[root@localhost test]# ls *y*
helloy123  xyz  xyz123
[root@localhost test]# touch y123
[root@localhost test]# ls *y*
helloy123  xyz  xyz123  y123
[root@localhost test]# ls ?y*
xyz  xyz123
[root@localhost test]# touch 123
[root@localhost test]# ls [a-zA-Z]*[0-9]
a123  ab123  helloy123  x12  xyz123  y123
[root@localhost test]# ls [^0-9]*
a123  ab123  abc  helloy123  x12  xyz  xyz123  y123


[:space:] : 所有的空白字符  [[:space:]]  空白字符

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

[:lower:] : 小写字母

[:upper:] : 大写字母

[:alpha:] :大小写字母

[:digit:] : 数字

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

[root@localhost test]# man 7 glob   //查看


[root@localhost test]# ls [[:alpha:]]*[[:space:]]*[[:alpha:]] //<span style="font-size: 13.3333px;">匹配文件名中有空白字符的文件</span>
a b
[root@localhost test]# ls [[:alpha:]]*[^[:alpha:]]  //字母开头,非字母结尾
a123  ab123  helloy123  x12  xyz123  y123
































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值