1 shell 基础

Posted baci

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1 shell 基础相关的知识,希望对你有一定的参考价值。

一、shell:命令解释器

shell编程可以不考虑效率,只要简单可以实现功能就可以,这也是与其他编程语言最大区别之一

查看Linux支持的shell cat /etc/shell
可以切换到其他支持的shell exit退出

二、shell脚本

1、echo命令

  -e支持反斜线控制的字符转换
  \\a 输出警告音 在/etc/inputrc中可以取消系统警告音
  \\t 输出制表符tab
  \\n 换行符
  \\r 回车
  -n取消输出后的换行符
  echo支持输出颜色 echo -e ‘\\e[1;31m abc \\e[0m‘

2、执行脚本:

  1)可以赋予执行权限,通过绝对路径的方式执行
  2)通过 bash命令执行,可以不赋予执行权限

  *bash -x 可以查看脚本执行过程可以用来排错

三、bash的基本功能

1、历史命令history

  history -w 把缓存中的历史命令写入历史命令保存文件家目录下.bash_history中
  历史命令条数在/etc/profile中 HISTSIZE=1000
  !$上一条命令的参数

2、补全 tab
3、别名 alias 家目录下的.bashrc中 . .bashrc
4、快捷键
5、输入输出重定向

  键盘     /dev/stdin     0   标准输入
  显示器      /dev/stdout   1   标准输出
  显示器     /dev/stderr     2   标准错误
  输出重定向
    >   >>   &>    命令 >> ok 2>>erro #把正确输出和错误输出分别保存在两个文件中
  输入重定向
    <   << EOF(可以用来输出多行)

6、多命令顺序执行

  命令1;命令2         命令之间没有任何联系,前一条命令报错后面也会执行
  命令1&&命令2        命令1执行成功才会执行命令2(用$?判断)
  命令1||命令2           命令1错误才会执行命令2
  命令1&&命令2||命令3       命令1成功执行命令2,命令1错误执行命令3

7、管道符

  grep 参数
    -A数字 列出符合条件的行并列出后续的n行
    -B数字 列出符合条件的行并列出前面的n行
    -c统计次数
    -i忽略大小写
    -n输出行号
    -v反向查找

   |
   -regex

8、通配符

  用来匹配文件名,完全匹配

9、bash中其他的特殊符号

  ‘ ‘ 单引号在单引号中所有的特殊符号都没有特殊含义
  " " 双引号在特殊符号都没有特殊含义 除了$ ` \\
  ` ` $( ) 把命令的值赋给变量
  () 在()中执行的命令需要打开一个子shell执行
   在当前shell执行 #左括号必须要有空格 最后加;
  [] 变量测试
  $ 调用变量

四、bash的变量和运算符

1、什么是变量

  在bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为字符型
  变量用=赋值,且两边不能有空格
  变量可以叠加   a=123 a="$a"abc echo $a 123abc
  环境变量建议大写

2、变量的分类

  用户自定义变量        名称:自定义 作用:自定义 内容:自定义
  环境变量
    用户自定义变量     名称:自定义 作用:自定义 内容:自定义
    系统自带环境变量       名称:确定 作用:确定 内容:自定义
  位置参数变量
    名称:确定 作用:确定 内容:自定义
  预定义变量
    名称:确定 作用:确定 内容:自定义

3、用户自定义变量

  增
  删 unset 变量名
  改
  查
    set 查询环境变量
    -u 如果设定此选项,调用未声明的变量时会报错(默认无任何提示)

4、环境变量

  1)用户自定义环境变量   可以在子shell中调用,用户自定义变量不可以
    设置自定义环境变量 export A=10
    删除 unset A
  2)系统自带环境变量
  1、PATH   系统查找命令的路径 用:分隔
    把/root/sh添加到PATH变量中: PATH="$PATH":/root/sh (变量叠加)
  2、ps1变量   命令提示符
    写在环境变量配置文件/etc/bashrc中

  3、LANG语系变量
    Linux中文支持的条件
      1)安装了中文字体和编码
      2)操作终端必须支持中文编码
    查询Linux支持的语系 locale -a
    默认语系配置文件/etc/sysconfig/i18n

5、位置参数变量

  $n $0命令本身 $1-$9代表第1到第9个参数10以上要用大括号$10
  $* 保留传入的所有参数(整体) 字符串
  $@ 保留传入的所有参数(个体) 列表
  $# 传入参数的个数

6、预定义变量

  $$ 当前进程pid号
  $? 保存上一条命令执行状态
  $! 后台运行的最后一个进程的进程号

7、接受键盘输入read

  -p 指定提示
  -t 超时时间
  -s 隐藏输入的字符
  -n 指定输入的字符数
  例:read -t 30 -p "please input a number:" number

8、shell的运算符

  使用declare声明变量类型
    -: 给变量设定类型属性
    +: 取消变量的类型属性
    -a: 将变量声明为数组型 数组 a[0]=1 调用 echo $a[*]
    -i: 将变量声明为整数型(integer)
    -r: 讲变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,
    也不能删除变量,甚至不能通过+r 取消只读属性
    -x: 将变量声明为环境变量
    -p: 显示指定变量的被声明的类型

  使用expr和let数组运算工具
    c=$(expr $a + $b) +前后必须有空格
    let c=$a+$b
    c=(($a+$b))

9、变量的测试与内容置换

  常用测试一个变量y有没有被赋值(通过x的值判断y是否存在)
           变量 y 没有设置        变量 y 为空值            变量 y 设置值
  x=$y-新值     x=新值             x为空             x=$y #新值可为任意
  x=$y:?新值   新值输出到标准错误输出     新值输出到标准错误输出    x=$y

五、环境变量配置文件

1、加载配置文件的命令
  source bash 绝对路径
2、环境变量配置文件
  /etc/profile
  /etc/profile.d/*.sh
  ~/.bash_profile
  ~/.bashrc

用户登录调用环境变量配置文件过程

技术图片


  注销时生效的环境变量配置文件 ~/.bash_logout

  ~/bash_history 历史命令保存文件

3、shell登录信息

  /etc/issue
    登录tty1-tty6时的终端生效,欢迎信息 (远程登录无法看到)
  /etc/issue.net
    在远处登录时要看到/etc/issue.net的欢迎信息,要修改ssh的配置文件/etc/ssh/sshd_config中加入 Banner /etc/issue.net
  /etc/motd 在用户输入用户名和密码正确登录后显示的欢迎信息

4、快捷键定义

  查询所有快捷键 stty -a
  定义快捷键
    stty 关键字 快捷键

 

以上是关于1 shell 基础的主要内容,如果未能解决你的问题,请参考以下文章

Linux系列基础版第三章 Shell基础知识

shell基础下

1.11-shell编程基础

Linux安全基础:shell及一些基础命令

Rocky基础-Shell脚本基础知识

Shell基础:Shell基础应用简单Shell脚本的设计使用Shell变量变量的扩展应用