linux命令之sh的使用及说明

 更新时间:2026年01月24日 11:02:35   作者:乐之者java  
文章介绍了Shell的基本概念,包括Shell的作用、类型(如Bourne Shell、C Shell、Korn Shell)、Bash的特点以及如何使用Shell命令和脚本,通过一个简单的Shell脚本示例,文章展示了如何使用`-c`和`-x`选项来执行和调试Shell脚本

shell简介

sh命令就是shell

而我们知道shell的作用是什么?shell就是用来解释linux命令的,我们输入命令,指示linux帮我们做什么,而linux本身是看不懂我们输入的命令的,它只认识01,而事实显然不是如此, 那么在用户和linux之间必然有个桥梁起到了转换的作用,这里的桥梁就是shell。

shell有很多种,常见的如

Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh)。

Bourne shell 是 UNIX 最初使用的 shell,简称sh。

Linux 操作系统缺省的 shell 是Bourne Again shell,一看什么区别?

多了个Again,即简称 bash。但是有的同学可能会问,我平常在linux用到的sh命令或者在shell脚本第一行写的“#!/bin/sh”都是指的Bourne shell吗,不是的。为什么呢?

看到了吧,linux中默认把/bin/sh 指向了/bin/bash,所以我们平常用的就是/bin/bash。至于sh和bash什么区别,顾名思义的来解释,多了个Again嘛,其实事实也是如此,bash扩展了sh,并继承吸收了csh和ksh的优点,知道这么多就够了。

说了那么多,来看看sh命令吧

格式 :sh [选项] 命令字符串或者shell脚本

常见选项:

  • -c:command后面跟一个字符串,这个字符串可以是我们平常执行的任何命令,有参数选项时一定要用引号括起来
  • -x:后面跟shell脚本,可以详细的显示shell脚本的执行信息

看下面的例子

sh -c "ls -l"等价于 ls -l:

比如,现在我有个job.sh,实现的功能是每个一秒钟输出一句话,共输出十次,内容如下:

i=0
while [ $i -lt 10 ]
do
 echo "现在i的值是:"$i
 i=$(($i+1))
 sleep 1
done

当我执行命令“sh -x job.sh”来调试执行的时候输出什么信息呢?如下:

+ i=0
+ '[' 0 -lt 10 ']'
+ echo $'\347\216\260\345\234\250i\347\232\204\345\200\274\346\230\257\357\274\2320'
现在i的值是:0
+ i=1
+ sleep 1
+ '[' 1 -lt 10 ']'
+ echo $'\347\216\260\345\234\250i\347\232\204\345\200\274\346\230\257\357\274\2321'
现在i的值是:1

我这里没有全部粘贴过来,下面都是一样的了,我就不粘贴了,以"+"开头的就是调试的详细信息了,通过给sh命令知道-x选项,可以方便我们排查错误信息。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 配置XManager5连接Linux图形化界面详解

    配置XManager5连接Linux图形化界面详解

    这篇文章主要介绍了配置XManager5连接Linux图形化界面详解,需要的朋友可以参考下
    2017-01-01
  • Xshell从会话同步到磁盘迁移的完整配置指南

    Xshell从会话同步到磁盘迁移的完整配置指南

    Xshell作为业界领先的SSH客户端工具,以其强大的功能和稳定性赢得了广大技术人员的青睐,随着使用时间的增长,我们会积累大量服务器连接配置,当更换电脑或重装系统时,如何安全、完整地迁移这些配置成为一个实际问题,本文将为您提供一套完整的解决方案
    2025-12-12
  • 在Ubuntu上安装`.deb`软件包的几种方法

    在Ubuntu上安装`.deb`软件包的几种方法

    在 Ubuntu 上安装 .deb 软件包有几种方法,可以使用命令行工具,也可以通过图形界面进行安装,以下是几种常见的安装方法,需要的朋友可以参考下
    2025-05-05
  • Linux域名服务DNS配置方法

    Linux域名服务DNS配置方法

    DNS 全称是 Domain Name System,大意是域名解析系统,它的职责是把域名翻译成一个一个可以识别的 IP 供不同的计算机设备连接。这篇文章主要介绍了Linux域名服务DNS配置方法,需要的朋友可以参考下
    2019-08-08
  • 在Linux中精确测量域名解析时间的方法

    在Linux中精确测量域名解析时间的方法

    域名解析是互联网通信的基础环节之一,它负责将人类可读的域名(如 example.com)转换为机器可读的 IP 地址(如 93.184.216.34),本文将详细介绍如何在 Linux 系统中精确测量域名解析时间,涵盖多种工具和方法,帮助你从入门到精通,需要的朋友可以参考下
    2025-02-02
  • Ubuntu环境安装Anaconda3完整步骤

    Ubuntu环境安装Anaconda3完整步骤

    大家好,本篇文章主要讲的是Ubuntu环境安装Anaconda3完整步骤,感兴趣的同学快来看一看吧,对你有帮助的话记得收藏一下哦
    2021-11-11
  • linux系统下oracle11gR2静默安装的经验分享

    linux系统下oracle11gR2静默安装的经验分享

    这篇文章主要介绍了linux系统下oracle11gR2静默安装的经验, 所有操作无需使用图形界面. 静默安装能减少安装出错的可能性, 也能大大加快安装速度。有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • linux vim撤销回退操作方式

    linux vim撤销回退操作方式

    在Linux的vim编辑器中,撤销(Undo)和回退(Redo)操作可以通过不同的方式实现,撤销单个更改或连续更改,可以使用u键或:undo命令,连续撤销可以使用U命令,而.命令可以重复上一个编辑动作
    2025-02-02
  • Linux创建用户组并分配用户权限方式

    Linux创建用户组并分配用户权限方式

    这篇文章主要介绍了Linux创建用户组并分配用户权限方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-11-11
  • Linux 系统优化的一些建议(内核优化)

    Linux 系统优化的一些建议(内核优化)

    这篇文章主要介绍了Linux 系统优化的一些建议,帮助大家更好的使用Linux,感兴趣的朋友可以了解下
    2020-08-08

最新评论