shell 基础

Shell

好久没写过shell了,复习一下

Shell 简介

Shell是一个程序,由C语言编写,是用户和Linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。
shell命令解析器->kernel。 shell对接用户。
作用:
    1.命令行解释器。
    2.启动程序
    3.输入输出重定向
    4.管道连接
    5.文件名置换(echo /*)
    6.变量维护
    7.环境控制
    8.shell编程

Shell 语法

shell脚本就是将完成一个任务的所有的命令按照执行先后顺序,自上而下写入一个文本文件中,然后给予执行权限。

脚本命名规范

脚本命名名字要有意义,30个字节以内,以.sh结尾。
开头必须解释环境
    #!/bin/bash  --意思是要在/bin/bash下运行。#!是一个组合,特殊标记。
    #!/bin/bash/env env 表示: python|bash 等,什么语言就用什么解释器。# 作为注释。

格式:

    脚本名字:
    解释器环境:
    脚本信息:
    脚本代码:
    #!/bin/bash
    #Author: Ye --作者
    #Create Time: 2021-02-26
    #Release :1.0
    #Script Description: 这个脚本的作用。

脚本运行方法

给执行权限

    chmod 700 first.sh
    ./first.sh

解释器直接运行

sh first.sh

shell 特殊符号

~ home目录
- 回到上一个目录
! 执行历史命令,如!! 执行上一个 命令,!p 上一个带p的
$ 变量
& 后台执行
* 通配符
? 匹配一个字符
; 执行一条命令中有多个命令,用;号分开
| 管道
\ 转义字符
`` 能解释变量
"" 字符串
$? 判断上一条命令是否成功

管道

上一个命令的输出作为下一个命令的输入

重定向

> 重定向输入 覆盖数据
    $>/dev/null;$? 把命令执行结果扔到null里面去,等于黑洞
>> 重定向追加输入,在原数据的末尾添加
< 重定向输出 wc -l < /etc/passwd
<< 重定向追加输出 fdisk /dev/sdb<<EOF
    wc <<EOF
        Hello World!
    EOF
     开头输出和结束都用EOF作为标记

数学运算 expr

    expr 1 + 2
    expr 1 \* 2
    expr 1 / 2
    let sum=1-1
        let 赋值到sum,然后 $sum 中运行
    # 小数运算
        可以安装,然后使用
    scale=2 表示保留两位小数点
    echo "`echo "scale=3;1/3"|bc`%"
    双括号数学运算
        echo $(((1+1)*10))

执行脚本后返回值

    #!/bin/bash
    echo ee
    exit 0  # 退出后返回此值,返回值1-255

    $? #获得上面的返回值

shell 格式化输出

-- 一个程序有0个或以上输入,一个或更多输出

echo 命令介绍

功能:将内容输出到默认显示设备
echo命令的功能是在显示器上显示一段文字。

命令格式

-n 不要再最后自动换行
-e 若字符串中出现一下字符,则特别加以处理,而不是将它当作字符串输出
    -e后,将会使用下列转义
\a 发出警告声
\b 删除前一个字符
\t 制表符
\v与\f相同

代码示例

    #!/bin/bash
    for time in `seq 9 -1 0`;
    do
            echo -n -e "\b$time"
            sleep 1
    done

字体颜色

    echo -e "\033[40;2m 字符 \033[4m dddd 字符串"

shell输入

read

执行到这里之后,等待用户输入
    #!/bin/bash
    clear
    echo -n -e "Login:"
    read loginUser
    echo -n -e "Password:"
    read -s -t5 -n6 loginPasswd
    echo "$loginUser $loginPasswd"
    read -p "请输入密码" $loginPasswd
    echo $LoginPasswd
-s 超时
-t5 表示5秒超时
-n 表示读取6个字符
posted @ 2021-02-28 23:27  指左转右  阅读(74)  评论(0编辑  收藏  举报