Shell脚本介绍及脚本功能

news2024/12/23 17:19:24

文章目录

  • 一、什么是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.coloradmin.cn/o/1472669.html

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

相关文章

背包问题(介绍+例题+代码+注解)

目录 介绍: 一、01背包 题目描述 输入描述: 输出描述: 代码: 二、完全背包 题目描述 输入描述: 输出描述: 代码: 三、多重背包 题目描述 输入描述: 输出描述: 代码: 四、背包问题 题目描述 输入描述: 输出描…

Mybatis2

Mybatis2 本章目标: myBatis类型别名处理 myBatis参数处理 myBatis结果集类型 myBatis结果集列名和属性名称对应方式处理 附录 本章内容 一、类型别名(typeAliases)处理 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置…

使用EFCore连接SQLite

简介 在使用EFCore连接SQLite之前我们先来了解一下SQLite SQLite是一个轻量级、自包含、无服务器、零配置的事务性SQL数据库引擎,它支持SQL92标准的大多数查询语言并兼容ACID事务。具体如下: 轻量级:SQLite非常轻巧,它的库体积…

[算法沉淀记录] 排序算法 —— 堆排序

排序算法 —— 堆排序 算法基础介绍 堆排序(Heap Sort)是一种基于比较的排序算法,它利用堆这种数据结构来实现排序。堆是一种特殊的完全二叉树,其中每个节点的值都必须大于或等于(最大堆)或小于或等于&am…

Huggingface学习笔记

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

Rust升级慢,使用国内镜像进行加速

背景 rustup 是 Rust 官方的跨平台 Rust 安装工具,国内用户使用rustup update的时候,网速非常慢,可以使用国内的阿里云镜像源来进行加速 0x01 配置方法 1. Linux与Mac OS用户配置环境变量 修改~/.bash_profile文件添加如下内容&#xff1…

Docker基础篇(六) dockerfile体系结构语法

FROM:基础镜像,当前新镜像是基于哪个镜像的 MAINTAINER :镜像维护者的姓名和邮箱地址 RUN:容器构建时需要运行的命令 EXPOSE :当前容器对外暴露出的端口号 WORKDIR:指定在创建容器后,终端默认登…

lv21 QT入门与基础控件 1

1 QT简介 QT是挪威Trolltech开发的多平台C图形用户界面应用程序框架 典型应用 2 工程搭建 2.1 新建ui工程 不要写中文路径 2.1 不勾选UI(主讲) 3 QT信号与槽机制 语法:Connect(A, SIGNLA(aaa()), B, SLOT(bbb()))…

算法--贪心

这里写目录标题 区间问题区间选点引入算法思想例题代码 最大不相交区间的数量算法思想例题代码 区间分组算法思想例题代码 一级目录二级目录二级目录二级目录 区间问题 区间选点 引入 区间问题会给定几个区间,之后要求我们在数轴上选取尽量少的点,使得…

电脑休眠之后唤不醒

现象:午休时间电脑休眠了,醒来之后发现在密码输入界面,但鼠标键盘没反应。按重启键或电源机重新开机,结果开不了机。 原因:1、内存条脏了,导致内存条读取失败 2、休眠的时候硬盘休眠了,导致按…

欢迎免费申报讯方技术HarmonyOS人才训练营!

在今年1月备受瞩目的鸿蒙生态千帆启航仪式上,华为宣布:HarmonyOS NEXT星河预览版正式面向开发者开放申请,意味着鸿蒙将建立更广泛的生态系统,迎来更多的应用和软硬件产品,加速自我技术迭代,同时推动华为全场…

变革中的容器技术

容器化技术的优点 容器化是一种将应用程序和其所需的依赖项,封装在一个可在任何基础架构上一致运行的轻量级可执行文件(即容器)的技术。容器化技术可以大大简化应用程序的部署、管理和维护,提高运维效率和可靠性。 容器化技术有…

LeetCode_Java_动态规划(2)(题目+思路+代码)

131.分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s "aab" 输出:[["a&qu…

工具篇-- 定时任务xxl-job的集群部署

文章目录 前言一、xxl-job-admin 集群部署:1.1 部署步骤:1.2 部署求和建议:1.3 集群部署模拟(单机): 二、xxl-job 执行器 集群部署:2.1 集群部署要求:2.2 集群部署模拟: …

pthread_exit和pehread_join函数

pthread_exit: 在线程中禁止调用exit函数,否则会导致整个进程退出,取而代之的是调用pthread_exit函数,这个函数只会使一个线程退出,如果主线程使用pthread_exit函数也不会使整个进程退出,不会影响其他线程…

【基础知识】MPP架构和hadoop架构比对

架构比对 简单一句描述。 mpp架构,就是找一群和自己能力差不多的任一起做事,每个人做的事情是一致的。 hadoop架构,就是找一群能力差一些的人,但只需要他们每个人只做一部分工作。 举例说明 一个特色小饭店如何成为连锁餐饮巨…

【国密算法】深入理解国密算法:原理、实践及注意事项

目录 引言 1. 国密算法概述 2. 国密算法的实践应用 2.1 对称加密(SM1算法) 2.2 非对称加密(SM2算法) 2.3 哈希算法(SM3算法) 3. 国密算法的注意事项 结论 引言 国密算法,即中国密码算法…

AI数字人SadTalker实战

1.概述 AI数字人在营销和品牌推广中扮演着至关重要的角色,许多企业和个人正积极利用数字技术来打造属于自己的财富。有没有一种简单而免费的方式来创建自己的数字人呢?本篇博客笔者将为大家介绍如何搭建属于自己的AI数字人。 2.内容 2.1 什么是SadTalker…

内存卡无法读取?这里有救!

一、遭遇内存卡无法读取的困境 在日常生活和工作中,我们越来越依赖电子设备来存储和传输数据。然而,当遇到内存卡无法读取的问题时,很多人会感到困惑和焦虑。无论是重要的工作文件、珍贵的家庭照片,还是其他个人数据,…

基于springboot+vue的音乐网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…