• 初识Shell


    一、Bash基本

    1、echo 命令 [root@localhost ~]# echo [选项] [输出内容]

      选项: -e: 支持反斜线控制的字符转换(具体参见表 11-2)

             -n: 取消输出后行末的换行符号(就是内容输出后不换行)

    例子 1: [root@localhost ~]# echo "Mr. Shen Chao is the most honest man!"             #echo 的内容就会打印到屏幕上。

    Mr. Shen Chao is the most honest man!

    [root@localhost ~]#

    例子 2: [root@localhost ~]# echo -n "Mr. Shen Chao is the most honest man!"

    Mr. Shen Chao is the most honest man![root@localhost ~]#

    #如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符。

    echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表 11-2 所示:

    控制字符  作 用
     \ 输出本身
    a  输出警告音
    退格键,也就是向左删除键
    c 取消输出行末的换行符。 和“-n”选项一致
    e   ESCAPE 键 
    f 换页符
     换行符
      回车键
       制表符,也就是 Tab 键 
     v   垂直制表符
      nnn   按照八进制 ASCII 码表输出字符。其中 0 为数字零,nnn 是三位八进制数
     xhh 按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数

     

    2、Shell  开头都是  #!/bin/bash

     

    3 、[root@localhost ~]# history [选项] [历史命令保存文件]

      选项: -c: 清空历史命令

      -w: 把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文 件,则放入默认历史命令保存文件~/.bash_history 中

     

     

    4、既然我们说别名的优先级比命令高,那么命令执行时具体的顺序是什么呢?命令执行时的顺序是 这样的:

      1、 第一顺位执行用绝对路径或相对路径执行的命令。

       2、 第二顺位执行别名。

       3、 第三顺位执行 Bash 的内部命令。

       4 第四顺位执行按照$PATH 环境变量定义的目录查找顺序找到的第一个命令。

      为了让这个别名永久生效,可以把别名写入环境变量配置文件“~/.bashrc”。

       命令如下: [root@localhost ~]# vi /root/.bashrc

     

     

    5、Bash 常用快捷键

    快捷键 作 用 
    ctrl+A 把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移 动到命令行开头时使用。
    ctrl+E  把光标移动到命令行结尾
    ctrl+C 强制终止当前的命令
    ctrl+L  清屏,相当于 clear 命令
    ctrl+U   删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退 格键一个一个字符的删除,使用这个快捷键会更加方便
     ctrl+K  删除或剪切光标之后的内容
    ctrl+Y 粘贴 ctrl+U 或 ctrl+K 剪切的内容。
    ctrl+R 

    在历史命令中搜索,按下 ctrl+R 之后,就会出现搜索界面,只要输入 搜索内容,就会从历史命令中搜索。

    ctrl+D  退出当前终端
    ctrl+Z  暂停,并放入后台。
     ctrl+Q

    恢复屏幕输出。

     ctrl+S

    暂停屏幕输出。 

    6、多命令顺序执行

    多命令执行符 格式   作 用
     ; 命令 1 ;命令 2 多个命令顺序执行,命令之间没有任何逻辑联系
      ||  命令 1 || 命令 2 当命令 1 执行不正确($? ≠ 0),则命令 2 才会执行 当命令 1 正确执行($?=0),则命令 2 不会执行
    &&   命令 1 && 命令 2   当命令 1 正确执行($?=0),则命令 2 才会执行 当命令 1 执行不正确($? ≠ 0),则命令 2 不会执行

    7、Bash 中其他特殊符号

    符 号  作 用
     '' 单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特 殊含义。 
     ""  双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“” 是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
     ``  反引号。反引号括起来的内容是系统命令,在 Bash 中会先执行它。和$() 作用一样,不过推荐使用$(),因为反引号非常容易看错。
    $()  和反引号作用一样,用来引用系统命令。
      ()  用于一串命令执行时,()中的命令会在子 Shell 中运行
     {}  用于一串命令执行时,{}中的命令会在当前 Shell 中执行。也可以用于变 量变形与替换。
     []  用于变量的测试。 # 在 Shell 脚本中,#开头的行代表注释。
     $ 用于调用变量的值,如需要调用变量 name 的值时,需要用$name 的方式 得到变量的值。
     转义符,跟在之后的特殊符号将失去特殊含义,变为普通字符。如$将 输出“$”符号,而不当做是变量引用。

    二、Bash 的变量和运算符

    1、什么是变量 在定义变量时,有一些规则需要遵守: 

    • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name” 则是错误的。 
    • 在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为 数值型。
    • 变量用等号连接值,等号左右两侧不能有空格。
    • 变量的值如果有空格,需要使用单引号或双引号包括。如:“test="hello world!"”。其 中双引号括起来的内容“$”、“”和反引号都拥有特殊含义,而单引号括起来的内容都是 普通字符。 
    • 在变量的值中,可以使用“”转义符。 
    • 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含"$变量名 "或用${变量名}包含变量名。

    2、变量的分类 

    • 用户自定义变量:这种变量是最常见的变量,由用户自由定义变量名和变量的值。 
    • 环境变量:这种变量中主要保存的是和系统操作环境相关的数据,比如当前登录用户,用户 的家目录,命令的提示符等。不是太好理解吧,那么大家还记得在 Windows 中,同一台电脑 可以有多个用户登录,而且每个用户都可以定义自己的桌面样式和分辨率,这些其实就是 Windows 的操作环境,可以当做是 Windows 的环境变量来理解。环境变量的变量名可以自由 定义,但是一般对系统起作用的环境变量的变量名是系统预先设定好的。
    • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变 量作用是固定的。 
    •  预定义变量:是 Bash 中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

      用户自定义变量 :               名称:自定义  作用:自定义  内容:自定义

      环境变量:

        用户自定义环境变量: 名称:自定义  作用:自定义  内容:自定义
        系统自带环境变量:     名称:确定  作用:确定  内容:自定义

      位置参数变量:         名称:确定  作用:确定  内容:自定义

    位置参数变量  作 用
     $n  n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上 的参数需要用大括号包含,如${10}
    $*  这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
     $@  这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
    $# 这个变量代表命令行中所有参数的个数

      

      预定义变量:       名称:确定  作用:确定  内容:自定义

    预定义变量 作 用
      $? 最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令 自己来决定),则证明上一个命令执行不正确了
      $$  当前进程的进程号(PID)
      $! 后台运行的最后一个进程的进程号(PID)

     

    [root@localhost sh]# ./test.sh 11 22  44 55
    11 22 44 55
    ====================================
    11
    22
    44
    55
    [root@localhost sh]# cat test.sh 
    #!/bin/bash
    
    for i in "$*"
        do
            echo $i
        done
    
    echo "===================================="
    
    for y in "$@"
        do 
            echo $y
        done

    3、接收键盘输入

    [root@localhost ~]# read [选项] [变量名] 选项:

    •  -p “提示信息”: 在等待 read 输入时,输出提示信息
    • -t 秒数: read 命令会一直等待用户输入,使用此选项可以指定等待时间
    • -n 字符数: read 命令只接受指定的字符数,就会执行
    • -s: 隐藏输入的数据,适用于机密信息的输入

      变量名:

        变量名可以自定义,如果不指定变量名,会把输入保存入默认变量 REPLY

        如果只提供了一个变量名,则整个输入行赋予该变量

        如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字.

    三、环境变量配置文件

      1 source 命令

         [root@localhost ~]# source 配置文件

         或

         [root@localhost ~]# . 配置文件

      2 环境变量配置文件

          1)、 登录时生效的环境变量配置文件 在 Linux 系统登录时主要生效的环境变量配置文件有以下五个: 

    • /etc/profile 
    • /etc/profile.d/*.sh 
    • ~/.bash_profile 
    • ~/.bashrc 
    • /etc/bashrc

          2)、 注销时生效的环境变量配置文件

            在用户退出登录时,只会调用一个环境变量配置文件,就是~/.bash_logout。这个文件默认没有 写入任何内容,可是如果我们希望再退出登录时执行一些操作,比如清除历史命令,备份某些

            数据, 就可以把命令写入这个文件。

          3)、 其他配置文件

            还有一些环节变量配置文件,最常见的就是~/bash_history 文件,也就是历史命令保存文件。

  • 相关阅读:
    URL解析模式(伪静态)
    PHP各环境下的伪静态配置
    亚马逊-购书(电子)
    前端路由-JS实现
    SpringBoot 2.3.0.RELEASE版本后自定义404页面,SpringBoot 404错误兼容Ajax请求
    不设置DIV宽度水平居中,div不设置宽度居中
    js 保留两位小数,Js四舍五入,JavaScript Math四舍五入
    Laravel 自定义公共函数的引入
    EF Core3.1 CodeFirst动态自动添加表和字段的描述信息
    Android 高德地图API INVALID_USER_SCODE 错误
  • 原文地址:https://www.cnblogs.com/liviniu/p/14416215.html
Copyright © 2020-2023  润新知