shell 的基础知识

shell时系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西——系统内核。用户直接面对的不是计算机硬件而是shell, 用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作

1.shell
     ①命令历史
          !!:表示 执行上一条指令
          !n : 表示 执行命令历史中的第n条指令
          !字符串:!pw 标志执行命令历史中最近一次以 pw 开头的命令
     ②命令和文件名补全,table键;两次table键--系统会把所有的命令或者文件名列出来
     ③别名 alias:显示系统别名;
               自定义 别名:alias【命令别名】=【‘具体的命令’】
               unalias解除别名 :unalias 别名
     ④通配符
          *:匹配零个或多个字符
          ?:匹配一个字符
     ⑤ 输入/输出重定向
          输入重定向用于改变命令的输入,输出重定向用于改变命令的输出
          <输入重定向
          >输出重定向
          2>错误重定向
          >>追加重定向
     ⑥管道符 |
          将前一个人指令的输出作为后一个指令的输入
      ⑦作业控制
          当运行一个进程,可以使它暂停 ctrl + z ,然后用  fg 命令恢复,或是利用bg 命令使它到后台运行,也可以使它终止 ctrl +c 键
          jobs:显示当前被暂停或者在后台运行的任务(末尾有&符号的是在后台运行的任务)
          bg 【任务数字】:暂停的任务放在后台重新运行
          fg【任务数字】:使暂停的任务前台运行
          如何结束被暂停的任务?
               ①如果没有退出当前shell,可以用命令 fg 编号 把任务调到前台,然后按 ctrl + c 结束任务;
               ②如果退出当前shell,再次打开另一个shell时,使用jobs命令并不会显示在后台运行或者被暂停的任务,要想关闭这些任务,则需要先知道它们的pid。
                    vmstat 1 >/tmp/1.log &使用&把任务放到后台运行时会显示 pid信息;如果忘记这个pid,可以使用 ps aux  |grep  名称 找到那个进程的,然后使用 kill pid 结束进程


2.变量
     环境变量 PATH ,是shell预设的一个变量,它代替了所有常用命令的绝对路径的设定;有了这个变量,运行某个命令时就不再需要输入全局路径,直接输入命令即可
      env:列出系统预设的 全部系统变量(环境变量)
          HOSTNAME:主机的名称
          SHELL:当前用户的shell 类型
          HISTSIZE:历史 记录数
          MAIL:当前用户的邮件存放目录
          PATH:决定了shell将到哪些目录中寻找命令和城西
          PWD:表示当前目录
          LANG:与语言相关的环境变量,多语言环境可以修改此环境变量
          HOME:表示当前用户的主目录
          LOGNAME:当前用户的登录名
---------------------------------------------------------------------------------------------------------------
      set:不仅显示系统预设的变量,也可以显示用户自定义的变量
          自定义一个变量:变量名=变量值,但是只能在 当前shell中生效
                自定义变量规则:
                    ① 格式为 a=b,等号两边不能有空格
                    ②变量名只能由字母、数字以及下划线组成,而且不能以数字开头
                    ③当变量内容带有特殊字符(如空格)时,需要加上单引号;如果变量内容本身带有单引号,这时外部就需要加双引号了;如果变量内容需要用到其他命令的运行结果则需要使用反引号 myname=·pwd·;变量内容可以累加其他变量的内容,但需要加双引号 myname=“$PATH”add
                          单引号不会使特殊字符发生其特殊作用,双引号才会使其发生特殊作用

          bash :进入 一个子shell环境中,exit退出
          如何让设置的环境变量一直生效?
               ①允许胸膛呢国内所有用户登录后都能使用该变量:在/etc/profile 文件的最后一行加入 “export 变量名=变量值”(可以使用 >>追加命令),然后运行 source/etc/profile(source !$)就可以生效了
               ② 仅允许当前用户使用该变量:在用户主目录下的.bashrc 文件的租后一行加入“export 变量名=变量值”,然后运行 source  .bashrc 就可以生效了。
                    source命令的作用是将目前设定的配置刷新,即使不用注销再登录也能生效
          pstree:把Linux系统中的所有进程以树形结构显示出来
          在父shell中设定一个变量后,进入子shell时该变量是不会生效的,如果想让这个变量在子shell中生效则要用到export【变量名】指令,如果不加上变量名,则会声明所有的变量
          unset 变量名:取消某个变量


3.系统环境变量与个人环境变量的配置文件
     /etc/profile:这个文件预设了几个重要的变量,例如 PATH、USER\LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask
     /etc/bashrc:主要预设umask以及 PS1,PS1就是在输入命令时,前面的那串字符。【\u@\h \W】\$:\u 指用户 \h  主机名   \W当前目录  \$指字符 #(如果是普通用户则显示 $)
     每个用户的主目录下的隐藏文件:
          .bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称。每个用户可使该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次
          . bashrc:该文件包含专属于自己的shell的bash信息,当登录或每次打开新的shell时,该文件被读取。 可以将用户自定义的alias或者自定义变量写到这个文件中
          .bash_history:用于记录命令历史
          .bash_logout:当退出shell时,会执行该文件。 可以将一些清理的工作放到这个文件中


4.Linux shell 中的特殊符号
     ① * :代表零个或多个字符
     ②?:只代表一个任意的字符
     ③#:注释符号
     ④脱义字符 \:还原为普通字符
     ⑤| :管道符,将前面命令的输出作为后面命令的输入

     -----------------------------------------------------
      cut:cut -d ‘分隔字符’【-cf】n,n为数字
          -d:后面跟分隔字符,分隔字符要用单引号括起来:可以与 -f 搭配使用
          -c:后面接的是第几个字符--输出的就是那个字符
          -f:后面接的是第几个区块--划分过后是第几个

     --------------------------------------------------------
      sort:用做排序  sort[-t 分隔符][-kn1,n2][-nru]  
          -t :后跟分隔字符
          -n:表示使用纯数字排序
          -r:表示反向排序
          -u:表示去重复
          -kn1,n2:表示由n1区间排序到n2区间,可以只写 -kn1,即对n1字段排序(通过分隔字符划分出来的区间)
     如不加任何选项,则从首字母向后一次按 ASCII码值进行比较,然后按升序输出
     
     --------------------------------------------------------------------------
      wc:用于统计文档的行数、组附属或词数
          -l:行数
          -w:词数
          -m:字符数
     如果不加任何选项,就把行数,词数,字符数依次输出

     ----------------------------------------------------
     uniq:删除重复的行,
          -c:表示统计重复的行数,并把行数写在前面
     
     tee:相当于重定向 >,但是它会把写入内容显示在屏幕上。 用于管道符 | 后,
    
     -----------------------------------------
     tr:用于替换字符
      -d:表示会删除某个字符,后面跟要删除的字符
      -s:表示删除重复的字符
      可以把小写字母变成大写字母,如 tr '[a-z]' 'A-Z'
     
     split:切割文档
           -b:根据大小来分割文档(分为几个小文件,会以xaa,xab...来默认命名,如果在其后加上名name,则文件的名为nameaa,nameab...),单位为byte
          -l:根据行数来分割文档
 
-------------------------------------------------
     特殊符号
     $:!$表示上条命令的最后一个变量
     ;:如果想在一行中运行多个命令,则命令之间可以用分号隔开
     ~:表示用户的家目录,root用户的家目录是 /root,普通用户则是 /home/username
     &:把一条命令放在后台执行,通常用于命令运行时间较长的情况
     
-------------------------------------------------------
     重定向符号>,>>,2>,2>>: 
          >:取代
          >> :追加
          2>:错误重定向
          2>>:错误追加重定向,把错误信息输入到文本中
 
      中括号【】:代表字符组合中的任意一个
     
     特殊符号&& 和 ||:分号时不管签名一条命令是否执行成功,后面一条都会执行;&&时只有前面一条执行成功,后面一条才会执行成功; ||前面执行成功后后面不执行,否则执行后面,有且只有一条命令会执行
                     

          

你可能感兴趣的:(linux,变量,shell中的特殊符号,shell的基础知识,系统变量与个人变量)