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脚本

编写脚本:

一个可编辑的文本编辑器

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

  • 脚本第一行写入:#!/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.执行命令

相关推荐
多吃蔬菜!!!20 分钟前
vscode 搭建C/C++开发环境搭建(linux)
linux·c语言·c++
李李李li28 分钟前
Ubuntu 22.04 安装tensorrt
linux·tensorrt
凳子(刘博浩)44 分钟前
决策树的笔记
笔记
phoenix09812 小时前
Linux入门DAY29
linux·运维
一休哥助手2 小时前
Naive RAG:简单而高效的检索增强生成架构解析与实践指南
运维·人工智能·架构
入秋3 小时前
Linux服务器安装部署 Nginx、Redis、PostgreSQL、Docker
linux·前端
Bi3 小时前
包含多个子项目集成一个项目部署Vercel方法
运维·前端
Mr. Cao code3 小时前
使用Tomcat Clustering和Redis Session Manager实现Session共享
java·linux·运维·redis·缓存·tomcat
zcz16071278213 小时前
Linux 网络命令大全
linux·运维·网络
the sun343 小时前
Reactor设计模式及其在epoll中的应用
linux·运维·服务器·c++