Linux sh命令

news2024/11/17 19:34:41

目录

  • 一. 基本语法
  • 二. 选项
    • 2.1 -c 字符串中读取内容,并执行
      • 2.1.1 基本用法
      • 2.1.2 获取当前目录下失效的超链接
    • 2.2 -x 每个命令执行之前,将其打印出来
    • 2.3 结合Here文档使用


一. 基本语法

⏹Linux 和 Unix 系统中用于执行 shell 脚本 或 运行命令 的命令。

sh [选项] [脚本文件] [参数...]

⏹选项

  • -c:从字符串中读取内容,并执行。
  • -x:在每个命令执行之前,将其打印出来。
  • -s:从标准流中读取内容,并执行。

二. 选项

2.1 -c 字符串中读取内容,并执行

2.1.1 基本用法

  • sh -c 是一个用于在子 shell 中执行命令的选项。
  • 允许你通过命令行传递一个字符串作为命令,并在一个新的 shell 实例中运行这个命令。
  • 这个功能非常有用,尤其是在需要运行复杂命令或多条命令时。
fengyehong@ubuntu:~$ sh -c 'echo "Hello World"; echo "你好 世界"'
Hello World
你好 世界

⏹执行时,传递参数。
--:用于分隔脚本命令和参数。

fengyehong@ubuntu:~$ sh -c 'echo "Hello $1"; echo "你好 $2"' -- "World" "世界"
Hello World
你好 世界

⏹接收管道符提供的标准流,打印文件的名称 和 文件的大小

  • xargs -I {}:占位符
  • du -h:根据文件名获取文件大小
fengyehong@ubuntu:~$ ls *.exe | xargs -I {} sh -c 'echo -n "文件名称为: {} "; echo "文件大小为: $(du -h "{}" | awk "{print \$1}")"'
文件名称为: centbrowser_5.1.1130.129_x64.exe 文件大小为: 137M
文件名称为: fdm_x64_setup.exe 文件大小为: 4.0K

2.1.2 获取当前目录下失效的超链接

在这里插入图片描述

  • 查找当前目录下的所有符号链接,并对每个符号链接执行 test -e
  • 若链接已失效(目标不存在),则输出该符号链接的路径。
fengyehong@ubuntu:~/jmw_work_space/20240914$ find $(pwd) -type l -print | xargs -I {} sh -c 'test -e {} || echo {}'
/home/fengyehong/jmw_work_space/20240914/temp_link

2.2 -x 每个命令执行之前,将其打印出来

⏹sh脚本中不含有变量的情况

# 获取要执行的sh脚本的内容
fengyehong@ubuntu:~/jmw_work_space/20240914$ cat my_sh.sh
echo "HELLO WORLD!"
echo "你好,世界!"

# 执行脚本之前先把要指定的脚本的内容打印出来
fengyehong@ubuntu:~/jmw_work_space/20240914$ sh -x my_sh.sh
+ echo HELLO WORLD!
HELLO WORLD!
+ echo 你好,世界!
你好,世界!

⏹sh脚本中有不需要计算和需要计算的变量的情况

fengyehong@ubuntu:~/jmw_work_space/20240914$ cat my_sh.sh
# 简单的echo打印部分
echo "HELLO WORLD!"
msg="你好,世界!"
echo ${msg}

# 计算文件的总数量,然后打印
txt_file_count=$(find ~ -name "*.txt" | wc -l)
echo "txt文件的总数量为: ${txt_file_count}"

fengyehong@ubuntu:~/jmw_work_space/20240914$
fengyehong@ubuntu:~/jmw_work_space/20240914$ sh -x my_sh.sh
+ echo HELLO WORLD!
HELLO WORLD!
+ msg=你好,世界!
+ echo 你好,世界!
你好,世界!
+ find /home/fengyehong -name *.txt
+ wc -l
+ txt_file_count=134
+ echo txt文件的总数量为: 134
txt文件的总数量为: 134

2.3 结合Here文档使用

# 定义一个变量
fengyehong@ubuntu:~$ my_var="你好,世界!"

# 使用Here文档输入多行命令后,执行
fengyehong@ubuntu:~$ sh << _EOF_
> echo "当前文件数量为: $(ls -l | wc -l)"
> echo "外部变量值为:${my_var}"
> _EOF_
当前文件数量为: 14
外部变量值为:你好,世界!

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

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

相关文章

【我的 PWN 学习手札】Fastbin Double Free

前言 Fastbin的Double Free实际上还是利用其特性产生UAF的效果&#xff0c;使得可以进行Fastbin Attack 一、Double Free double free&#xff0c;顾名思义&#xff0c;free两次。对于fastbin这种单链表的组织结构&#xff0c;会形成这样一个效果&#xff1a; 如果我们mallo…

卡西莫多的手信

通过网盘分享的文件&#xff1a;卡西莫多的手信2022-2024.9.15-A5.pdf 链接: 百度网盘 请输入提取码 提取码: gig1

oracle数据库安装和配置详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Oracle 数据库是全球广泛使用的关系型数据库管理系统 (RDBMS)&#xff0c;提供高性能、可靠性、安全性和可扩展性&#xff0c;广泛应用于企业关键任务系统。下面详细介绍如何在 CentOS 系统上安装和配置 Or…

非金属失效与典型案例分析培训

随着生产和科学技术的发展&#xff0c;人们不断对高分子材料提出各种各样的新要求。因为技术的全新要求和产品的高要求化&#xff0c;而客户对产品的高要求及工艺理解不一&#xff0c;于是高分子材料断裂、开裂、腐蚀、变色等之类失效频繁出现&#xff0c;常引起供应商与用户间…

O2O营销,中小企业数字化转型的加速器

嘿&#xff0c;小伙伴们&#xff0c;今天咱们要聊的&#xff0c;可是那让中小企业焕发新生的O2O营销魔法&#xff01;它就像是一位时空穿梭者&#xff0c;轻松跨越线上与线下的鸿沟&#xff0c;带着商家们开启了一场数字化转型的奇妙之旅。 O2O营销&#xff1a;不只是连接&…

【主机入侵检测】Wazuh规则详解

前言 Wazuh 规则是一组用XML格式编写的条件&#xff0c;它们定义了应该如何解释日志数据。这些规则由Wazuh Manager使用&#xff0c;用于在日志消息中检测特定的模式或行为&#xff0c;并相应地生成警报或响应。它们在威胁检测中扮演着至关重要的角色&#xff0c;因为它们允许系…

NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳

与电脑不同&#xff0c;NAS通常都是7*24小时不间断运行&#xff0c;这使得下载资源变得更加便捷&#xff0c;解决了bt、pt下载需要长时间在线、挂机的问题。 所以&#xff0c;对于许多选择品牌NAS或自行搭建NAS系统的用户而言&#xff0c;像qBittorrent、Transmission这样的下载…

DAY 9 - 10 : 树

树的概念 定义 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个节点的有限集合T&#xff0c;它满足两个条件 &#xff1a; 1.有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点。 2.其余的节点可以分为m&#xff08;m≥0&#xff09;个互不相交的…

rk3568 parameter.txt 添加自己的分区,或者去掉已有的分区

问题&#xff1a; 客户在 之前的核心板上 可以烧写自己的镜像&#xff0c;但是在最新的核心板上却烧写不上&#xff0c;新旧核心板 只是变了emmc &#xff0c; 由 江波龙 ------->星火。 分析&#xff1a; 客户的镜像的分区是经过自己的定制的&#xff0c;所以有可能 是 由…

Linux云计算 |【第三阶段】PROJECT1-DAY3

主要内容&#xff1a; Keepalived高可用、部署Ceph分布式存储 一、网站架构进阶项目案例 案例1&#xff1a;Keepalived高可用 延续 PROJECT1-DAY2 案例&#xff0c;部署两台代理服务器&#xff0c;实现如下效果&#xff1a; 1&#xff09;利用keepalived实现两台代理服务器的…

【Java面试】第十一天

&#x1f31f;个人主页&#xff1a;时间会证明一切. 目录 Springboot是如何实现自动配置的&#xff1f;Spring的Autowired能用在Map上吗&#xff1f;ListMapSet数组注意事项 Spring的AOP在什么场景下会失效&#xff1f; Springboot是如何实现自动配置的&#xff1f; Spring Bo…

【开源免费】基于SpringBoot+Vue.JS高校心理教育辅导系统(JAVA毕业设计)

本文项目编号 T 031 &#xff0c;文末自助获取源码 \color{red}{T031&#xff0c;文末自助获取源码} T031&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

嵌入式C语言自我修养:C语言的面向对象编程思想

⭐关联知识点&#xff1a;C和C的区别 代码复用与分层思想 什么是代码复用呢&#xff1f; &#xff08;1&#xff09;函数级代码复用&#xff1a;定义一个函数实现某个功能&#xff0c;所有的程序都可以调用这个函数&#xff0c;不用自己再单独实现一遍&#xff0c;函数级的代…

【YashanDB知识库】单机升级典型问题及应急措施

升级典型问题 官网升级操作指引 离线升级&#xff0c;一般线上操作之前需要照着做一遍&#xff0c;但是由于数据量少、monit进程在测试环境没有启动等原因&#xff0c;一些操作、配置问题在测试过程中不会暴露&#xff0c;在生成操作的时候才暴露&#xff0c;下面3项是比较常见…

你也喜欢“钓鱼“吗?

免责声明:本文仅做分享! 目录 什么是网络钓鱼 流程 攻击手法 0-隐藏自己 1-office宏 创建xxx.dotm 创建xxx.docx 2-RLO 自解压 3-快捷方式lnk 4-邮件伪造 Swaks Gophish 5-网站克隆 setoolkit nginx反向代理 前端页面克隆 6-wifi钓鱼 7-其他 防御 溯源 反…

分布式云化数据库的优缺点分析

分布式云化数据库的优点主要体现在高可用性和容错性、可扩展性、体系结构、数据一致性、成本、升级迭代等方面。同时也存在一些缺点&#xff0c;如通信开销较大、数据的存取结构复杂、数据安全性难以保证、系统复杂性、高并发访问性能问题以及节点故障风险等。以下是对分布式云…

Ruoyi Cloud K8s 部署

参考 https://blog.csdn.net/Equent/article/details/137779505 https://blog.csdn.net/weixin_48711696/article/details/138117392 https://zhuanlan.zhihu.com/p/470647732 https://gitee.com/y_project/RuoYi-Cloud https://blog.csdn.net/morecccc/article/details/1…

hku-mars雷达相机时间同步方案-硬件(MID360与海康MV-CB060-10UMUC-S)

hku-mars雷达相机时间同步方案复线&#xff08;MID360与海康MV-CB060-10UMUC-S&#xff09; 参考 官方指导教程 硬件设备&#xff1a; 硬件同步原理连接方案&#xff1a; 注意&#xff1a; 在我们这个项目中&#xff0c;stm32中GPRMC该数据直接传到Mid360雷达中&#xff0c;由…

筑牢网络安全防线:为数字时代保驾护航

《筑牢网络安全防线&#xff1a;为数字时代保驾护航》 一、网络安全&#xff1a;数字时代的关键课题 网络安全在当今数字时代的重要性愈发凸显。2024 年国家网络安全宣传周以 “网络安全为人民&#xff0c;网络安全靠人民” 为主题&#xff0c;深刻体现了网络安全与每个人息息…

最佳实践 · MySQL 分区表实战指南

引言 在数据量急剧增长的今天&#xff0c;传统的数据库管理方式可能无法有效处理海量数据的存储和查询需求。MySQL 提供了分区表功能&#xff0c;这不仅能够帮助优化性能&#xff0c;还能简化数据管理过程。分区表允许将数据表拆分成多个逻辑上的分区&#xff0c;每个分区可以…