• Linux入门与进阶(八)



    1、shell简介:

    shell:命令解释器;支持编程(变量、分支、循环…) ;编程语言
    shell脚本语言:减轻一些工作量
    高级编程语言:Java语言;
    在这里插入图片描述

    2、shell变量

    变量名 = 变量值
    #取消变量
    unset 变量名
    
    • 1
    • 2
    • 3

    3、单引号和双引号的区别?

    字符串可以使用单引号或者双引号,双引号中的表达式会解析,单引号中的表达式不会解析,只会原样显示。

    [root@os100 /]# a1='张三'
    [root@os100 /]# echo a1
    a1
    [root@os100 /]# echo $a1
    张三
    [root@os100 /]# i1=100
    [root@os100 /]# i2=200
    [root@os100 /]# echo $i1
    100
    [root@os100 /]# echo ${i1}
    100
    [root@os100 /]# echo $(( i1 + i2 ))
    300
    [root@os100 /]# echo $(( i1+i2 ))
    300
    [root@os100 /]# echo $((i1+i2))
    300
    [root@os100 /]# echo $((i1*i2))
    20000
    [root@os100 /]# echo $((i1/i2))
    0
    [root@os100 /]# echo $i1+$i2
    100+200
    [root@os100 /]# echo $(i1+i2)
    bash: i1+i2: command not found...
    [root@os100 /]# echo $((i1 + i2))
    300
    [root@os100 /]# s1="小明"
    [root@os100 /]# s2='小强\t小红'
    [root@os100 /]# echo $s1
    小明
    [root@os100 /]# echo $s2
    小强\t小红
    [root@os100 /]# s3="小红\t 小王"
    [root@os100 /]# echo $s3
    小红\t 小王
    [root@os100 /]# s3="小红${s1}"
    [root@os100 /]# echo $s3
    小红小明
    [root@os100 /]# s4='小刘${s1}'
    [root@os100 /]# echo $s4
    小刘${s1}
    [root@os100 /]# unset s4
    [root@os100 /]# echo $s4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    4、数据流重导向

    4.1、数据的输出

    输出:将原本在终端上显示的数据,导入到指定的文件中;

    1> ,> :将正确数据信息 覆盖到指定的文件中
    1>>, >> : 将正确数据信息 追加到指定的文件中
    2> :将错误的数据信息 覆盖到指定的文件中
    2>> :将错误的数据信息 追加到指定的文件中

    以普通身份进行登录执行查找命令查找特定的文件 示例:

     find /home -name .bashrc
    
    • 1

    切换身份成lang用户,默认情况下,该账号只能在对应的用户主目录下找
    到内容,其它目录没有权限:
    输出错误信息:

    [lang@os100 home]$ find /home -name .bashrc 2>
    /home/lang/test.log
    /home/lang/.bashrc
    /home/user1/.bashrc
    
    • 1
    • 2
    • 3
    • 4

    同时将正确和错误信息输出到指定的文件中

    [lang@os100 home]$ find /home -name .bashrc >
    /home/lang/test.log 2>&1
    [lang@os100 home]$ cat /home/lang/test.log
    /home/lang/.bashrc
    find:/home/erlang’: Permission denied
    find:/home/shuihu’: Permission denied
    find:/home/dalang’: Permission denied
    find:/home/zhaoyun’: Permission denied
    find:/home/xiahoudun’: Permission denied
    find:/home/xiaoqiao’: Permission denied
    /home/user1/.bashrc
    find:/home/user2’: Permission denied
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出数据到垃圾桶

    2>/dev/null #用来控制错误的输出
    命令 &>/dev/null
    
    • 1
    • 2

    4.2、数据的输入

    将原本由键盘输入的内容换成,改由文件内容来代替

    <
    <<
    
    • 1
    • 2

    示例1:
    [lang@os100 ~]$ cat >> txt1 <

    hello world 大家好 天气不错 END [lang@os100 ~]$ cat txt1 hello
    world 大家好 天气不错
    
    • 1
    • 2

    示例2:增加域名映射
    在这里插入图片描述

    [root@os100 lang]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4
    localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6
    localhost6.localdomain6
    127.0.0.1 os100
    [root@os100 lang]# cat >> /etc/hosts <<END
    > 192.168.40.110 redis001
    > 192.168.40.112 redis002
    > END
    [root@os100 lang]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4
    localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6
    localhost6.localdomain6
    127.0.0.1 os100
    192.168.40.110 redis001
    192.168.40.112 redis002
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5、命令执行的判断依据

    ; 命令之间无任何关联。
    && 必须前面的命令正确执行,后面的命令才会执行
    || 前面的命令错误,后面的命令执行;前面的命令正确,后面的命令不执
    行。
    
    • 1
    • 2
    • 3
    • 4

    不考虑指令相关性的连续指令下达

     cmd; cmd;
    
    • 1
  • 相关阅读:
    openlayer注册4490坐标系,添加4490超图服务
    让SQL起飞(优化)
    odoo16 安装及学习
    基于matlab的网络LEACH协议性能仿真
    [HNCTF 2022 WEEK2]e@sy_flower
    AIOPS 学习之路
    3DEXPERIENCE® DRAFTSIGHT® 新功能
    消费增值模式:产品回报+现金回报,用户忠诚度大增!
    window下VS2022封装静态库以及调用静态库
    java设计模式---策略模式
  • 原文地址:https://blog.csdn.net/z45351/article/details/125992978