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

相关推荐

  1. shell脚本基础相关变量

    2024-04-03 19:16:02       17 阅读
  2. shell 脚本基础练习

    2024-04-03 19:16:02       24 阅读
  3. Shell脚本基础知识

    2024-04-03 19:16:02       18 阅读
  4. shell脚本--基础版本

    2024-04-03 19:16:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 19:16:02       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 19:16:02       5 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 19:16:02       4 阅读
  4. Python语言-面向对象

    2024-04-03 19:16:02       6 阅读

热门阅读

  1. 短视频中可能触发降权的行为有哪些?

    2024-04-03 19:16:02       26 阅读
  2. Linux文件系统深入解析

    2024-04-03 19:16:02       23 阅读
  3. x264 arm64汇编分析 quant8x8_neon分析

    2024-04-03 19:16:02       22 阅读
  4. [Python学习篇] Python格式化输出

    2024-04-03 19:16:02       27 阅读
  5. 亚远景科技-浅谈ASPICE标准和ASPICE认证/评估

    2024-04-03 19:16:02       20 阅读
  6. 容器网络测试关键问题

    2024-04-03 19:16:02       24 阅读
  7. Hive安装配置

    2024-04-03 19:16:02       20 阅读
  8. spark 编程案例

    2024-04-03 19:16:02       22 阅读
  9. Springboot3 集成knife4j(swagger)

    2024-04-03 19:16:02       23 阅读