Shell脚本介绍及基本功能

news2024/10/7 16:25:51

目录

一、什么是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 functions

alias 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.coloradmin.cn/o/1566059.html

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

相关文章

N5182A安捷伦N5182A信号发生器

181/2461/8938产品概述: 信号特征 100 kHz至3或6 GHz使用高度可靠的快速开关电子衰减器时,最高可达3 GHz》23 dBmW-CDMA动态范围:≤-73 dBc,输出功率为5 dBm列表模式下≤900 μs的同步频率、幅度和波形切换 调制和扫描 调幅、调频、调频和…

OpenHarmony实战开发-如何通过Stage模型实现一个简单的游戏卡片

介绍 本示例展示了如何通过Stage模型实现一个简单的游戏卡片。 通过卡片支持的点击事件进行交互,让用户通过点击的先后顺序把一个乱序的成语排列成正确的成语。使用了C和TS的混合编程方式,将获取随机数的能力下沉到C实现,并通过NAPI的能力将…

高德定位 SDK 到底提供了什么服务?

最近我被高德的销售烦到不行,说是我用了他们的 SDK,现在 SDK 要收费。 表达是很绕的,什么授权啦,什么企业认证风险啦,讲了一堆,还跟我开始搬出协议了。感觉高德的销售真够垃圾的,编个话术都不会…

【EI检索会议】电子、通信与智能科学国际会议二轮征稿中

【会议名称】电子、通信与智能科学国际会议 【会议简称】ECIS 2024 【会议官网】www.icecis.org 【会议时间】2024年5月24日~27日 【二轮截稿时间】2024年4月20日 【会议地点】中国长沙 【征稿主题】集中但不限于“电子、通信、智能科学”等其他相关主题。 【官方邮箱】…

3.java openCV4.x 入门-数据类型(CvType)与Scalar

专栏简介 💒个人主页 📰专栏目录 点击上方查看更多内容 📖心灵鸡汤📖我们唯一拥有的就是今天,唯一能把握的也是今天 🧭文章导航🧭 ⬆️ 2.hello openCV ⬇️ 4.待更新 数据类型&#xff…

【leetcode】双指针(二)

标题: 【leetcode】双指针(二) 水墨不写bug 正文开始: (一)总和为目标值的两个数 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#…

支持各种不同系列nvdia显卡和amd显卡,DeepFaceLab安装与使用,附完整的软件打包下载一键安装

支持各种不同系列nvdia显卡和amd显卡,DeepFaceLab安装与使用,附完整的软件打包下载一键安装。 主要使用的技术: 1. 深度学习(Deep Learning) 深度学习是人工智能领域的一个重要分支,它通过模拟人脑的神经…

面试经典150题【131-140】

文章目录 面试经典150题【131-140】123.买卖股票的最佳时机III188.买卖股票的最佳时机IV二分查找的板子:35.搜索插入位置74.搜索二维矩阵162.寻找峰值33.搜索旋转排序数组34.在排序数组中查找元素的第一个和最后一个位置153.寻找旋转排序数组中的最小值4.寻找两个正…

C++之类和对象的中篇

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

函数参数缺省和内联函数【C++】

文章目录 函数参数缺省函数参数缺省的条件和要求 内联函数内联函数的工作原理内联函数的定义方法内联函数的要求解决方法:直接在.h中定义内联函数的函数体 内联函数再Debug模式下默认是不展开的 函数参数缺省 顾名思义:可以少传一个/多个参数给函数&…

归并排序和分治

归并排序 归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治之 可以看到这种结构…

前端实现菜单搜索搜索(功能模版)

目录 前言正文 前言 总体界面如下所示&#xff1a; 正文 <template><div class"avue-searchs"click.self"handleEsc"><div class"avue-searchs__title">菜单搜索</div><div class"avue-searchs__content"…

游戏运营分析:如何在新游戏上线初期实现精细化运营?

一、背景介绍 在当今的手游市场中&#xff0c;每一款新游戏的发布都如同踏上一段充满未知与挑战的探险之旅。游戏刚上线时&#xff0c;运营情况往往如同飘摇的小船&#xff0c;随时可能受到风浪的侵袭。此时&#xff0c;如何准确地找到问题所在&#xff0c;为游戏的健康运营和持…

瀚海贫者福,铜子恣意游

上学时打饭追求性价比的习惯一直不改&#xff0c;半个大鱼头三块钱&#xff0c;一份豆腐一块钱&#xff0c;还有一个红烧茄子2块5&#xff0c;再加三毛钱的饭&#xff0c;共6块8毛钱&#xff0c;早晚餐也会有这类性价比高又营养的选择&#xff0c;科大食堂现在越来越人性化&…

蓝桥杯练习——拼出一个未来

选中 index.html 右键启动 Web Server 服务&#xff08;Open with Live Server&#xff09;&#xff0c;让项目运行起来。接着&#xff0c;打开环境右侧的【Web 服务】&#xff0c;就可以在浏览器中看到如下效果&#xff1a; 目标 完善 js/index.js 的 TODO 部分&#xff0c;实…

零基础学会Python

⭐简单说两句⭐ ✨ 正在努力的小新~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &…

C 回调函数的两种使用方法

对回调&#xff08;callback&#xff09;函数的一点粗陋理解&#xff0c;在我小时候&#xff0c;隔壁村有家月饼小作坊&#xff08;只在中秋那段时间手工制作一些月饼出售&#xff0c;后来好像不做了&#xff09;&#xff0c;做出的月饼是那种很传统很经典的款式&#xff0c;里…

电机的工作电流怎么计算?

电机的工作电流计算通常需要考虑多个因素&#xff0c;包括电机的额定功率、工作电压、效率以及负载情况等。以下是一个基本的计算方法&#xff0c;用于估算直流电机或交流电机在特定条件下的工作电流。 了解电机参数 额定功率 (P_rated) 电机的额定功率是指在额定工作条件下&am…

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

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