Skip to content

Latest commit

 

History

History
77 lines (75 loc) · 3.32 KB

bash的特性.md

File metadata and controls

77 lines (75 loc) · 3.32 KB

bash的特性

命令历史:history

-c:清空当前历史命令;
-d OFFSET [n]:删除指定位置的命令;
-w:将当前历史命令缓冲区命令写入历史命令文件中(HISTSIZE(命令历史缓冲区大小)默认为1000)
  • 命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中倒数第n条命令;
!!:执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用上一个命令的最后一个参数
Esc松开后按 . :引用上一个命令的最后一个参数
Alt+ . :引用上一个命令的最后一个参数

命令补全,路径补全

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

命令别名:alias

alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。

  • alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。
  • alias 新的命令='原命令 -选项/参数' (有选项或参数时要加单引号,若只有命令可以不加单引号)
  • 要删除一个别名,可以使用 unalias 命令
  • alias 可查看所有别名

命令替换:

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

$(COMMAND),`COMMAND`
echo “The current directory is $(pwd).”
touch .file-$(date +%F-%H-%M-%S).txt

【总结】bash支持的引号:

` `:命令替换
“”:弱引用,可以实现变量替换
‘ ’:强引用,不完成变量替换

命令行编辑:

  • 光标跳转:
    • Ctrl+A:跳到命令行首
    • Ctrl+E:跳到命令行尾
    • Ctrl+U:删除光标至命令行首的内容
    • Ctrl+K:删除光标至命令行尾的内容
    • Ctrl+L:清屏

命令行展开

在Linux bash中可以使用命令行展开特性一步完成需要分开成多步完成的操作,达到事半功倍的效果。在Linux指令参数位置使用{} 将相应的参数括起来,括号中的参数以逗号分隔,然后bash在执行这一指令时会自动将括号中的内容进行展开。

  • 例如
/tmp/{x,y}    #生成/tmp/x和/tmp/y
mkdir {1..10}    #生成1-10为名的文件夹
mkdir -p  {1..10}/{1..10}    #在名为1-10的文件夹里再生成1-10为名的文件夹

文件名通配,globbing

# man 7 glob 可获得以下列表:
*:任意长度的任意字符
?:任意单个字符
[ ]:匹配指定范围内的任意单个字符
  [a-z], [A-Z], [0-9], [a-zA-Z]
  [[:space:]]:空白字符
  [[:punct:]]:标点符号
  [[:lower:]]:小写字母
  [[:upper:]]:大写字母
  [[:alpha:]]:大小写字母
  [[:digit:]]:数字
  [[:alnum:]]:数字和大小写字母
  [^]:匹配指定范围之外的任意单个字符
  [^0-9]:非数字
  [^[:alpha:]]:非字母

支持使用变量

编程