Shell脚本介绍及脚本功能

文章目录

  • 一、什么是shell
  • 二、hello word
    • 2.1 echo
    • 2.2第一个脚本
  • 三、Bash的基本功能
    • 3.1别名
    • 3.2常用快捷键
    • 3.3输入输出
    • 3.4 输出重定向
    • 3.5 多命令执行
    • 3.6 管道符
    • 3.7 通配符和特殊符号

一、什么是shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程
序设计语言。shell是解释执行的。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务
shell的类型:
shell有两种主要的语法类型:Bourne和C,这两种语法是互不兼容的。Bourne主要包括sh,ksh,
Bash,psh,zsh,其中Bash在linux中使用最广;C家族主要包括:csh,tcsh。

# 查询系统中支持的shell
[lisen@localhost root]$ vi /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bas

二、hello word

2.1 echo

echo在shell编程中经常使用,可以将信息输出到终端,也可以将字符重定向到文件等。
echo命令格式: echo [选项] [输出内容]
选项 -e 表示支持反斜杠控制的字符转换

\   输出\本身
\a  输出警告声音
\b  退格键,即向左删除键
\c  取消输出行末的换行符,与-n作用一致
\e  esc键
\f  换页符
\n  换行符
\r  回车符
\t  tab键
\v  垂直制表符
\0nnn  按照8进制ASCII码表输出字符
\xhh  按照十六进制ASCII码表输出字符

事例

[lisen@localhost root]$ echo -e "ab\bc"
ac
[lisen@localhost root]$ echo -e "a\tb\tc\nd\te\tf"
a b c
d e f
[lisen@localhost root]$ echo -e "\x61\t\x62\t\x63\n\x64\t\x65\t\x66"
a b c
d e f
## \e[1 表示开启颜色输出, 31m为定义颜色, \e[0m 表示结束颜色输出
## 30m 黑色;31m 红色;32m绿色;33m黄色;34m蓝色; 35m洋红;36m青色; 37m白色
[root@localhost ~]# echo -e "\e[1;31m abcd \e[0m"
abcd #字体为红色

2.2第一个脚本

[root@localhost ~]# mkdir sh
[root@localhost ~]# cd sh
[root@localhost sh]# vim hello.sh
#!/bin/bash
# hello.sh
echo "hello world"
# 在执行前需要为脚本赋予可执行权限
[root@localhost sh]# ./hello.sh
-bash: ./hello.sh: 权限不够
[root@localhost sh]# chmod 755 hello.sh
[root@localhost sh]# ./hello.sh
hello world

三、Bash的基本功能

3.1别名

作用: 可以为我们常用的命令指定一个容易记的别名,方便使用。 在命令指定别名后,别名有优先执行

如何指定别名: alias 别名=‘原命令’
如果查看别名:alias
示例:

[root@localhost ~]# alias vi='vim'
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'

关于命令的执行顺序:

  • 如果使用绝对路径或相对路径执行命令,则执行是命令本身
  • 如果没有指定相对或绝对命令,有别名优先执行别名
  • 如果没有指定别名则,执行Bash的内部命令
    优先级最后的是按照$PATH环境变量定义的目录查找顺序找到的第一个命令
    注意: 原则上在定义别名时不要与原有的命令,这样容易混淆

别名的持久化:以命令的方式定义的别名重启之后就不再有效了,如果需要持久化的保持别名在需要在
配置文件中指定。该文件在用户主目录下。

[root@localhost ~]# vi .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
#在下面定义自己的别名,该别名永久生效
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

3.2常用快捷键

在这里插入图片描述

3.3输入输出

标准输入输出:
在这里插入图片描述

3.4 输出重定向

在这里插入图片描述

3.5 多命令执行

在这里插入图片描述
示例:

# 如果ls命令正确执行,则会执行后一个命令
ls /home/fafd && cd /home/fafd
# 如果ls /home/fafd没有正确执行,则执行后一个命令
ls /home/fafd || mkdir /home/fafd

3.6 管道符

命令格式:命令1 | 命令2
命令1的正确输出作为命令2的操作对象。注意:如果命令1不能正确输出则命令2不能执行。
示例:

# 当显示的结果比较多,则可以进行分屏显示
ls /etc | more
# 查看当前的连接
[root@localhost ~]# netstat -an | grep ESTABLISHED
tcp 0 0 192.168.114.128:22 192.168.114.1:3293 ESTABLISHED

3.7 通配符和特殊符号

在这里插入图片描述
在这里插入图片描述
示例:

[root@localhost ~]# name='zs'
[root@localhost ~]# echo $name
zs
[root@localhost ~]# echo '$name'
#在单引号中失去了$符号的特殊含义
$name
[root@localhost ~]# echo "$name"
#在双引号中$没有失去特殊含义
zs
[root@localhost ~]#
[root@localhost ~]# d=`date`
#将date命令的结果赋给变量d
[root@localhost ~]# echo $d
20211114日 星期日 13:01:38 CST
[root@localhost ~]# dd=$(date)
#将date命令的结果赋给变量d
[root@localhost ~]# echo $dd
20211114日 星期日 13:01:58 CST

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频号视频下载教程:如何把微信视频号的视频下载下来

视频号下载相信不少人都多少有一些了解,但今天我们就来细说一下关于视频号视频下载的相关疑问,以及大家经常会问到底如何把微信视频号的视频下载下来? 视频号视频下载教程 视频号链接提取器详细使用指南,教你轻松下载号视频&…

Django后台管理(二)

一、自定义注册管理类介绍 官网:Django 管理站点 | Django 文档 | Django 注册模型除了使用 Django 默认的管理类admin,也可以自定义,比如: class StudentAdmin(admin.ModelAdmin):pass admin.site.register(Student, StudentAdmin)ModelAdmin 类是管理界面中模型的表示。…

功能富集分析 | GO| KEGG

写在前面 我们《复现SCI文章系列教程》专栏现在是免费开放,推出这个专栏差不多半年的时间,但是由于个人的精力和时间有限,只更新了一部分。后续的更新太慢了。因此,最终考虑后还是免费开放吧,反正不是什么那么神秘的东…

Linux环境下的性能分析 之 CPU篇(二)

2、CPU的使用情况分析 a、类似任务管理器的top & htop 说到对CPU的性能分析,大家一定不会忘记windows下那个最熟悉的工具:任务管理器。 有了这个玩意儿,我们就可以看到CPU的利用率,以及每一个进程所占用的CPU资源。那在Linu…

刷题第1天:LeetCode27--移除数组元素--双指针法(快慢指针法)

LeetCode27移除元素:给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组…

LeetCode 15 三数之和

LeetCode15 三数之和 在解决算法问题时,三数之和问题是一个经典且常见的挑战之一。给定一个整数数组,任务是找出所有不重复的三元组,使得三元组中的元素之和为零。 问题描述 给定一个整数数组 nums,判断是否存在三元组 [nums[i…

【论文精读】LLaMA1

摘要 以往的LLM(Large Languages Models)研究都遵从一个假设,即更多的参数将导致更好的性能。但也发现,给定计算预算限制后,最佳性能的模型不是参数最大的,而是数据更多的。对于实际场景,首选的…

缺省参数(默认参数)

概念&#xff1a;定义或声明函数时为函数的参数指定一个缺省值&#xff08;默认值&#xff09;。 使用规则&#xff1a;如果调用时没有实参则用缺省值&#xff0c;有则用指定实参。如下。 void Func(int a 0) {cout<<a<<endl; } int main() {Func(); // 没有…

FPS游戏之漫谈Shader.globalMaximumLOD

为什么要谈Shader.globalMaximumLOD 因为需要啊 不知道有没有发现某某场景在某个显卡上帧率很低 其他显卡就没有低帧率。怎么办呢&#xff1f;有没有快的办法 那就直接硬编码检测 某地图 某显卡直接降低globalMaximumLOD Shader.globalMaximumLOD是Unity中的一个属性&#xff…

Python 中生成多种有规律的数字序列

在 Python 编程中&#xff0c;生成数字序列是一项常见且重要的任务。Python 提供了多种方法来生成具有不同规律的数字序列&#xff0c;例如等差数列、等比数列、斐波那契数列等。本文将深入探讨如何使用 Python 中的内置函数、列表推导式、生成器等方式来生成多种有规律的数字序…

Huggingface学习笔记

课程地址&#xff1a;【HuggingFace简明教程,BERT中文模型实战示例.NLP预训练模型,Transformers类库,datasets类库快速入门.】 什么是huggingface&#xff1f; huggingface是一个开源社区&#xff0c;提供了先进的NLP模型、数据集以及工具。 主要模型&#xff1a; 安装环境&…

【Java程序设计】【C00284】基于Springboot的校园疫情防控管理系统(有论文)

基于Springboot的校园疫情防控管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的校园疫情防控系统 本系统分为系统功能模块、管理员功能模块以及学生功能模块。 系统功能模块&#xff1a;在系统首页可以查…

13.openEuler 操作系统日志管理

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 1.常用系统日志介绍 ● dmesg 主要记录系统在开机时内核检测过程所产生的信息,通过执行dmesg命令查看. ● /…

树结构数据

背景 页面展示树结构 思路 后端返回树结构数据给前端 参数entity public class TestEntity {/*** 维度*/private String dim;/*** 值*/private BigDecimal value;/*** 子节点*/private List<TestEntity> children; } 代码 String treeJsonFileName "goalCost.…

LeetCode 1038.从二叉搜索树到更大和树

给定一个二叉搜索树 root (BST)&#xff0c;请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下&#xff0c; 二叉搜索树 满足下列约束条件&#xff1a; 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左…

Spring Cloud与Docker集成:微服务容器化解决方案详解

推荐一款AI网站 AI写作与AI绘画智能创作平台 - 海鲸AI | 智能AI助手&#xff0c;可以免费领取GPT3.5无限卡 Spring Cloud 和 Docker 是两个不同的技术&#xff0c;但它们可以一起工作以构建、部署和管理微服务架构。下面是它们各自的简介以及它们如何协同工作的原理解析。 Sp…

Flutter 中 Gap 和 SizedBox 的比较与区别

在 Flutter 中&#xff0c;两个小部件在控制应用设计布局尺寸和空间方面起着至关重要的作用&#xff0c;它们是 SizedBox 和 Gap 小部件。 在 Flutter 中构建响应式布局时&#xff0c;间距和大小很重要。框架提供了一些简单但功能强大的小部件来控制间距和大小&#xff0c;Siz…

代码随想录day26||● 39. 组合总和● 40.组合总和II● 131.分割回文串

39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; class Solution {private:vector<int> path;vector<vector<int>> result; public:void trackbacking(vector<int>& candidates,int target,int sum,int startIndex){if(sum>target)retur…

蜘蛛蜂优化算法SWO求解不闭合MD-MTSP,可以修改旅行商个数及起点(提供MATLAB代码)

1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&#xff0c;求解精度高的优势。VRPTW&#x…

043 多态

示例 public class A {public void say(){System.out.println("I am A");} } public class B extends A {Overridepublic void say(){System.out.println("I am B");} } public class Test {public static void main(String[] args) {A a new B(); // …