bash特性

shell的含义

Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器),是提供用户和内核交互一个程序,广义的shell可以分为GUI图形化界面和CLI命令行界面。
  • GUI图形化界面
    • gnome、kde、xface
  • CLI命令行界面
    • sh、csh、bash、ksh、tcsh、zsh

bash特性

查看当前正在使用的shell语言。
在这里插入图片描述
查看当前可使用的shell语言。
在这里插入图片描述

1.Tab补全、命令历史

文件补全

命令补全

路径补全

在这里插入图片描述

命令历史

  1. 显示历史命令
    在这里插入图片描述

2.支持管道、重定向

重定向可以分为输入重定向以及输出重定向这两种类型。

  • Linux的重定向有三种数据流。
    • 输入信息会从 stdin 中读取(标准输入,通常是键盘或鼠标)。文件描述符号为:0
    • 输出信息会被输出到 stdout (标准输出,一个文本文件或者数据流)。文件描述符号位:1
    • 错误信息会被输出到 stderr。文件描述符号为:2

在这里插入图片描述

重定向符号

> 输出重定向到一个文件或设备 覆盖原来的文件
>| 输出重定向到一个文件或设备 强制覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
command < filename 以filename文件作为标准输入
command 0<filename 以filename文件作为标准输入,使用<对输入做重定向,如果符号左边没有写值,那么默认就是0
command <<EOF 从标准输入中读入,直到遇到EOF分隔符,EOF可以是任何字符

输入重定向可以将输入信息重定向至命令中作为参数使用。该功能可能比较少用,但是,当命令需要一个参数列表时,而这些参数都存在一个文件中,然后你想快速地将它们从文件中复制粘贴到终端,这时这个功能就能派上用场了。

  • cat > 文件名 << EOF开始屏幕输入,直到输入END后结束
  • cat << EOF >文件名,命令效果相同。

注意:cat命令本身是带输入和输出的,这里<<EOF定义了cat命令本次执行时用户输入EOF后结束程序。

在这里插入图片描述
在这里插入图片描述

管道

  • 【|】把前一个命令的执行结果当做后一个命令的输入
    在这里插入图片描述

3.支持命令行展开

 ~:当前用户的家目录
 ~USERNAME:  给定用户的家目录        比如cd ~      cd ~ nick 
{}:可写一个以逗号分割的列表,将其展开为多个路径。

在这里插入图片描述

4.快捷键

  1. 光标回到命令首行:ctrl+a
  2. 光标回到命令行尾:ctrl+e
  3. 复制命令行内容:ctrl+Insert
  4. 粘贴命令行内容:shift+Insert
  5. 剪切光标处到行尾的字符:ctrl+k
  6. 剪切光标处到行首的字符:ctrl+u
  7. 删除光标前的一个单词:ctrl+w
  8. 粘贴删除的文本:ctrl+y
  9. 中断终端正在执行的任务:ctrl+c
  10. 执行上一条命令:!!
  11. 执行最近以字母开头的命令:!+命令首字母
  12. 仅打印最近已ho开头的命令,但不执行: !+命令首字母:p
  13. 执行命令历史列表的第num(数字)条命令:!49
  14. 执行上一条命令的最后一个参数
[root@localhost ~]# ahjsgkahjk ghdsjkg ls
-bash: ahjsgkahjk: command not found
[root@localhost ~]# !$
ls
anaconda-ks.cfg  lishan
  1. 获取上一条命令的最后的部分:esc+.
  2. 移动到当前单词的开头:esc+b
  3. 移动到当前单词的结尾:esc+f

5.支持命令别名

  • alias 命令别名能让较长的命令变得简单,可按自己所需设定!
    在这里插入图片描述
永久设置命令别名
[root@localhost ~]# vim ~/.bashrc       ##~/.bashrc文件只针对当前用户
[root@localhost ~]# source ~/.bashrc	##重新加载文件

在这里插入图片描述

/针对系统所有用户设置命令别名
[root@localhost ~]# vim /etc/bashrc    		##/etc/bashrc 文件针对系统所有用户
[root@allen ~]# source /etc/bashrc      ##重新加载

在这里插入图片描述

//临时命令别名
[root@localhost ~]# cdnet
-bash: cdnet: command not found
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# alias cdnet='cd /etc/sysconfig/network-scripts/'
[root@localhost network-scripts]# cdnet
[root@localhost network-scripts]# cd
[root@localhost ~]# cdnet
[root@localhost network-scripts]# reboot

6.支持文件名通配

通配符是一种特殊语句,用来模糊搜索文件。当查找文件夹或目录时,可以使用它来代替一个或多个真正字符。

通配符:

  ‘   *   ’:匹配任意长度的任意字符(包令0个字符) 
  
[root@localhost ~]# ls
a10b  a1b  a2b  a3b  a4b  a5b  a6b  a7b  a8b  a9b  anaconda-ks.cfg  b  c  d
[root@localhost ~]# ls a*
a10b  a1b  a2b  a3b  a4b  a5b  a6b  a7b  a8b  a9b  anaconda-ks.cfg

 ‘   ?   ’:匹配任意单个字符
 
[root@localhost ~]# ls
a10b  a1b  a2b  a3b  a4b  a5b  a6b  a7b  a8b  a9b  ab  anaconda-ks.cfg  b  c  d
[root@localhost ~]# ls a?
ab

 ‘  [ ]  ’: 匹配指定字符范围内的任意单个字符,通配符本身不会匹分大小写的这一点要注意到。

    [xyz]    # 匹配xyz

    [a-z]    # 匹配a-z的字母集

    [A-Z]   # 匹配大写字母集
   
    [0-9]   # 匹配数字

    [0-9a-zA-Z]   # 匹配数字大小写字母
    
[root@localhost ~]# ls
a10b  a1b  a2b  a3b  a4b  a5b  a6b  a7b  a8b  a9b  ab  anaconda-ks.cfg  b  c  d
[root@localhost ~]# ls a[0-2][a-z]
a1b  a2b

  //建议使用POSI规范来匹配,如下的字符集可以匹分大小写
       [[:upper:]]    所有大写字母
       [[:lower:]]    小写字母
       [[:alpha:]]    大小写字母集
       [[:digit:]]      数字
       [[:alnum:]]   包含数字和字母表
       [[:space:]]    空格
       [[:punct:]]    标点符号
       [^]: 匹配指定范围外的任意单个字符
       [^[:upper:]]
   	   [^0-9]
   	   [^[:alnum:]]
[root@localhost ~]# ls
1      2  4  A     a1b  a3b  a5b  a7b  a9b  anaconda-ks.cfg  b  c  d  E  G  I  K  M  O  Q  S  U  W  Y
{1-5}  3  5  a10b  a2b  a4b  a6b  a8b  ab   {A-Z}            B  C  D  F  H  J  L  N  P  R  T  V  X  Z
[root@localhost ~]# ls [^[:upper:]]*
1      2  4  a10b  a2b  a4b  a6b  a8b  ab               {A-Z}  c
{1-5}  3  5  a1b   a3b  a5b  a7b  a9b  anaconda-ks.cfg  b      d
[root@localhost ~]# ls [^[:digit:]]*
{1-5}  a10b  a2b  a4b  a6b  a8b  ab               {A-Z}  B  C  D  F  H  J  L  N  P  R  T  V  X  Z
A      a1b   a3b  a5b  a7b  a9b  anaconda-ks.cfg  b      c  d  E  G  I  K  M  O  Q  S  U  W  Y
[root@localhost ~]# ls [^[:alnum:]]*
{1-5}  {A-Z}

[root@localhost ~]# ls
a10b  a1b  a2b  a3b  a4b  a5b  a6b  a7b  a8b  a9b  ab  anaconda-ks.cfg
[root@localhost ~]# rm -rf /root/a{1..10}*
[root@localhost ~]# ls
ab  anaconda-ks.cfg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值