当前位置: 首页 > news >正文

Linux笔记7——shell编程基础-1

补充

  • shell编程也算是一种编程语言
  • 编程语言分类:解释型语言、编译型语言
  • 解释器|编译器:通过解释或编译源代码在计算机上运行机器语言(即二进制0100)
  • 解释器:源代码  - 读一行运行一行  -机器   (脚本)  -shell、python、php
  • 编译器:源代码  - 编译成中间语言  - 运行这个中间语言成机器语言  - java、C、C++、go
  • shell解释器:/bin/bash

一、shell简介

  • 虚拟机分内核态(内核层)和用户态(应用程序层)
  • 用户无法直接和内核交互
  • Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口
  • 它接收用户输入的命令并把翻译后送入内核去执行
  • Shell是命令解释器
  • Shell是编程工具,是一种脚本语言

1.shell分类

linux支持很多shell类型作为shell语言的解释器

使用命令查看:cat /etc/shells

注:Linux中默认的shell是bash,放在/bin/bash里

2.shell脚本

编写脚本:

一个可编辑的文本编辑器

  • 创建一个脚本文件,常以.sh为扩展名
  • vim  脚本文件名.sh

一个能解释执行的脚本解释器

  • 脚本第一行写入:#!/bin/bash
  • #! 是一个约定的标记,告诉系统这个脚本需要什么解释器来执行,即使用哪种 Shell

二、第一个脚本

1.编写脚本命令

步骤一:创建shell脚本文件,一般以.sh结尾;

步骤二:脚本第一行固定写入:#!/bin/bash

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

步骤三:编写要执行的shell命令

步骤四:编写完成,vim方式保存退出,执行脚本

方式一:使用bash命令调用

方式二:加执行权限,再通过路径调用

注:一定在脚本前加./,不然会认为是系统命令

2.echo命令

  • cho命令是Linux中最基本和最常用 的命令之一;
  • 传递给 echo 的参数被打印到标准输出中;
  • echo通常用于 shell 脚本中,用于显示消息或输出其他命令的结果;

语法:echo  [选项]  输出内容

  • -n:取消输出内容后的换行符
  • -e:支持反斜线控制字符的转换

注:!和\均为特殊符号,不能放在一起

\e的使用方式

  • 格式:“\e[颜色代码m”代表颜色输出开始,\e[0m代表颜色输出结束;
  • 其中,\e是转义起始符,定义一个转义序列;[表示开始定义颜色,后加颜色代码m是转义终止符;可以进行多个设置,多个设置之间用分号(;)分割开,同时生效。
  1. 字体颜色:30-37;即:30=黑色,31=红色,32=绿色,33=黄色,34=蓝色,35=紫色,36=青色,37=白色
  2. 字背景颜色:以上颜色数字+10就会变成底色;即:40=黑色,41=红色,42=绿色,43=黄色,44=蓝色,45=紫色,46=青色,47=白色
  3. 特殊的显示:即:1设置高亮,4设置下划线,5设置闪烁,7设置反显,8设置消隐

3.练习

用脚本打印出七种颜色的hello world

三、bash的基本功能

补充:

  • 调用历史命令
  • 使用Tab键补全命令
  • 设置别名
  • 常用快捷键
  • 输入输出重定向
  • 多命令顺序执行
  • 命令支持的通配符
  • grep过滤文件中的字符串
  • 其他特殊符号

1.历史命令

格式:history   [选项]

  • -c:清空历史命令
  • -w:把缓存中的历史命令保存到历史命令隐藏文件.bash_history当中

注:当正常退出(logout、exit、ctrl+d)操作系统时,系统会自动将缓存的历史命令保存到文件里

实验:将history缓存中的命令写入到.bash_history命令文件当中,并清空缓存中的命令

注:这里-c情况的是命令缓存中的数据,实际命令文件中的数据并不受影响,依旧存在

2.历史命令的调用

  • 使用上、下光标键调用
  • 使用“!!”,重复执行上一条命令
  • 使用“!n”,重复执行第n条历史命令
  • 使用“!字符”,重复执行最近一条以此字符开头的命令

3.使用Tab将命令或文件名补全

Tab键补全

  • 可以自动补全文件名、目录名、命令、命令选项(ls --help)、服务名等;
  • 能提高用户的输入速度,也能提高准确性;
  • 自动补全之前,输入的字符越多补齐的范围越小,就越精确;
  • 使用的软件包:bash-completion
  • 注:补齐功能会在目录结尾处自动补上/符号,有时会导致系统识别出现问题,从而报错,如:xfsdump

4.命令别名的管理

  • alias:查看系统中已经生效的别名
  • alias  别名=“原命令  [选项]”
  • 删除:退出当前终端或删除别名——unalias 别名

注:此时如果想要查看mnt,使用ls就会变成切进mnt目录,因此alial命令别名不能随意设置

执行顺序

  • 用绝对路径或相对的方式执行命令
  • 别名命令
  • 根据环境变量PATH定义的目录顺序找到的第一个命令(有内置也有外部命令,具体用type区分)

实验:把sh脚本放在/usr/bin/目录下,就可以被视作是系统命令去使用,不用加./

注:用命令alias设置的别名是临时的,退出当前终端则不再生效

四、循环语句-for循环

实验:在shell脚本中写入for循环语句,以更加简短的命令打印七种颜色的hello world

1.for循环语句格式

2.执行命令

http://www.dtcms.com/a/343257.html

相关文章:

  • SMT车间如何通过防静电监控系统提升产品质量
  • 206.反转链表
  • 【时时三省】vectorCAST 便捷使用技巧
  • 利用 Python 爬虫获取淘宝商品评论实战指南
  • 并发编程原理与实战(二十五)手写简易线程池实战,剖析线程状态转换过程
  • 【LINUX网络】UDP协议基础原理
  • Netty AdaptiveRecvByteBufAllocator原理详解
  • 分布式消息队列技术(原理相关):Kafka
  • 机器学习3
  • 《WINDOWS 环境下32位汇编语言程序设计》第6章 定时器和Windows时间
  • Git 版本控制核心流程与协作指南(从入门到冲突解决)
  • windows下jdk环境切换为jdk17后,临时需要jdk1.8的处理
  • 机器学习笔试题
  • 如何利用淘宝API接口实现自动下单?实战案例讲解
  • 【无标题】GAP: 用文本指导对任何点云进行高斯化(ICCV 2025)
  • 香港云服务器被暴力破解的危害有多大?
  • 使用docker manifest制作本地多架构镜像
  • Java与Vue深度融合,构建资产设备全周期管理系统,集成移动端实时操作与后台智能管理,功能完备且附完整源码,助力企业实现资产数字化高效运维
  • ChatBI如何重塑企业数据分析?2025年智能BI行业趋势解读
  • 使用 TensorBoardX 实现 PyTorch 神经网络可视化:从入门到进阶
  • Chrome 插件开发实战:从入门到进阶
  • Python 面向对象编程入门:从思想到属性操作
  • PyTorch 环境配置
  • Telnet、ftp详解
  • 教育场景下禁用html5播放器拖动进度条的例子
  • python 项目编号 2025821 有关于中英文数据的收集、处理
  • mac的m3芯片通过Homebrew安装git
  • ES_分词
  • 2025-08-21 Python进阶9——__main__与lambda
  • Harbor私有仓库实战配置