Shell脚本介绍及基本功能

目录

一、什么是Shell

二、什么是Shell脚本

三、echo

四、Hello World

五、Bash的基本功能

1.别名

2.常用快捷键

3.输入输出

4.输出重定向

5.多命令执行

6.管道符

7.通配符和特殊符合


一、什么是Shell

Shell是一种命令行解释器,它是操作系统的一部分,用于解释和执行用户输入的命令。Shell提供了一种与操作系统交互的方式,用户可以通过Shell来执行命令、管理文件、运行程序等。Shell还提供了一些编程功能,比如变量、循环、条件判断等,使用户能够编写脚本来自动化任务。

在Unix/Linux系统中,常见的Shell有Bourne Shell(sh)、Bash(Bourne Again Shell)、C Shell(csh)、Korn Shell(ksh)等。Bash是最常用的Shell,它兼容Bourne Shell,并提供了更多的功能和扩展。在Windows系统中,常用的Shell是命令提示符(Command Prompt)和PowerShell。

Shell作为一个命令行解释器,可以执行用户输入的命令,并将结果输出显示给用户。它还可以通过管道(|)将多个命令连接起来,实现复杂的操作。Shell还提供了一些内置命令和变量,用于控制和管理系统的各个方面。总之,Shell是与操作系统交互的一种方式,通过输入命令来实现各种操作和任务。

二、什么是Shell脚本

Shell脚本是一种用于自动化任务的脚本编程语言。它是一种文本文件,其中包含一系列命令和控制结构,可以通过Shell解释器来执行。Shell脚本通常用于在Unix/Linux操作系统上执行一系列命令,可以用于编写自动化任务、系统管理、文件操作、数据处理等。Shell脚本可以通过命令行执行,也可以作为可执行文件执行。Shell脚本的语法和功能根据不同的Shell解释器而有所不同,常见的Shell解释器有Bash、Csh、Ksh等。 

# 查询系统中支持的shell
[root@localhost ~]# vim /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

三、echo

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

符号

作用

\

输出\本身

\a

   输出警告声音

\b

   退格键,即向左删除键

\c

取消输出行末的换行符,与-n作用一致

\e

esc

\f

   换页符

\n

   换行符

\r

   回车符

\t

tab

\v

   垂直制表符

\0nnn

按照8进制ASCII码表输出字符

\xhh

按照十六进制ASCII码表输出字符

实例:

[root@localhost ~]# echo -e "ab\bc"
ac
[root@localhost ~]# echo -e "a\tb\tc\nd\te\tf"
a       b       c
d       e       f
[root@localhost ~]# 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      #字体为红色

四、Hello World

 编写Shell脚本使其打印hello world

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

五、Bash的基本功能

1.别名

作用: 可以为我们常用的命令指定一个容易记的别名,方便使用。 在命令指定别名后,别名有优先执行权
如何指定别名: alias 别名 =‘ 原命令
如何查看别名: alias
示例:
[root@localhost ~]# alias 1='ifconfig'
[root@localhost ~]# alias
......
[root@localhost ~]# 1

关于命令的执行顺序:
  • 如果使用绝对路径或相对路径执行命令,则执行是命令本身
  • 如果没有指定相对或绝对命令,有别名优先执行别名
  • 如果没有指定别名则,执行 Bash 的内部命令
  • 优先级最后的是按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令
注意: 原则上在定义别名时不要与原有的命令,这样容易混淆
别名的持久化: 以命令的方式定义的别名重启之后就不再有效了,如果需要持久化的保持别名在需要在配置文件中指定。该文件在用户主目录下。
[root@localhost ~]# vim .bashrc 
# .bashrc# User specific aliases and functionsalias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
#在下面定义自己的别名,该别名永久生效# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fi

2.常用快捷键

快捷键

作用

ctrl+c

   强制终止当前命令

ctrl+L

   清屏

ctrl+U

删除光标左侧的字符,同时将字符放入粘贴板,可以结合ctrl+Y进行粘贴

ctrl+K

删除光标右侧的字符,其作用与ctrl+U相同

ctrl+R

   在历史命令中搜索命令

ctrl+D

   退出当前终端

3.输入输出

设备

设备文件名

文件描述符

类型

键盘

/dev/stdin

0

标准输入

显示器

/dev/sdtout

1

标准输出

显示器

/dev/sdterr

2

标准错误输出

回收站

/dev/null

4.输出重定向

类型

符号

作用

标准输出重定向

命令 > 文件

以覆盖的方式,将命令的正确输出输出到指定的文件或 设备中

命令 >> 文件

以追加的方式,将命令的正确输出输出到指定的文件或 设备中

标准错误输出重 定向

错误命令 2>  

以覆盖的方式,把命令的错误输出输出到指定的文件或 设备中

错误命令 2>>

文件

以追加的方式,将命令的错误输出输出到指定的文件或 设备中

5.多命令执行

&&

例如:命令1 && 命令2, 表示命令1正确执行,则接着执行命令2;如果命令1没有执行则 命令2也不会执行

;

多个命令顺序执行,之间没有逻辑关系

示例:

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

6.管道符

命令格式:命令1  | 命令2

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

示例:

# 当显示的结果比较多,则可以进行分屏显示
ls /etc | more# 查看当前的连接
[root@localhost home]# netstat -an | grep ESTABLISHED
tcp        0      0 192.168.181.128:22      192.168.181.1:64052     ESTABLISHED
tcp        0      0 127.0.0.1:39488         127.0.0.1:2379          ESTABLISHED
tcp        0     52 192.168.181.128:22      192.168.181.1:64051     ESTABLISHED
tcp        0      0 127.0.0.1:2379          127.0.0.1:39488         ESTABLISHED

7.通配符和特殊符号

?

匹配任意一个字符

*

匹配0个或多个字符

[]

匹配中括号中的任意一个字符,例如:  [abc]以匹配abc

[-]

匹配中括号中的任意一个字符,  - 表示范围,例如:  [a-z],可以匹配从az中的任意一个字 

[^]

是逻辑非,表示匹配不是中括号中的字符的其他字符,如:  [^a-z],表示匹配不是从az 其他字符

‘’       

单引号中,所有的特殊字符,如:  $, ` 等,都只会当成是普通字符,即:失去了特殊符号 的作用

“”      

双引号,  在双引号中特殊字符也会失去特殊含义,但是:  $, ` \ 这几个特殊字符的特殊含 义是有作用的,分别是:获取变量的值,引用命令,转义符的意义

``

反引号,用来调用系统命令,在Bash中会运行,和$()作用一样

$()

和反引号一样,调用系统命令,建议使用这个,不容易看错

$

获取变量的值,如:  $name

\

转义字符,跟在其后的特殊字符会转换为普通字符,失去特殊含义

#

注释

 示例:

[root@localhost /]# name='zs'
[root@localhost /]# echo $name
zs
[root@localhost /]# echo '$name'
$name
[root@localhost /]# echo "$name"
#在单引号中失去了$符号的特殊含义
zs
[root@localhost /]# d=`date`
#将date命令的结果赋给变量d
[root@localhost /]# echo $d
2024年 04月 03日 星期三 01:42:55 CST
[root@localhost /]# dd=$(date)
#将date命令的结果赋给变量d
[root@localhost /]# echo $dd
2024年 04月 03日 星期三 01:43:09 CST

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

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

相关文章

【数据处理包Pandas】分组及相关操作

目录 一、初步认识分组并查看分组信息(一)通过聚合函数查看分组信息(二)转换成列表查看所有组的信息(三)通过循环查看各组的名称和组中的数据信息(四)通过get_group()方法直接获得一…

​理想汽车:智能化之路,道阻且长后发先至

‍‍‍ 写下这个标题时,我心情非常复杂,理想汽车在 2023 年前,给大众的印象几乎是冰箱彩电大沙发,智能化宣传着墨极少。 在小鹏公开宣布将自动驾驶作为自己的核心能力,蔚来也大举投入智能化研发时,理想汽…

阿里云数据库服务器价格表,2024年最新报价

阿里云数据库服务器价格表,优惠99元一年起,ECS云服务器2核2G、3M固定带宽、40G ESSD Entry云盘,优惠价格99元一年;阿里云数据库MySQL版2核2G基础系列经济版99元1年、2核4GB 227.99元1年,云数据库PostgreSQL、SQL Serve…

Cesium 仿高德导航线

最近在开发无人机平台中,做一个自主航线规划时,为了达到一个好的航线展示效果,决定仿照高德地图中的线路导航来做。高德地图导航线效果如下: 开始的时候想通过传统的贴图方式来进行处理,发现使用此种方式时&#xff0c…

深入C语言:探究static关键字的奥秘

文章目录 一、链接属性二、static变量1、定义静态局部变量2、在函数内部使用静态变量3、函数中静态局部变量与递归 三、static变量与全局变量的区别1、存储期与生命周期2、可见性与作用域3、使用场景4、静态与动态内存分配 注意事项 当用于不同的上下文环境时, sta…

手搓 Docker Image Creator(DIC)工具(02):预备知识

此节主要简单介绍一下 Docker、Dockerfile 的基本概念,Dockerfile 对的基本语法,Windows 和 macOS 下 Docker 桌面的安装,Docker 镜像的创建和运行测试等。 1 关于 Docker Docker 是一个开源的应用容器引擎,它允许开发者打包应用…

各种坐标系辨析

坐标系辨析 0. 地球椭圆体1. 大地坐标系2. eci地心惯性坐标系3. 地心地固坐标系(ECEF坐标系,E系)4. 站心坐标系(ENU坐标系)5. LTM坐标系6. IMU坐标系7. 代码部分7.1 LLA(大地坐标系坐标、经纬度海拔)坐标转LTM系(ENU系)下的三维笛卡尔坐标 0. 地球椭圆体 地球表面是…

游泳耳机哪个牌子最好?2024好评率爆表的四款游泳耳机推荐!

在当今快节奏的生活中,运动成为了我们保持健康和放松身心的重要方式之一。游泳作为一项全身运动,不仅可以帮助我们塑造身材,还能让我们在水中尽情享受自由的感觉。然而,在游泳过程中,音乐却往往因为防水问题而成为一种…

【氮化镓】同质GaN垂直PiN二极管的SEB

【Single-event burnout in homojunction GaN vertical PiN diodes with hybrid edge termination design. Appl. Phys. Lett. 124, 132101 (2024)https://doi.org/10.1063/5.0189744】 概括: 本研究探讨了具有混合边缘终止设计(Hybrid Edge Terminati…

LabVIEW挖坑指南

一、挖坑指南 1.1、输出变量放在条件框内 错误写法: 现象:如果没进入对应的分支,输出为默认值 正常写法: 让每个分支输出的值都在预料之内。 1.2、统计耗时不准 错误写法 现象:统计出来的耗时是2000ms 正常写法&a…

【Java代码审计】SSRF篇

【Java代码审计】SSRF篇 1.SSRF漏洞2.Java-SSRF漏洞常见接口3.SSRF漏洞演示URLConnectionURLConnection绕过 4.SSRF修复白名单方式过滤方式通用预防SSRF方法 1.SSRF漏洞 SSRF 是 Server-Side Request Forge 的英文首字母缩写,中文意思是服务器端请求伪造。Web 应用…

Coze工作流介绍(一)

Coze工作流介绍 工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排,例如旅行规划、报告分析等。 当目标任务场景包含较多的步骤,且对输出结果的准确性、格式有严格要求时…