bash的特性

命令行编辑

Ctrl+a: 将光标调至命令行首
Ctrl+e: 将光标调至命令行尾
Ctrl+u: 删除光标前的所有内容
Ctrl+k: 删除光标后的搜有内容

命令别名

在shell中定义的别名仅在当前shell生命周期中有效,别名的有效范围仅为当前shell进程。如果shell中的某个命令本身具有别名,利用COMMAND来执行命令本身的功能。

    # alias COMMANDALias='COMMAND [option] [argument]' (最好使用单引号)
    # alias 显示系统中所有的命令别名)
    # unalias COMALIAS 取消命令别名

命令替换

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

    $(COMMAND),反引号:`COMMAND`
    # echo "The current directory is $(pwd)"
    创建一个以当前时间命名的文件如:file-2018-01-30-20-39.txt
    # touch ./file-$(date +%F-%H-%M-%S).txt 

命令历史

  • 命令history可以查看命令执行的历史
    -c: 清空命令历史
    -d OFFSET [n]: 删除指定位置的命令
        -d 510 3: 从第510个记录向后删除共计三个
    -w: 保存缓冲区命令历史至历史文件中(历史文件在用户家目录下的.bash_history)
  • 命令历史使用的技巧
!n: 执行命令历史中第n条命令;
!-n: 执行命令历史中倒数第n条命令;
!!: 执行上一条命令; 
!string: 执行命令历史中最近一个以指定字符串开头的命令;
!$: 引用前一个命令的最后一个参数;(或者按Esc松开按.或者按Alt+.)

命令&&路径补全

  • 命令补全

搜索PATH环境变量所指的每个路径下以我们给出的字符串开头的可执行文件,在命令搜索路径下查找

  • 路径补全

搜索我们给出的起始路径下的每个文件名,并试图补全,在给定打头路径下查找

bash支持的引号

  • “: 命令替换
  • “”: 弱引用,可以实现变量和命令替换
  • ”: 强引用,不能实现变量替换

文件名通配 globbing

  • ” * “: 匹配任意个任意字符
  • ” ? “: 匹配任意单个字符
  • ” [] “: 匹配指定范围内的单个字符
    [:space:]: 空白字符
    [:punct:]: 标点符号
    [:lower:]: 小写字母
    [:upper:]: 大写字母
    [:alpha:]: 大小写字母
    [:digit:]: 数字
    [:alnum:]: 数字和大小写字母
  • ” [^] “: 匹配指定范围外的单个字符
[[:alpha:]]*[[:space:]]*[[:alpha:]]
    
练习:
1、创建a123, cd6, c78m, c1, my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分
2、显示所有以a或m开头的文件;
3、显示所有文件名中包含了数字的文件;
4、显示所有以数字结尾且文件名中不包含空白的文件;??????    ls *[^[:space:]]*[0-9]
5、显示文件名中包含了非字母或数字的特殊符号的文件。
    原文作者:Dabric
    原文地址: https://segmentfault.com/a/1190000015615775
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞