Linux bash特性

命令补全

shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令。而在很多情况下,我们对某些命令可能会记得不牢固,从而敲错,这个时候就可以用上bash的命令补全机制了。

命令查找机制:

  • 查找内部命令
  • 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名
  • 给定的起始字符串如果能惟一标识某命令程序文件,则直接补全。
  • 不能惟一标识某命令程序文件,再击tab键一次,则会给出列表。

 

路径补全

在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件
tab:如果能惟一标识,则直接补全,否则,再一次tab,给出列表。

命令行展开

命令行展开也为bash的一大特性,即使用带~和{}

  • ~:自动展开为用户的家目录,或指定的用户的家目录
  • {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径。

命令的执行状态结果

Linux的命令执行,无非两种结果,即成功或者失败,而在bash里会用返回值0-255来标识命令的执行状态。

0:成功

1-255:失败

在命令执行完成之后,其状态返回值保存于bash的特殊变量$?中。

 

快捷键

  • Ctrl+a:跳转至命令行行首
  • Ctrl+e:跳转至命令行行尾
  • Ctrl+u:删除行首至光标所在处之间的所有字符
  • Ctrl+k:删除光标所在处至行尾的所有字符
  • Ctrl+l:清屏,相当于clear

命令行历史

shell进程会在其会话中保存此前用户提交执行过的命令。而命令历史主要使用命令history来实现。

命令用法:
history

  • -c: 清空命令历史
  • -d :删除指定命令历史
  • -r: 从文件读取命令历史至历史列表中
  • -w:把历史列表中的命令追加至历史文件中
  • history #:显示最近的#条命令

日常使用:

  • !#:再一次执行历史列表中的第#条命
  • !!:再一次执行上一条命令
  • !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令
  • 调用上一条命令的最后一个参数
  • 快捷键:ESC, .
  • 字符串:!$

我们还可以通过修改环境变量来定制history命令的一些功能

  • HISTSIZE:指定shell进程可保留的命令历史的条数
  • HISTFILE:指定持久保存命令历史的文件.bash_history
  • HISTFILESIZE:指定命令历史文件的大小

命令别名(alias)

命令别名即可以在bash中为我们经常使用的一些命令定义某个简短的命令,从而增加工作效率,比如我们要打开网卡文件,即可以将vim /etc/sysconfig/network...等一大串的命令即参数直接定义为vimnet即可。这样会方便管理惭怍,除此之外,linux自身也会自带一些命令别名。

 alias
显示当前shell进程所有可用的命令别名;

 

文件名通配(globbing)

 

globbing:文件名通配(整体文件名匹配,而非部分)

匹配模式:元字符

  • *:匹配任意长度的任意字符
  • ?:匹配任意单个字符
  • []:匹配指定范围内的任意单个字符
  •   有几种特殊格式:

    [a-z], [A-Z], [0-9], [a-z0-9]
    [[:upper:]]:所有大写字母
    [[:lower:]]:所有小写字母
    [[:alpha:]]:所有字母
    [[:digit:]]:所有数字
    [[:alnum:]]:所有的字母和数字
    [[:space:]]:所有空白字符
    [[:punct:]]:所有标点符号

 

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

    [^[:upper:]]
    [^0-9]
    [^[:alnum:]]

posted @ 2020-11-26 16:51  anonyme01  阅读(61)  评论(0)    收藏  举报