博客
关于我
Linux学习--第十天--bash脚本、用户自定义变量、环境变量、位置参数变量、预定义变量、标准输入输出、wc、history、dd、PS1
阅读量:804 次
发布时间:2023-02-03

本文共 2162 字,大约阅读时间需要 7 分钟。

shell脚本入门到进阶

Shell简介

Shell是 Unix/Linux系统中重要的命令行接口工具,主要用于批量处理、系统管理和自动化脚本编写。Shell分为两种类型:BashC Shell

B Shell

  • sh、ksh、Bash、psh、zsh:Bash是Linux系统默认的shell,兼容性强,功能强大。

C Shell

  • csh、tcsh:其语言风格类似于C语言,得名C Shell

查看系统Shell

cat /etc/shells

Echo命令

echo是Shell中最常用的命令,用于显示信息或执行操作。

常用例子

echo -e "ab\bc"    # 输出 "abc"echo -e "\e[1;31m abcd \e[0m"    # 输出彩色字体,支持ANSI代码

特殊字符

\a    警告声\b    删除前一个字符\c    不加换行符\f    换页\n    换行(默认)\r    回车\t    制表符\v    垂直制表符\\    插入`\`\0nnn  插入ASCII字符(八进制)\xhh  插入ASCII字符(十六进制)

脚本执行

chmod 755 my.sh    # 使脚本可执行./my.sh            # 执行脚本

在bash中执行

bash my.sh

DOS脚本转换

yum update -y dos2unix    # 安装转换工具

命令历史

history -c          # 清除命令历史history -w          # 强制保存历史!n                  # 执行第n条命令!字符串            # 找到最近包含“字符串”的命令vi /etc/profile      # 修改bash配置文件,保存历史条数

命令别名

alias vi="vim"        # 定义别名unalias vi             # 移除别名

命令执行顺序

  • 绝对路径或相对路径
  • 别名
  • 内部命令
  • 根据$PATH查找路径
  • 快捷键

    Ctrl+A      光标到开头Ctrl+C      终止命令Ctrl+Z      后台暂停Ctrl+U      剪切前面命令Ctrl+K      剪切后面命令Ctrl+Y      粘贴命令Ctrl+L      清屏

    标准输入输出

    /dev/stdin  标准输入(文件描述符0)/dev/stdout 标准输出(文件描述符1)/dev/stderr 标准错误(文件描述符2)# 重定向示例ls > my.txt       # 覆盖ls >> my.txt      # 追加ls > file 2>&1    # 同时保存正确输出和错误输出

    wc命令

    wc -c my.txt    字符计数wc -l my.txt    行计数wc -w my.txt    单词计数

    多命令执行

    ;               无关命令&&             前面无误执行后面命令||             前面错误则执行后面命令

    管道符

    命令1 | 命令2

    Grep命令

    grep 'ss' /etc/services   查找文本grep -i 'ss' /etc/services  忽略大小写grep -n 'ss' /etc/services  显示行号grep -v 'ss' /etc/services  找不到的行

    通配符

    ?    单个字符\*   任意字符(非空)[]   字符类^    开头-    区间^0-5  特定范围

    Bash特殊符号

    ''      不解析特殊符号""      不解析特殊符号(除$、`、`)`      运行子shell$()     子shell输出#      comment

    四种变量

    用户自定义变量

    name=12echo $name

    环境变量

    PATH="/usr/bin:/usr/sbin:$PATH"

    预定义变量

    $0    命令名或脚本名$1    第一个参数$*    所有参数@      分别处理参数#    命令的返回状态?     最后一个命令的状态$!    后台进程号$$    进程号

    Read命令

    read -s -t 30 -n 3 -p "输入数字" yournumber

    数值运算

    aa=11bb=22declare -i cc=$aa+$bbdeclare -i cc=$aa+$bbdd=$(expr $aa + $bb)ff=$(( $aa + $bb ))

    运算符

    • 逐个字符比较 ==!=
    • 数值运算 +-*/%
    • 逻辑运算 &&||
    • 条件运算 ||&&!
    • 关系运算 ==<><=>=
    • 数值运算 =~$?+=-=*=/=%=

    判断测试表达式

    [ condition ][ -e /path/to/file ]  判断文件存在[ $a -eq $b ]        判断数值相等[ "字符串1" =~ "字符串2" ]  部分字符串匹配[ -d /path ]  判断是否是目录[ -f /path ]  判断是否是文件

    转载地址:http://zhzfk.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
    查看>>
    OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    opencv之namedWindow,imshow出现两个窗口
    查看>>
    opencv之模糊处理
    查看>>
    opencv保存图片路径包含中文乱码解决方案
    查看>>
    opencv图像分割2-GMM
    查看>>
    OpenCV学习(13) 细化算法(1)(转)
    查看>>