首页 > 代码库 > Linux之bash的特性

Linux之bash的特性

bash的特性
(1)常用组合快捷键:,ctrl+d

         Ctrl+a: 跳转至命令行首

         Ctrl+e: 跳转至命令行尾 

         Ctrl+u: 删除命令行首至当前光标所在处之前的所有内容

         Ctrl+k: 删除当前光标所在处至命令行尾的所有内容

         Ctrl+l: 清屏

         Ctrl+c: 中止或取消

         Ctrl+z: 把当命令送至后台

         Ctrl+d:回到登陆用户登陆界面

(2)命令补全:命令的补齐,参数中目录或文件的补齐

         当输入命令的部分是唯一的时候按TAB键就可以不全剩下的部分

         当输入命令的部分不是唯一的,按两次TAB就可以列出所有以输入部分开头的命令        F30A7FC4269A42BDB634FE31CA08F9D4

         注意:命令的选项是不能补齐的。

(3)路径补全:

         当输入路径中文件名唯一部分是可以TAB补全此文件名

         当输入路径中文件名不是唯一部分是可以按两个TAB来列出有哪些以此路径开头的目录。        4E0E72E528B04239982E8E3DC1D191E5

(4)历史命令:history,上下光标键,!N,!!

        保存的条数: echo $HISTSIZE

        环境变量:HISTSIZE       B8AA96994CD945CB80A3626113CEAA41

       用户退出时的持久保存位置:

       环境变量:HISTFILE,通常默认为用户家目录下的.bash_history       91248401021945238687E07A240AABF7

      此文件中可保存的最大数目:echo $HISTFILESIZE 

       环境变量:HISTFILESIZE      9841283490C04AD4A430F678038418AE

       用法:

       history N: 显示最近的N条,包括当前命令自身;

       history -c: 清空命令历史

       history -d offset: 删除指定的偏移处的命令条目

       history -a [/path/to/some_history_file]: 将当前会话中的命令历史写入指定文件    872853E3B2B548B8B23EAE93F1A19548

       bash调用命令历史列表中的命令:

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

       !!: 执行上一条命令

       !string: 执行命令历史中最近一次以string开头的命令;

       !$: 调用上一条命令的最后一个参数

       ESC, .:功能同上     DDBE1A2240494DC5A78090B724152660

(5)命令别名:alias,unalias

        定义一个命令让他具有别的命令加参数的功能

        which COMMAND查看命令路径和别名。    D8C62CD82C85480490C749B3A58BE4D6

(6)前台进程,后台进程,作业控制:&,ctrl+z,fg,bg,jobs

        前台作业:通过终端启动,并在终止之前一直占据着终端

        后台作业:作业启动之后即运行于后台,释放前台

        交互式模式:手动启动的非守护进程类的程序,一般都运行于前台;

        如何将作业运行于后台:

        1、运行中的作业:

        Ctrl+z

        送往后台后,作业处于STOPPED状态

        启动top命令。ctrl+z送往后台,发现状态时stopE63D623060254460B0F78B4539EFDD78

        2、尚未启动作业:

        COMMAND &       查出的是command的进程号DE614557570D465FB8429F4E6286C10B

        此类由手动方式控制的作业,与终端相关作业会被终止;如果把作业送往后台,且与终端无关:

        # nohup COMMAND &

        作业:作业号

        # jobs

6C5D268EEB0F42EFB9F98F33DD479D61

        作业控制命令:

        # fg [[%]JOBNUM]: 将指定的作业调回前台

        # bg [[%]JOBNUM]: 让送往后台的作业在后台继续运行

        # kill %JOBNUM: 终止指定的作业


(7)重定向:>,>>,<,<<(here document)
        文件:文件系统(内核)

              标准输入:0      键盘            

              标准输出:1      监视器

              错误输出:2       监视器 

         重定向意味着:改变其标准位置

         输出重定向:

         COMMAND > POSITION:覆盖输出

         COMMAND >> POSITION: 追加输出         EC126F2C9E764765BCB2A4DD02434433

          错误重定向:

          COMMAND 2> POSITION:覆盖输出

          COMMAND 2>> POSITION: 追加输出          A84685E40BDA4C68886AD80F1EF7411D

          合并重定向:

          COMMAND &> POSITION   正确错误的信息都输出到hello.txt文件中          C1358C1E010D404C895532B66499CCF9

          COMMAND > POSITION 2> &1        

278ACAA9B0014D139C30CDCE723591C3

          分别重定向

          COMMAND > POSTION 2> POSTION2

          如果命令正确,在向POSTION输入信息时,也向POSTION2输入空白信息。

4454F2F1DFE240DC96115E07DDDCC72A

          输入重定向:

          COMMAND < POSTION

5063D694C35642D2B935A032DA4A7ADC

(8)管道(|):command1 | command2 | command3 | command4

          将command1的结果给command2,再将command2的结果给command3,这样递交。

72B8E9ADBC9E434B996C557CDB51CBB0

(9)文件名通配(globbing):

     *: 任意长度的任意字符

A082E2C6850C4418ADA10385873531C2

     ?: 匹配任意单字符

B5C0A7BD1D8A4A28852ADF6901BD176B

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

     [abc], [a-z], [0-9], [0-9a-z]       EE488D10560E4F479821E0EBE9881D16

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

      [^0-9a-z]    DC82D2425ADA4568BE5DEC08320A8DF4

       字符集合:

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

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

       [:lower:] :所有小写字母

       [:upper:]:所有大写字母

       [:digit:]:所有数字

       [:alnum:]:任意字母和数字

       [:alpha:]:任意字母

(10)字符串操作

      字符串切片: 
      ${string:offset:length}         
B3C6685FF2A54FE68965BB347A717686
      取尾部的指定个数的字符: 
      ${string: -length} 
 
E824FAA3C4024974AC6D45FFE33A2563
      取子串:基于模式 
      ${variable#*word}:在variable中存储字串上,自左而右,查找第一次出现word,删除字符开始至此word处的所有内容; 
      ${variable##*word}:在variable中存储字串上,自左而右,查找最后一次出现word,删除字符开始至此word处的所有内容; 
      file=‘/var/log/messages‘ 
      ${file#*/}: 返回的结果是var/log/messages 
      ${file##*/}: 返回messages 

      abc=‘helloword‘

59C4F14A6332436FB06759635CDC8695
      ${variable%word*}: 在variable中存储字串上,自右而左,查找第一次出现word,删除此word处至字串尾部的所有内容; 
      ${variable%%world*}:在variable中存储字串上,自右而左,查找最后一次出现word,删除此word处至字串尾部的所有内容; 
      file=‘/var/log/messages‘ 
      ${file%*/}: 返回的结果是/var/log 
      ${file%%*/}: 返回结果为空 
17AAF0BE23FC41AB98512055F208633F
      phonenumber=‘010-110-8‘ 
      ${phonenumber%%-*} 
      ${phonenumber##*-} 

      查找替换: 
      ${variable/pattern/substi}: 替换第一次出现 
      ${variable//pattern/substi}:替换所有的出现 
EFC2E1E8BFB74A8498E36EC1580E1124
      ${variable/#pattern/substi}:替换行首被pattern匹配到的内容 
      ${variable/%pattern/substi}: 行尾 
FED44B1D59844EB5AC9B4F01558DE962
      pattern可以使用globbing中的元字符: 
      * 、?
               
      查找删除: 
      ${variable/pattern} :删除variable左到右第一个被pattern匹配到的
      ${variable//pattern} :删除variable左到右所有被pattern匹配到的

0CDA93F3BF54444299906F9D4197745E
      ${variable/#pattern} :删除variable行首被pattern匹配到的
      ${variable/%pattern} :删除variable行尾被pattern匹配到的
74B0C8CFF29642AFBBBDEA3EE2CC0915
      大小写转换: 
      小-->大:${variable^^} 
      大-->小:${variable,,}

8D83ACCED64F410F88F555F7F629B981

(11)命令行展开

      {}:

      /tmp/{x,y}

      /tmp/x, /tmp/y

AF3FF443CE1C46AA890843E692BE18AC






本文出自 “aolens·程超” 博客,请务必保留此出处http://aolens.blog.51cto.com/7021142/1534310