Bash shell 基础特性 理论+案例详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash shell 基础特性 理论+案例详解相关的知识,希望对你有一定的参考价值。


1.命令历史:history

  环境变量:

    HISTFILE:命令历史记录的条数

    HISTSIZE:~/.bash.history

    HISTFILESIZE:命令历史文件记录历史的条数


    history:默认显示10条历史纪录

    history -n:显示后n条历史记录

    history -d n:删除第n条历史纪录

    history -c:删除所有历史记录

    history -a:手动追加当前会话缓冲区中的历史命令至历史文件中

   

    !n:重复执行第n条命令

     !!:重复执行上一条命令

     !加命令的开头几个字母:重复执行最近一次以这几个字母开头的命令

   

     控制命令历史的记录方式:

            环境变量:HISTCONTROL:

            ignoredups:忽略连续重复的命令

            ignorespace:忽略以空格开头的命令

            ignoreboth:ignoredups,ignorespace

[[email protected] ~]# history                         //查看命令历史,默认显示10条历史纪录
   28  history
   29  ls
   30  history | more
   31  history
   32  history | more
   33  ls
   34  cd
   35  ls
   36  cd /.bash.hisory
   37  history
[[email protected] ~]# history 5                       //查看最近5条命令历史
   34  cd
   35  ls
   36  cd /.bash.hisory
   37  history
   38  history 5
[[email protected] ~]# history -d 36                   //删除第36条命令历史,
[[email protected] ~]# history 5                       //再次查看,发现已经被删除了
   35  ls
   36  history
   37  history 5
   38  history -d 36
   39  history 5
[[email protected] ~]# history -c                      //删除所有历史
[[email protected] ~]# history
   31  history
[[email protected] ~]# history -a
[[email protected] ~]# 

[[email protected] ~]# cd /
[[email protected] /]# ls
123  boot   dev   lib         media  proc  selinux  tmp  var
abc  data   etc   lib64       mnt    root  srv      usr  xxl
bin  data1  home  lost+found  opt    sbin  sys      uzz
[[email protected] /]# cd 
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# history
   31  history
   32  history -a
   33  cd /
   34  ls
   35  cd 
   36  ls
   37  history
[[email protected] ~]# !33                             //重复执行第33条历史命令
cd /
[[email protected] /]# cd
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# !!                              //重复执行上一条命令
ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# !c                              //重复执行最近一次以c打头的命令
cd
[[email protected] ~]# 

[[email protected] ~]# history
    2  cd /
    3  ls
    4  cd 
    5  ls
    6  history
    7  cd /
    8  cd
    9  ls
   10  cd
   11  history
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# history                            //默认重复执行的命令不被记录
    4  cd 
    5  ls
    6  history
    7  cd /
    8  cd
    9  ls
   10  cd
   11  history
   12  ls
   13  history
[[email protected] ~]#  cd /
[[email protected] /]# 
[[email protected] /]# history
    6  history
    7  cd /
    8  cd
    9  ls
   10  cd
   11  history
   12  ls
   13  history
   14   cd /
   15  history
[[email protected] /]# export HISTCONTROL="ignorespace"          //设置以空格打头的命令不被记录
[[email protected] /]#  cd 
[[email protected] ~]# 
[[email protected] ~]# history
    8  cd
    9  ls
   10  cd
   11  history
   12  ls
   13  history
   14   cd /
   15  history
   16  export HISTCONTROL="ignorespace"
   17  history
[[email protected] ~]#


2.命令补全和路径补全

  linux中命令和路径众多,在使用过程中难免会忘记,bash shell提供的命令补全功能弥补了这一缺陷。只需要给出命令的前几个字母,bash会根据PATH环境变量定义的路径,从左到右查找以给定命令名命名的文件,第一次查找到的即为要运行的文件。

  按tab键即可自动补全,如果还未不全,可再敲一次tab键,从给出的选项中选择要执行的命令,或者再对给出一些提示。

[[email protected] ~]# e                 //输入e按tab,发现以e打头的命令有很多,再按一次tab,列出所有
e2freefrag             envsubst               eu-objdump
e2fsck                 eqn                    eu-ranlib
e2image                eqn2graph              eu-readelf
e2label                era_check              eu-size
e2undo                 era_dump               eu-stack
echo                   era_invalidate         eu-strings
ed                     esac                   eu-strip
editdiff               espdiff                eu-unstrip
edquota                ether-wake             eval
efibootmgr             ethtool                ex
egrep                  eu-addr2line           exec
eject                  eu-ar                  execstack
elif                   eu-elfcmp              exit
elinks                 eu-elflint             expand
else                   eu-findtextrel         export
enable                 eu-make-debug-archive  expr
env                    eu-nm                  
[[email protected] ~]# echo             //输入ec,按回车,显示echo

[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  /敲tab补全



本文出自 “技术成就梦想” 博客,请务必保留此出处http://xuxiaoliang.blog.51cto.com/10882951/1921930

以上是关于Bash shell 基础特性 理论+案例详解的主要内容,如果未能解决你的问题,请参考以下文章

bash 特性详解需整理

Linux bash基础特性二

Linux基础3-1 Bash及其特性

Linux基础3-1 Bash及其特性

CentOS系统Shell编程语言基础之Bash的基础特性简介

[鸟哥linux视频教程整理]03_03_bash特性详解续