• Linux04__Shell


    一、Shell基础

    1.1 Shell概述

      Shell是一个命令行解释器,介于内核和程序之间。(硬件>内核>Shell命令解释器>外层应用程序);

      Shell是解释执行的脚本语言,主要分为B shell和C shell,现主要用的是B shell。

    1.2 Shell第一个脚本

    vi hello.sh
    ''''''
    #!/bin/bash
    echo "hello world"
    ''''''
    
    chmod 755 hello.sh
    ./hello.sh

    1.3 Bash基本功能

    #1 历史命令
    history
    !!  #重复执行上次的命令
    !111  #重复执行历史中第111条命令
    !vi  #重复执行历史中最后一条以vi开头的命令
    
    #2 命令别名
    alias ll='ls -l'
    •   bash快捷键

    •   输入输出重定向:

            

           

            

    •   多命令输入和管道符
    •  

        用法:./configure && make && make install

           ls /root/test && echo yes || echo no

      管道符:命令1的正确输出作为命令2的操作对象

       通配符 

    1.4 Bash变量:自定义变量、环境变量、位置参数变量、预定义变量

    #1 环境变量
    export <变量名=值>  #设置变量
    env  #查询变量
    unset <变量名>  #删除变量
    
    #PATH:系统查找命令的路径
    echo $PATH
    PATH="$PATH":/root/sh  #PATH变量叠加的方式来临时设置环境变量

    # 接收键盘输入 read [选项] [变量名]
    # 选项:
    -p "提示信息",-n 字符数:只接受指定的字符数后就自动执行了 # 演示位置参数 vi test.sh '''''' #!/bin/bash read -p "Input your age: " age echo "$1 age is ${age}" ''''''
    chmod 755 test.sh
    ./test.sh liming
    [root@localhost ~]# ls
    anaconda-ks.cfg  test.txt
    [root@localhost ~]# echo $?   #0表示上次命令执行正确
    0
    [root@localhost ~]# lss
    -bash: lss: 未找到命令
    [root@localhost ~]# echo $?
    127
    •  变量运算:推荐用“$((运算式))”或“$[运算式]”
    •  运算符:

     1.5 环境变量配置文件

    #系统默认环境变量配置文件有:
    
    #所有用户生效
    
    /etc/profile
    
    /etc/profile.d/*.sh
    
    /etc/bashrc
    
    #对应用户生效
    
    ~/.bash_profile
    
    ~/.bashrc

    source <配置文件>  #使配置文件生效
    
    . 配置文件  #同上
    
    set  #查询系统默认变量

    二、Shell编程

    2.1 正则和通配符

    • 正则是在文件中匹配符合条件的字符串,是包含匹配(grepawksed支持正则),类似python中re.search用法;
    • 通配符是匹配符合条件的文件名,是完全匹配(lsfindcp不支持正则,只能使用通配符进行匹配),类似python中re.march用法

     2.2 字符截取命令

    #1 cut <文件名>
    # 选项: -f 列号:提取第几列;-d 分隔符:按照指定分隔符分割符(默认为制表符)
    cut -f 2 test.txt
    cut -f 2,4 test.txt
    cut -d ":" -f 3 /etc/passwd
    #cut的短板:不能很好识别以空格分隔的内容,这种更适合用awk命令
    
    #插入一个命令:printf '输出类型 输出格式' <输出内容>
    #   输出类型: %ns:输出n个字符;  %ni:输出n个整数;  %m.nf:浮点数
    #  一般awk配合printf使用
    
    #2 awk '条件1 {动作1} 条件2 {动作2}' <文件名>
    awk '{FS=":"} {print $1 "	" $3}' /etc/passwd  # {FS=":"}指定分隔符;  第一行没有分割
    awk 'BEGIN{FS=":"} {print $1 "	" $3}' /etc/passwd  #BEGIN分割第一行
    
    #3 sed [选项] '动作' <文件名> #用来对数据选取、替换、删除、新增等操作
    # 选项: -n:只输出处理行; -e:允许输入数据应用多条SED命令; -i:直接修改数据文件
    # 动作: a追加,c行替换,i插入,d删除,p打印,s字符替换
    df -h | sed -n '2p' #只查看第二行
  • 相关阅读:
    FPGA--Cyclone中的时钟资源
    网易的翻译蛋
    程序员的健康问题,水桶腰
    如何像如何像 NASA 顶级程序员一样编程 — 10 条重要原则
    FOC_矢量控制相关资料
    BLDC 无刷电机FOC驱动 STM32官方培训资料
    ueditor插入百度音乐无法播放-403 问题
    phpstudy APACHE支持.htaccess以及 No input file specified解决方案
    linux数据库备份脚本
    阿里云centos 搭建SVN
  • 原文地址:https://www.cnblogs.com/koafan-zou/p/12292178.html
Copyright © 2020-2023  润新知