硬件、核心和Shell

用户通过Shell输入命令与核心(Kernel)沟通,核心再来控制硬件工作

Linux的shell:Bash(Bourne Again SHell)

Bash功能

命令历史(history)

通过上下键来查找bash的history,此次登录输过的命令会暂时存储在内存,当注销时这些命令会存入~/.bash_history

命令补全(tab)

tab接在一串命令的第一个字的后面为命令补全,tab接在一串命令的第二个字后面为文件补全,反正多按tab就对了

命令别名(alias)

通过自定义命令别名:alias lm='ls -al'之后,输入lm相当于输入ls -al,通过alias来乍看自定义的命令别名

shell script(命令脚本)

通过一系列命令组成的文件

通配符(wildcard)

查询是否是内建指令:type

语法:type [-tpa] nmae

指令分行和快速编辑

  1. 分行:当指令太长时,可以通过\+Enter分行
  2. 快速编辑:

    1. 快速删除:ctrl+u /ctrl+k,删除光标前的所有命令以及删除光标后的所有命令
    2. 快速移动光标:ctrl+a /ctrl+e将光标移动到行首或将光标移动到行末

      Bash中的变量

      变量的取用和设定

  3. 取用:在变量前加上$表示取用该变量

  4. 设定:变量名=变量内容设定规则:

    1. 等号两边不能有空格(java、Python语言学习者表示不适)
    2. 不能以数字开头
    3. 双引号中若含有$变量,则可以解析该变量的值,单引号则不行,单引号内不能解析变量
    4. 可以使用转义符[\]来转义特殊字符,例如enter和空格等
    5. 变量内容还可以引用其他命令,用反单引号将指令引起,或使用[$(指令)]
    6. 扩增变量的用法:[PATH="$PATH":/home/usr][PATH=${PATH}:/home/usr]
    7. 通常习惯认为全大写表示系统的默认变量,小写则表示用户自定义的变量
    8. 取消变量命令:unset用法:[unset + 变量名]

      环境变量

      查看自己的环境变量命令:env

      查看所有变量(环境变量和用户自定义变量):set

      比较重要的一些变量

  5. $:刀符本身也是一个变量代表本SHELL的进程代号PID,可用echo $$查看

  6. ?:问号代表上一个命令的回传值,一般上一个命令运行成功则返回0,不成功则返回非零

    export将自定义变量转换为环境变量

    环境变量与自定义变量的区别为,自定义变量不能被子程序读取,而环境变量可以。而子程序含义是该BASH下的执行的命令
    使用export的方法[export 变量名]

    读取用户控制台输入read

    用法:[read [-pt] 变量名],加上参数-p后面可以接提示信息,加-t表示等待指定时间

    宣告变量类型declare

    一般变量不做处理都是字符串类型,使用declare后可以将变量转化为自己想要的类型
    用法:declare [-aixr] variable

  7. 参数[-a]表示将后面的变量定义成数组

  8. 参数[-i]表示将后面的变量定义成整型
  9. 参数[-x]将后面的variable转化为全局变量(环境变量)
  10. 参数[-r]将变量变为readonly(相当于Java的final

数组变量:var[index] = content

限制BASH资源

Linux主机可以由多个人使用,若人数过多,且每个人使用的资源也过多,则会影响每个人的使用,故要限制每个Bash的资源。
一般可以通过限制CPU资源使用率、内存使用率、最大程序数、最大文件容量来达到目的

变量内容的删除、替换

变量的删除

变量删除的用法:echo ${path#/*local/bin:},注意:

  1. 需要在${}中再删除
  2. 号作用表示从左到右扫描并删除,%表示从右到做进行扫描并删除

  3. /号表示起始的那个字符
  4. *号表示匹配任意字符0到n次
  5. :表示结束字符
  6. ${path#/*local/bin:}表示匹配最短的那个字符串,使用双## 表示匹配最长的那个字符串

    变量的替换

    变量的替换用法:${path/bin/BIN},表示将变量中第一个遇到的bin替换成BIN,使用双引号//表示替换所有的字符串

    变量的测试并替换

    用法:username=${username-root},先判断username是否为null,若为null则将root复制给username,不为空则username不变
    注意:若变量的内容为"",其实它不为NULL,此时需要这样来判断username=${username:-root},多一个冒号

    命令历史(history)

    命令:history [n]history [-c]history [-raw]
    参数介绍:

  7. history [n],列出最近的n条历史

  8. history [-c],将目前Shell的所有history清除
  9. history [-raw][-r](read)将/.bash_history,[-w]将目前history的命令写入~/.bash_history

    Bash的环境配置文件

    初始的环境变量,以及用户自定义的变量有很多,他们都是在开启时有系统自动导入的。
    login shell和non-login shell为两种方式取锝的shell(主要在于有没有登录),两种方法所加载的配置文件也是不同的:

  10. login shell需要两个:

    1. /etc/profile:系统的整体设定,不建议修改,且设置文件是必须被读取的,在系统整体设置上读取这一个文件就够了,因为该文件往往会呼出其他设置文件
    2. ~/.bsah_profile 或 ~/.bash_login 或 ~/.profile属于用户个人设定,可以修改的是这里
  11. non-login shell:

    1. ~/.bashrc

      通配符和特殊符号

      通配符(wildcard)很常用滴,有点像正则表达式,别忘了
  12. *匹配0到任意个字符

  13. ?匹配一个任意字符
  14. []匹配括号内的一个字符,例如[abcd]则匹配abcd内任意一个字符
  15. [-]和正则表达式一样了,例如[a-z]匹配小写字母
  16. [^]反向选择