文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>RHCE033--BASH

RHCE033--BASH

时间:2010-09-27  来源:twenty_four

 
    一、Shell简介
  1. Shell:命令行解释器,是用户与系统沟通时的媒介。
  2. 编写一个shell脚本:
    [root@localhost ~]# vim 51cto.sh
    [root@localhost ~]# cat 51cto.sh
    #!/bin/bash
    #author:twenty_four
    #blog-link:http://twentyfour.blog.51cto.com/
    #date:2010-10-27 21:30
    echo `ls`
    date                      //显示当前时间 
    [root@localhost ~]# chmod +x 51cto.sh   //赋予执行权限
    [root@localhost ~]# sh 51cto.sh   //执行脚本
    Mon Sep 27 06:32:43 PDT 2010
  3. 在Unix系统中有各种Shell,Linux采用bash为其默认shell
  4. 系统可以使用的shell记录在/etc/shells中
  5. Red Hat Linux 中可用的shell:
    [root@localhost ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/tcsh
    /bin/csh
    /bin/ksh
     
    二、Bash的预定义环境变量
    在bash中有很多预定义环境变量
    系统通过预定义环境变量来定义shell的环境
    用户可以用set或env查询当前的环境变量
    常用的预定义变量:
    HOME:当前用户的主目录
    PATH:当前用户的可执行文件搜索路径
    LANG:程序应该使用的默认语言
    可以用 ”echo $变量“ 的方式来查询变量的值:
    [root@localhost ~]# echo $LANG
    en_US.UTF-8
    [root@localhost ~]# echo $HOME
    /root
     
    三、history
  6. 在bash中输入history指令可以查询用户的过往操作。
  7. 例如,history 10 会显示最后的10个命令:
    [root@localhost ~]# history 10
      544  chmod +x 51cto.sh
      545  sh 51cto.sh
      546  set
      547  env
      548  echo $HOME
      549  echo $LANG
      550  echo $PATH
      551  echo $HOME
      552  history
      553  history 10             //看出这可是我敲的第553条命令
    如果直接输入history会列出所有输入过的命令
    [root@localhost ~]# HISTSIZE=20  //把记录的历史指令数定义为20条
    [root@localhost ~]# history
      535  chmod +x 51cto.sh
      536  sh 51cto.sh
      537  ls
      538  rm 51cto*
      539  ls 51
      540  ls
      541  vim 51cto.sh
      542  cat 51cto.sh
      543  chmod +x 51cto.sh
      544  sh 51cto.sh
      545  set
      546  env
      547  echo $HOME
      548  echo $LANG
      549  echo $PATH
      550  echo $HOME
      551  history
      552  history 10
      553  HISTSIZE=20
      554  history
  8. 内存中记录的过往指令数根据环境变量中HISTSIZE而定。
  9.  
    四、调用过往指令
  10. 使用 ! 来调用过往指令:
  11. !!:重复执行上一条指令
    !a:重复执行上一条以a为首的指令
    !number:重复执行上一条在history表中记录号码为number的指令
    可以用<ctrl+r>来在history表中查询某条过往指令
    [root@localhost ~]# ls 51cto.sh
    51cto.sh
    [root@localhost ~]# !!  //重复执行上一条指令
    ls 51cto.sh
    51cto.sh
    [root@localhost ~]# !ls  //重复执行上一条以ls为首的指令
    ls 51cto.sh
    51cto.sh
    [root@localhost ~]# history 3   //查看最后输入的3条命令
      571  ls 51cto.sh
      572  ls 51cto.sh
      573  history 3
    [root@localhost ~]# !572   //重复执行上一条在history表中号码为572的指令
    ls 51cto.sh
    51cto.sh
     
    五、alias (别名)
  12. 用户可以alias来为一条命令取一个简单的别名。
  13. 大多数的shell中,别名是用来缩短长命令行或执行一连串短明令的一个简单方法。
    我们可以在命令行下键入alias 51cto=‘ll’,以定义51cto为ll的一个别名,
    例如:
    [root@localhost ~]# ll
    total 124
    -rwxr-xr-x 1 root root   115 Sep 27 06:32 51cto.sh
    -rw------- 1 root root   943 Sep 23 17:56 anaconda-ks.cfg
    -rw-r--r-- 1 root root    30 Sep 26 19:42 cisco
    …….
    [root@localhost ~]# alias 51cto='ll'  //定义ll的别名为51cto
    [root@localhost ~]# 51cto    //本身51cto是一个无效命令
    total 124
    -rwxr-xr-x 1 root root   115 Sep 27 06:32 51cto.sh
    -rw------- 1 root root   943 Sep 23 17:56 anaconda-ks.cfg
    -rw-r--r-- 1 root root    30 Sep 26 19:42 cisco
    …...
  14. 在shell下键入alias可以查询当前alias列表。
  15. [root@localhost ~]# alias
    alias 51cto='ll'
    alias cp='cp -i'
    alias l.='ls -d .* --color=tty'
    alias ll='ls -l --color=tty'
    alias ls='ls --color=tty'
    alias mv='mv -i'
    alias rm='rm -i'
    …….
  16. 用户也可以用unalias来取消一条别名记录。
  17. [root@localhost ~]# unalias 51cto   //取消别名
    [root@localhost ~]# 51cto     //发现命令无效了
    -bash: 51cto: command not found
  18. alias记录在shell中总是先行。
  19. [root@localhost ~]# alias date='ls'   //定义别名
    [root@localhost ~]# date   //发现date以别名生效,而不是显示日期了
    51cto.sh         cisco    file1  install.log      linux    ok.txt      
    unix                anaconda-ks.cfg  Desktop  file2  install.log.syslog 
    linuxer  twenty_four
    [root@localhost ~]# unalias date     //去掉别名
    [root@localhost ~]# date         //显示时期
    Mon Sep 27 07:24:14 PDT 2010
     
    六、命令行表达式
  20. 命令行输出——“ ”
  21. 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义。
    命令行输出——‘ ’
    将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义。
    执行引用符——`  ` (后引号,针对命令,在后引号下的命令会执行)
    引用命令的执行结果
    例如:
    [root@localhost ~]# cat 51cto.sh
    #!/bin/bash
    #author:twenty_four
    #blog-link:http://twentyfour.blog.51cto.com/
    #date:2010-10-27 22:40
    var=hello         //不是有效命令
    echo "var is $var"
    echo 'var is $var'
    var=date         //是有效命令
    echo "$var"
    echo `$var`
    [root@localhost ~]# chmod +x 51cto.sh
    [root@localhost ~]# sh 51cto.sh
    var is hello         //包含特殊含义的字符$,则转义生效
    var is $var          //直接输出
    date                    //包含特殊含义的字符$,则转义生效
    Mon Sep 27 07:47:37 PDT 2010             //在后引号下的命令会执行date
     
  22. 数学运算——$[ ]
  23. 在中括号内的表达式会被数学计算
    [root@localhost ~]# echo $[51+51]
    102
  24. 逸脱符——\
  25. 用于取消命令行中字符的特殊含义:
    [root@localhost ~]# mkdir aa\bb         //加逸脱符" \ "后,系统认为空格非间隔符,
     所以建立了一个目录aabb
    [root@localhost ~]# ls
    aabb  
    …..
    [root@localhost ~]# cd aabb/
    [root@localhost aabb]# mkdir aa bb  //不加逸脱符 \ ,系统认为是建立两个目录aa 和 bb
    [root@localhost aabb]# ls
    aa  bb
    用于表示一行未结束:
    [root@localhost ~]# 51cto\
    > 51cto.com
    -bash: 51cto51cto.com: command not found
    看得出显示命令51cto51cto.com无效,所以命令被整合了
  26. 命令行结束符——;
  27. 用于在一行内分隔两个独立命令,表示一行已结束,作用相当于回车键
    [root@localhost ~]# date ; pwd
    Mon Sep 27 08:16:10 PDT 2010  //这是date的结果
    /root            //这是pwd显示当前目录的结果
     
    七、逻辑运算符
    shell命令行支持在同一行的两条命令中插入&&(逻辑与)与  ||(逻辑或)
  28. &&:当前一条指令执行成功时再执行后一条指令
  29. [root@localhost ~]# pwd && date
    /root
    Mon Sep 27 08:23:45 PDT 2010
  30.  ||:当前一条指令执行失败时再执行后一条指令
  31. [root@localhost ~]# 51cto || date
    -bash: 51cto: command not found
    Mon Sep 27 08:24:21 PDT 2010
     
    八、定制登录shell
  32. bash 在用户登录时从四个文件中读取环境设定:
  33. 全局设置文件:
         /etc/profile
         /etc/bashrc
    用户设置文件:
         ~/.bashrc
         ~/.bash_profile
  34. 其他shell设定文件
  35. ~/.bash_logout:在用户logout的时候自动执行。
    ~/.bash_history:用户login时自动读取其内容并加载到内存history记录中,logout时将内存history记录写入。
    /etc/profile.d/*.sh:在/etc/profile中被执行,其中的环境设定,也会被全局引用
     
    九、常用快捷键
    Ctrl + d:输入已结束。在shell下相当于一个exit
    Ctrl + c:键盘中断请求。
    Ctrl +s & Ctrl + q:暂停/恢复屏幕输出
    Ctrl + l:清屏,相当于clear。
    Tab:自动补完命令行与文件名
               Tab键双击可以列出所有可能匹配的选择
    Ctrl+a   光标移到行首
    Ctrl+e   光标移到行尾
    Esc+f   光标移到下一个单词的开始处
    Esc+b  光标移到前一个或当前单词的开始处
    Ctrl+k   从光标所在处删除到行结尾
    Ctrl+u   删除整行
     
相关阅读 更多 +
排行榜 更多 +
正太寿司屋游戏安卓版下载

正太寿司屋游戏安卓版下载

模拟经营 下载
波比的游戏时间第七章手游下载

波比的游戏时间第七章手游下载

休闲益智 下载
像素火影(次世代)千手扉间下载

像素火影(次世代)千手扉间下载

飞行射击 下载