linux命令之sh的用法

2023-10-26

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吗,不是的。为什么呢?

image.png

看到了吧,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:

image.png

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

i=0
while[KaTeX parse error: Can't use function '\]' in math mode at position 7: i-lt10\̲]̲ do echo"现在i的值是…i
i= ( ( (( ((i+1))
sleep1
done

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

+i=0
+‘[‘0-lt10’]’
+echoKaTeX parse error: Undefined control sequence: \[ at position 48: …+i=1 +sleep1 +'\̲[̲'1-lt10'\]' +ec…’??°??¨i???ˉ???1’
现在i的值是:1

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux命令之sh的用法 的相关文章

  • Tk 初始化失败:无显示名称且无 $DISPLAY 环境变量

    我试图从 Ubuntu 终端调用 Centos 服务器上的工具 我收到以下错误 Tk 初始化失败 没有显示名称 也没有 DISPLAY 环境变量 请帮我解决这个问题 提前致谢 连接到你的 CentOS 机器ssh Y其中 每man ssh
  • 如何测试 Jersey REST Web 服务?

    我已经编写了一个 Restful Web 服务 并且必须使用 JUnit4 对其进行测试 我已经使用 Jersey Client 编写了一个客户端 但想知道我是否只能使用 junit4 测试我的服务 至少有人可以帮我提供样品吗 我的休息服务
  • Guice:当 FactoryBuilder 中提供合适的构造函数时,“找不到合适的构造函数”

    我使用 Guice 进行依赖注入 但收到此错误 1 Could not find a suitable constructor in java lang Void Classes must have either one and only
  • 如何从 Linux 命令行打开 Sublime Text 2 文件到选项卡,而不是新窗口

    我有 ST2 设置 这样我就可以执行 sublime file txt 它将在 ST2 窗口中打开 但是我怎样才能让它在当前打开的窗口的新选项卡中打开呢 尝试 Sublime 命令行帮助 subl 帮助 Sublime Text 2 内部版
  • 从 java 类生成 xsd 的实用程序

    我想为以下类生成 xsd public class Node private String value private List
  • 枚举内的枚举

    这不是我被卡住的问题 而是我正在寻找一种简洁的方式来编写我的代码 本质上 我正在编写一个事件驱动的应用程序 用户触发事件 事件被发送到适当的对象 然后对象处理事件 现在我正在编写偶数处理程序方法 我希望使用 switch 语句来确定如何处理
  • docker 中带有参数的 jar 文件

    Helo 我有一个 java jar 文件 当我从终端运行它时 它会接受一堆参数作为输入 我想制作一个 docker 映像并运行它 其中包含 jar 文件 我仍然可以在其中传递 jar 文件的参数 将 jar 文件设置为您的入口点 http
  • Logback 配置在单行上有异常吗?

    我的日志被提取 传输并合并到 elasticsearch 中 多行事件很难跟踪和诊断 有没有办法使用收集器和正则表达式将异常行分组到单个记录中登录配置 https logback qos ch manual layouts html xTh
  • Java 7 中新的 JNLP 缺少项目警告是怎么回事?

    从 Java 6 切换到 Java 7 后 我的 JNLP 仍然工作正常 但它现在抛出一系列如下错误 Missing Application Name manifest attribute for http blah com app jar
  • MongoDb Spring 在嵌套对象中查找

    我正在使用 Spring Data Mongodb 和这样的文档 id ObjectId 565c5ed433a140520cdedd7f attributes 565c5ed433a140520cdedd73 333563851 list
  • 在仔细锁定但不受信任的代码上使用 Thread.stop()

    我知道Thread stop 已被弃用 并且有充分的理由 它通常不安全 但这并不意味着它是never安全 据我所知 在我想要使用它的上下文中它是安全的 而且 据我所知 我别无选择 上下文是一个两人策略游戏的第三方插件 以国际象棋为例 第三方
  • 使用 JavaFX 将可执行 Jar 限制为一个窗口

    我正在通过构建 JavaFX 应用程序E fx 剪辑 and Java场景生成器 基本功能是登录窗口 登录后 将打开新窗口 然后登录窗口消失 目前还处于原型阶段 用完eclipse后 我想要的功能都有了 启动时显示登录窗口 代码如下 Ove
  • 使用 Jboss7 加载资源返回 null

    如何使用Jboss7 1从java代码中加载图像等资源 这曾经与 Jboss4 一起使用 this getClass getClassLoader getResourceAsStream myapp includes images imag
  • 如何解决声纳中的 dodgy:unchecked/unconfirmedcast 问题?

    我在下面的代码中通过声纳获得异常 我该如何解决这个问题 建议我 Override public boolean validate BaseInfo infoObject boolean isValid true AckTransferPay
  • 我有什么理由应该嘲笑?

    我也是 Mockito 和 PowerMockito 的新手 我发现我无法使用纯 Mockito 测试静态方法 因此我需要使用 PowerMockito 对吗 我有一个非常简单的类 名为 Validate 使用这个非常简单的方法 publi
  • 抛出 UnsupportedOperationException

    因此其中一种方法的描述如下 public BasicLinkedList addToFront T data 该操作无效 对于排序列表 将生成 UnsupportedOperationException 使用消息 排序列表的操作无效 我的代
  • 当 javadoc 未附加到依赖项时,如何将 javadoc 引用到 Maven 的 eclipse 插件中的依赖项

    我在开发中使用 Eclipse Maven 和 Java 我使用 Maven 下载依赖项 jar 文件和 javadoc 如果可用 并使用 Maven 的 eclipse 插件为 Eclipse 生成 project 和 classpath
  • Spark java:如何处理多部分/表单数据输入?

    我在用spark http sparkjava com 开发网络应用程序 当我想上传文件时出现问题 public final class SparkTesting public static void main final String a
  • 如何强制 Spark 执行代码?

    我如何强制 Spark 执行对 map 的调用 即使它认为由于其惰性求值而不需要执行它 我试过把cache 与地图调用 但这仍然没有解决问题 我的地图方法实际上将结果上传到 HDFS 所以 它并非无用 但 Spark 认为它是无用的 简短回
  • 如何为用户的活动设置计时器?

    如果用户在 5 小时内停止工作 我需要执行特定的方法 假设用户已登录 但他在 5 小时内没有向数据库的特定表添加任何记录 任何时候用户将记录添加到指定的表中 该特定用户的计时器都应该重置 否则它将继续运行 如果达到 5 小时 应用程序应显示

随机推荐

  • SpringBoot:切面AOP实现权限校验:实例演示与注解全解

    1 理解AOP 1 1 什么是AOP AOP Aspect Oriented Programming 面向切面思想 是Spring的三大核心思想之一 两外两个 IOC 控制反转 DI 依赖注入 那么AOP为何那么重要呢 在我们的程序中 经常
  • SM4 CBC模式加密的C语言实现

    因为工作的关系 最近在研究国密算法 其中无线局域网使用的SM4算法颇为神秘 网上资源也是少的可怜 不过在笔者的努力下 还是成功搞定了 有感于SM4相关正确资料的稀少 同时也算是自我的学习积累 故写下此文 希望可以帮助后来人少走些弯路 此处给
  • 有意思的心理学现象

  • Elasticsearch 实战之三:ES 基本操作

    目录 0 数据格式说明 1 ES的基本操作 1 1 索引操作 1 1 1 建立索引 1 1 2 删除索引 1 1 3 查询索引 1 2 映射操作 1 2 1 建立映射 1 2 2 查询映射 1 3 基本操作 CRUD 1 3 1 新增和替换
  • Zephyr-环境搭建

    目录 1 前言 2 安装主机依赖 3 获取源码 4 安装工具链 5 编译一个Demo 1 前言 Zephyr支持Ubuntu macOS Windows环境下开发 本文介绍基于Ubuntu的环境搭建 包括 Ubuntu开发环境搭建 主要是工
  • VBA设置默认/缺省运行路径的方法

    在设计VBA脚本时 有时我们需要在指定目录中运行或打开第三方程序 文件 那么最好的方法就是使用ChDir命令更改当前默认的运行路径 以便脚本能轻松地找到所需文件 更改缺省文件夹或驱动器 ChDir 语句和ChDrive语句 使用ChDir语
  • 改进的PSO-BP算法在工业机器人末端位姿误差补偿中的应用

    摘要 提出了一种全梯度标准粒子群优化反馈 FGSPSO BP 神经网络的工业机器人末端位姿补偿模型 首先 提出一种运动学逆变换算法 通过机器人末端位姿对机器人各关节角度值进行计算 并采用Matlab验证了运动学逆变换算法的准确性 然后 提出
  • VS2019打包WPF安装程序最新教程

    VS2019打包WPF安装程序最新教程 使用Visual Studio 2019开发的WPF程序如果想要打包为安装程序 除了在VS2019找到WPF项目类库直接右键发布之外 更常用的还是将其打包为exe或者msi的安装程序 打包成安装程序的
  • 2022电赛小车开源代码讲解开源

    2022电赛小车我认为有主要是几个主要的问题 我将分这几个部分来讲解 目录 一 循迹 二 蓝牙通信 双车数据传输 三 起始路口的识别 四 分叉路口的识别 五 源码 2022电赛 双车稳定行驶 哔哩哔哩 bilibili 一 循迹 循迹我们组
  • 自定义yaml文件调整pandoc和pandoc-crossref将markdown转word过程中公式行距

    markdown借助pandoc和pandoc crossref将写好的学术论文导出成word时 公式为OMML格式 这个格式可以通过word中的mathtype插件批量转换 但是公式的基准为正文 如果正文文本的段落格式为固定值20磅 比较
  • 使用Java生成全部数独(Sudoku)布局

    b 引言 b 数独相信很多人都玩过 趣味性很强 十分的耐玩 可有没有程序员想过玩实现一个数独布局的算法呢 算法是个很有意思 很神奇的东西 我第一次接触算法是刚学C的时候 写DOS下的挖雷程序 当时还是WIN32 C的编译器还是TC3 0 当
  • Python基础篇(十一):装饰器

    装饰器 前言 1 装饰器的定义 2 装饰器的应用 3 装饰器的语法 4 func args kwargs 前言 装饰器是Python中一种强大的函数或类修饰机制 用于在不修改原始函数或类代码的情况下 对其进行功能扩展或修改 装饰器基于函数式
  • python基础学完还要学什么_Python学完基础语法后,再往后应该学什么?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一阶段 Python语言及应用 课程内容 Python语言基础 面向对象设计 多线程编程 数据库交互技术 前端特效 Web框架 爬虫框架 网络编程 掌握技能 1 掌握Python语言语法及面向
  • 教程资源(持续更新中)

    https www liwenzhou com posts Go golang menu 下面这个也很牛逼 the way to go ZH CN directory md at master piexlmax the way to go
  • 数据结构与算法 ---- 线性表 及Java实现 顺序表、链表、栈、队列

    数据结构与算法是程序设计的两大基础 大型的IT企业面试时也会出数据结构和算法的题目 它可以说明你是否有良好的逻辑思维 如果你具备良好的逻辑思维 即使技术存在某些缺陷 面试公司也会认为你很有培养价值 至少在一段时间之后 技术可以很快得到提高
  • 散列表(hash表)的基本原理以及hash冲突(碰撞)

    散列表为什么诞生 它用于做什么 先说说数组 数组的优点是查找比较快 但是添加和删除效率比较低 再说说链表 链表的优点是添加和删除效率比较快 相对于数组 但是遍历需要一个指针从头节点往后找 两者都各有优点和缺点 那么有没有一种方法 既可以添加
  • MAC(m1)-VMWare Fusion CentOS8设置静态IP、SSH连接

    在使用虚拟机的时候 默认情况下使用的DHCP协议 根据网段自动分配ip 分配的动态IP地址 使得每次打开虚拟机后当前的IP地址都会发生变化 这样不方便管理 为了能够给当前虚拟机设置 一个静态IP地址 方便后期使用XShell连接工具进行连接
  • 打造属于自己的正则表达式

    概述 首先需要说明的一点 无论是Winform 还是Webform 都有很成熟的日历控件 无论从易用性还是可扩展性上看 日期的选择和校验还是用日历控件来实现比较好 前几天在CSDN多个版块看到需要日期正则的帖子 所以整理了这篇文章 和大家一
  • 【windows无法自动将IP协议堆栈绑定到网络适配器的一种解决办法】

    今天打开笔记本发现没网了 能够连上WiFi但无法连接到互联网 以太网能够检测到网线插入 但同样无法连接到互联网 使用windows自带的疑难解答进行检测结果为网络适配器的驱动程序可能出现问题 以管理员身份进行修复也失败 查看详情提示wind
  • linux命令之sh的用法

    shell简介 sh命令就是shell 而我们知道shell的作用是什么 shell就是用来解释linux命令的 我们输入命令 指示linux帮我们做什么 而linux本身是看不懂我们输入的命令的 它只认识01 而事实显然不是如此 那么在用