[关闭]
@huangyichun 2017-09-15T17:31:16.000000Z 字数 2937 阅读 816

Shell

linux


Shell概述

Shell是什么

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

image.png-104.3kB

Shell的分类

Linux支持的Shell

echo输出命令

  1. echo 选项 输出内容
  2. 选项: -e //支持反斜线控制的字符转换
  3. 控制字符 :
  4. \b //退格键
  5. \n //换行
  6. \r //回车键
  7. \t //制表符,也是tab键

Bash变量

- 在Bash中,变量的默认类型都是字符串型

变量的分类

变量调用

环境变量

  1. 环境变量是全局变量,自定义变量是局部变量
  2. 对系统生效的环境变量名和作用是固定的
  3. export 变量名=变量值 //用户自定义的环境变量
  4. //常用环境变量
  5. HOSTNAME : 主机名
  6. SHELL: 当前的shell
  7. TERM: 终端环境
  8. HISTSIZE: 历史命令条数
  9. SSH_CLIENT: 当前操作环境是用ssh链接的,这里记录客户端ip
  10. USER 当前登录的用户
  11. PATH: 系统查找命令的路径

位置参数变量

  1. $n : n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,10以上的参数需要用大括号包含,如${10}.
  2. 例如:
  3. vim locate.sh 文件
  4. //内容---------
  5. #!/bin/bash
  6. num1=$1 //代表下面的2
  7. num2=$2 //代表下面的3
  8. sum=$(( $num1 + $num2 ))
  9. echo $sum
  10. //----------------
  11. 使用命令: ./locate.sh 2 3
  12. 输出结果:5
  13. $* : 这个变量代表命令行中所有的参数,$*把所有的参数看成整体区分对待
  14. $@ : 这个变量代表命令的所有的参数,不过$@ 把每个参数区别对待
  15. $# : 这个变量代表命令行中所有参数的个数
  16. 例如: 创建文件: cangshu2.sh
  17. #!/bin/bash
  18. echo "\$*输出参数是: $*"
  19. echo "\$@输出参数是: $@"
  20. echo "\$#输出参数是: $#"
  21. 执行: chmod 755 cangshu2.sh
  22. ./cangshu2.sh 1 2 3 4 5
  23. 输出:
  24. $*输出参数是: 1 2 3 4 5
  25. $@输出参数是: 1 2 3 4 5
  26. $#输出参数是: 5
  27. $*与$@的区别:
  28. 例如: for.sh
  29. #!/bin/bash
  30. //$*中的所有参数看成一个整体,所以这个for循环只会循环一次
  31. for i in "$*"
  32. do
  33. echo "The parameters is: $i"
  34. done
  35. //$@中的每个参数都看成是独立的,所以"$@"中有几个参数,就会循环几次
  36. for y in "$@"
  37. do
  38. echo "Parameter : $y"
  39. done
  40. 运行: ./for.sh 1 2 3 4 5
  41. 输出结果:
  42. The parameters is: 1 2 3 4 5
  43. Parameter : 1
  44. Parameter : 2
  45. Parameter : 3
  46. Parameter : 4
  47. Parameter : 5

预定义变量

  1. $? : 上条命令正确执行输出0,上条命令不正常执行输出非0
  2. $$ : 当前进程的进程号(PID)
  3. $! : 后台运行的最后一个进程的进程号(PID)

接收键盘输入

  1. read 选项 变量名
  2. 选项:
  3. -p "提示信息" : 在等待read输入时,输出提示信息
  4. -t 秒数: read命令会一直等待用户输入,使用此选项可以指定等待时间
  5. -n 字符数: read命令只接受指定的字符数,就会执行
  6. -s :隐藏输入的数据,适用于机密信息的输入
  7. 例如:
  8. #!/bin/bash
  9. read -p "请输入你的名字: " -t 30 name
  10. echo $name
  11. read -p "请输入的密码: " -s password
  12. echo $password

当前语系查询

  1. locale //查询当前系统语系
  2. -LANG: 定义系统主语系的变量
  3. -LC_ALL: 定义整体语系的变量

Bash的基本功能

别名

  1. alias //查看系统中所有命令的别名
  2. alias 别名='原命令'
  3. vi ~/.bashrc //写入环境变量配置文件,别名永久生效
  4. unalias 别名 //删除别名

常用快捷键

  1. ctrl + c //强制终止当前命令
  2. ctrl + l //清屏
  3. ctrl + a //光标移动到命令行首
  4. ctrl + e //光标移动到命令行尾
  5. ctrl + u //从光标所在位置删除到行首
  6. ctrl + z //把命令放入后台
  7. ctrl + r //在历史命令中搜索

命令生效顺序

历史命令

  1. history 选项 历史命令保存文件
  2. 选项:
  3. -c //清空历史命令
  4. -w //把缓存中的历史命令写入历史保存文件~/.bash_history
  5. //历史命令的调用
  6. 1.使用上下箭头调用以前的历史命令
  7. 2.使用"!n"重复执行第n条历史命令
  8. 3.使用"!!"重复执行上条命令
  9. 4.使用"!字符串"重复执行最后一条以该字符串开头的命令

管道和重定向

标准输入输出

  1. 设备 设备文件名 文件描述符 类型
  2. 键盘 /dev/stdin 0 标准输入
  3. 显示器 /dev/sdtout 1 标准输出
  4. 显示器 /dev/sdterr 2 标准错误输出

输出重定向

  1. 类型 符号 作用
  2. 标准输出重定向   命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定文件或设备中
  3. 命令 >> 文件 以追加的方式,把命令的正确输出输出到指定文件或设备中
  4. 标准错误输出重定向  错误命令 2>文件    以覆盖的方式,把命令的错误输出输出到指定的文件或设备中
  5.      错误命令 2>> 文件 以追加的方式,把命令的错误输出输出到指定的文件或设备中

将命令不显示结果

在只显示结果的内容中,将过程命令直接删除不显示
image.png-56.7kB

WC命令

  1. wc 选项 文件名
  2. 选项 :
  3. -c 统计字节数
  4. -w 统计单词数
  5. -l 统计行数

管道符

多命令顺序执行

  1. 命令1 : 命令2 //多个命令顺序执行,命令之间没有任何逻辑连续
  2. 命令1 && 命令2 //命令1正确执行,则命令2才会执行 
  3. 命令1 || 命令2 //命令1不正确执行,命令2才会执行,命令1正确执行,命令2不执行.

管道符

  1. 命令1 | 命令2 //命令1的正输出作为命令2的操作对象

通配符

image.png-255kB
image.png-358.4kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注