shell基础知识

1. 记录历史命令:

  !!:连续两个!表示执行上一条命令

  

 

  !n:执行命令历史中的第n条命令(n表示数字)

  

 

  !字符串(字符串大于等于1):例如!pw字符串表示执行命令历史最近一次以pw开头的命令

  

 

 

 

2.别名

  格式:alias 【命令别名】=【'具体的命令'】

  alias:取别名

  unalias:解除别名

 

 

3.通配符

  *匹配零个或多个字符

  ?匹配一个字符

  

 

4.输入输出重定向

  

 

 

 

5.管道符:

  

 

 

 

6.作业控制

  Ctrl+Z:暂停

  fg:恢复

  bg:后台运行

  jobs:查看被暂停或者在后台运行的任务

  ps aux:查看进程pid

  &:把这个放在后面会显示pid信息

  

 

 

 

7.变量:

  

 

  (1)env命令:

    HOSTNAME:表示主机的名称。
    SHELL:表示当前用户的shell类型。
    HISTSIZE:表示历史记录数。
    PATH:该变量决定了sel将到哪些目录中寻找命令或程序。
    PMD:表示当前目录。
    LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量。
    HOME:表示当前用户的家目录。
    LOGNAME:表示当前用户的登录名。

    

 

 

 

 

  (2)set命令:

    

      

   显示用户定义的变量:

     bash:进入一个子shell环境

    

 

  使用bash命令可以再打开一个shell,此时先前设置的myname变量已经不存在了。退出当前shel回到
  原来的shll, myname变量还在。让设置的环境变量一直生效:
    允许系统内所有用户登录后都能使用该变量。具体的操作方法是:在/etc/profile 文件的最后一
    行加入export myname-Aming, 然后运行source /etc/profile就可以生效了。此时再运行bash
    命令或者切换到其他账户(如su - test )就可以看到效果。如下所示:
    

       

 

 

     仅允许当前用户使用该变量。具体的操作方法是:在用户主日录下的.bashre文件的最后- -行
    加人export myname Aming,然后运行source ,bashrc就可以生效了。这时再登录test账户,
    myname变量则不会生效了。这里source命令的作用是将目前设定的配置刷新,即不用注销再
    登录也能生效。

    设定变量的格式为a-b,其中a为变量名,b为变量的内容,等号两边不能有空格。
    变量名只能由字母,数字以及下划线组成,而且不能以数字开头。
    当变量内容带有特殊字符(如空格)时,需要加上单引号。示例命令如下:

      变量内容中本身带有单引号,加双引号
      如果变量内容中需要用到其他命令,运行结果则可以使用反引号,
      变量内容可以累加其他变量的内容,但需要加双引号。
      

    

    

 

    在当前shell中运行bash命令会进入一个新的shell

 

     

 

 

    父shell设定的变量进入子shell中,该变量不会生效,让其生效方法是用export指令

    

 

 

     取消变量:

    

 

 

 

 

8.系统环境变量与个人环境变量的配置文件

  /ete/profile:这个文件预设了几个重要的变量,例如PATH、USER、 LOGNAME.、MAIL、 INPUTRC 、
  HOSTNAME、HISTSIZE、 umask等。
  /etc/bashrc:这个文件主要预设umask以及PS1。这个PS1就是我们在输人命令时前面的那串字符。
  例如,阿铭的Linux系统的PS1就是[root@localhost ~]#,我们不妨看一-下PS1的值,如下所示:
    # echo $P51
    [\u@\h \W]\$
  其中,\u指用户,\h指 主机名,\W指 当前目录,\$指字符# (如果是普通用户,则显示为$ )
  除了以上两个系统级别的配置文件外,每个用户的主目录下还有以下几个隐藏文件。
  bash_ profile: 该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用
  该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次。
  bashre: 该文件包含专属于自已的shell的bash信息, 当登录或每次打开新的shell时, 该文件
  会被读取。例如,你可以将用户自定义的别名或者自定义变量写到这个文件中。
  bash_history: 该文件用于记录命令历史。
  bash_logout: 当退出shell时, 会执行该文件。你可以将一些清 理的工作放到这个文件中。

9.特殊字符:

  *代表零个或多个任意字符
  

 

 

  ?只代表一个任意的字符
  

 

 

   注释符号#
  

 

 

  脱义字符\(这个字符会将后面的特殊符号(如* )还原为普通字符。)
  

 

 

 

10.cut命令:用来截取某一个字段
  格式:cut -d '分隔字符' [-cf] n(这里的n是数字)
  -d:后面跟分隔字符,分隔字符要用单引号括起来。
  -c: 后面接的是第几个字符。
  -f:后面接的是第几个区块。
  

 

 

 

11.sort命令:排序
  格式:sort [-t 分隔符] [-kn1,n2] (n1,n2为数字)

  -t:后面跟分隔字符,作用跟cut的-d选项一样。
  -n:表示使用纯数字排序。
  -r:表示反向排序。
  -u: 表示去重复。
  -kn1,n2:表示由n1区问排序到n2区间,可以只写-kn1,即对n1字段排序。
  -k选项后面跟单个数字表示对第几个区域的字符串排序,-n选项则表示使用纯数字排序
  

 

 

 

12.wc命令:统计文档的行数、字符数或词数
  -l:统计行数

  -m:统计字符数

  -w:统计词数

   

 

 

 

13.uniq命令:删除重复的行
  -c:统计重复的行数,并把行数写在前面

  使用uniq前必须先排序

  

 

 

  

 

 

 

 14.tee命令:

  tee命令后面跟文件名,其作用类似于重定向>,但它比重定向多一个功能,即把文件写人后面所
  跟的文件时,还显示在屏幕上(该命令常用于管道符|后)
  

 

 

 

 15.tr命令:替换字符,常用来处理文档中的特殊符号

  -d:表示删除某个字符,后而跟要删除的字符。
  -s:表示删除重复的字符。
  把小写字母变成大写字母:

  

 

 

   替换字符:

  

 

 

 

16.split命令:切割文档

  -b:表示依据大小来分制文档,单位为byte
  -l:表示依据行数来分割文档
  

 

 

   

 

 

 

17.特殊符号
  $:用做变量前的标识符

  

 

 

  ;在一行中运行两个或两个以上的命令

  

 

 

   ~用户的家目录

  

 

 

   &把一条命令放在后台执行,用于运行时间比较长的情况

  

 

 

   重定向符号>、>>、2>和2>>
  重定向符号>和>>,它们分别表示取代和追加的意思。当我们运行一个命令报错时,报
  错信息会输出到当前屏幕。如果想重定向到一个文本,则要用重定向符号2>或者2>>它们分别表示
  错误重定向和错误追加重定向。

  

 

 

   []中括号内为字符组合,代表字符组合中的任意一个,可以是范围

  

 

   $$和||

  

 

   

 

 



posted @ 2020-01-18 19:43  htttt  阅读(191)  评论(0编辑  收藏  举报