泷羽sec:shell编程(9)不同脚本的互相调用和重定向操作

news2024/12/28 3:37:37

声明:

        学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频
————————————————

不同脚本的互相调用

方法一:

首先使用rm *.sh  删掉所有shell脚本意,不要误删了自己的重要文件

然后vim 1.sh    写入echo "hello world"

再创建一个2.sh脚本文件,写入. 1.sh

bash执行2.sh

你会发现输出了1.sh的内容

方法二:

创建的2.sh脚本文件,写入的是. 1.sh

我们可以把. 1.sh修改为source 1.sh

总结:

  • 命令rm *.sh用于删除当前目录下所有以.sh为扩展名的文件。这一步是为了确保环境干净,没有其他干扰的 shell 脚本。不过使用这个命令时要特别小心,因为一旦执行,所有符合条件的文件将被立即删除且无法恢复,如果误删了重要文件会造成损失。
  • 创建2.sh脚本文件,并在其中写入. 1.sh。在shell脚本中,.命令(或者source命令)用于在当前shell环境中执行另一个脚本文件。这里就是在2.sh执行时会调用并执行1.sh
  • 当在2.sh中使用. 1.sh(或source 1.sh)时,它会在当前shell进程中读取和执行1.sh的内容。这与直接执行bash 1.sh有区别。直接执行bash 1.sh会开启一个新的shell子进程来执行1.sh,而source操作是在当前shell进程内执行,这样如果1.sh中定义了变量等操作,这些变量在当前shell环境中会保留下来(如果是bash 1.sh执行,变量在子进程结束后就消失了)

这种脚本间的调用方式在很多场景下都很有用,比如当需要在一个脚本中复用另一个脚本的函数、变量或初始化操作时,可以采用这种方法。

实例:

vim 3.sh写入

name="icetea"

age=21

vim 2.sh写入

source 3.sh

echo "My name is $name and i am $age"

然后bash 2.sh执行脚本

重定向操作

重定向的基本概念

  • 在 Linux 中,重定向是一种将命令的输入、输出或错误信息发送到不同位置的机制。常见的重定向操作符有:
    • >:用于将命令的标准输出重定向到一个文件。如果文件不存在,会创建新文件;如果文件存在,会覆盖原有内容。
    • >>:将标准输出重定向到一个文件,但不会覆盖原有内容,而是追加到文件末尾。
    • <:用于将文件内容作为命令的输入。
    • 2>:用于将命令的错误输出重定向到一个文件。
    • &>:将标准输出和错误输出都重定向到一个文件。

输出重定向

例1:

ls >1.txt

cat 1.txt

例2:

who >1.txt

cat 1.txt

例3:

ls >>1.txt

cat 1.txt

例4:把ls 命令重定向到垃圾桶回收站,执行后,ls没有回显

ls > /dev/null

输入重定向

例1:
创建 dirs.txt 文件,写入以下内容
/home/kali/下载
/home/kali/图片
/home/kali/音乐

这段路径因人而异,需要根据自己的路径来写
使用 ls 命令结合输入重定向来查看这些目录下的文件
ls -l < dirs.txt
这个命令会从 dirs.txt 文件读取目录名称作为 ls -l 命令的输入,然后分别列出这些目录下文件的详
细信息,比如文件权限,所有者,大小,修改时间等内容。
但是实操几次发现每次都是输出了当前目录的全部内容 未解决
查资料,换条指令查看
cat dirs.txt | xargs -I {} ls -ld {}
xargs ls -ld < dirs.txt
xargs 命令将文件内容作为参数传递给 ls -ld
这个命令会读取 dirs.txt 文件的每一行,并使用 ls -ld 命令列出每个目录的详细信息
例2:
读取 subdirs.txt 文件中的每个子目录名称,然后使用 ls 命令列出每个子目录的内容
创建递归目录
mkdir -p /home/kali/桌面/test1/1
mkdir -p /home/kali/桌面/test2/2
mkdir -p /home/kali/桌面/test3/3
编写 subdirs.txt 文件
/home/kali/桌面/test1/
/home/kali/桌面/test2/
/home/kali/桌面/test3/
使用 xargs ls < subdirs.txt 进行查看

输出重定向和输出重定向区别

输出重定向影响命令的输出,输入重定向影响命令的输入
输出重定向用于改变输出的位置,输入重定向用于改变输入的来源
输出重定向是将数据从命令流向文件或其他命令,输入重定向是将数据从文件或其他命令流向命

文件描述符

标识打开的文件的一个抽象的数字,每个打开的文件都会被分配一个文件描述符,用于后续的文
件操作
0 :标准输入,这是程序默认的输入来源,通常与键盘关联。在 shell 脚本中,你可以使用 < 操作
符来重定向标准输入,将文件或其他命令的输出作为脚本的输入
1 :标准输出这是程序默认的输出目的地,通常与屏幕关联。在 shell 脚本中,你可以使用 > 操作
符来重定向标准输出,将脚本的输出保存到文件中。
2 :错误输出,这是程序用于输出错误信息的文件描述符,通常也与屏幕关联。在 shell 脚本中,
你可以使用 2> 操作符来重定向标准错误,将错误信息保存到文件中
例1:

如果ls命令正确,内容输入到1.txt,如果错误,则把错误信息输出到2.txt

ls > 1.txt 2> 2.txt

查看1.txt

cat 1.txt

coo是不存在的指令,会把错误信息输出到2.txt

coo > 1.txt 2> 2.txt

查看2.txt

cat 2.txt

例2:
更复杂的重定向操作,同时重定向标准输出和标准错误到同一个文件
command > output.log 2>&1
2>&1 表示将标准错误(文件描述符 2 )重定向到标准输出(文件描述符 1 )当前的位置,即
output.log 文件。

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

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

相关文章

Qt 小项目 学生管理信息系统

主要是对数据库的增删查改的操作 登录/注册界面&#xff1a; 主页面&#xff1a; 添加信息&#xff1a; 删除信息&#xff1a; 删除第一行&#xff08;支持多行删除&#xff09; 需求分析&#xff1a; 用QT实现一个学生管理信息系统&#xff0c;数据库为MySQL 要求&#xf…

IDEA的service窗口中启动类是灰色且容易消失

大家在学习Spring Cloud的过程中,随着项目的深入,会分出很多个微服务,当我们的服务数量大于等于三个的时候,IDEA会给我们的服务整理起来,类似于这样 但是当我们的微服务数量达到5个以上的时候,再启动服务的时候,服务的启动类就会变成灰色,而且还容易丢失 解决方法 我们按住…

【JMX JVM监控】Prometheus读取Trino的JMX数据到Grafana展示

trino运行拥有自己的UI来监控资源使用率&#xff0c;但领导需要更好的展示做些图表出来放到PPT里面&#xff0c;选择了用prometheus收集数据和grafana来展示图表。本文就trino的数据采集和展示做记录&#xff0c;对于prometheus和grafana的安装不做介绍。 首先要采集trino的数据…

【NIPS2024】Unique3D:从单张图像高效生成高质量的3D网格

背景&#xff08;现有方法的不足&#xff09;&#xff1a; 基于Score Distillation Sampling &#xff08;SDS&#xff09;的方法&#xff1a;从大型二维扩散模型中提取3D知识&#xff0c;生成多样化的3D结果&#xff0c;但存在每个案例长时间优化问题/不一致问题。 目前通过微…

雨晨 26100.2454 Windows 11 24H2 专业工作站 极简纯净版

文件: 雨晨 26100.2454 Windows 11 24H2 专业工作站极简 install.esd 大小: 1947043502 字节 修改时间: 2024年12月6日, 星期五, 16:38:37 MD5: 339B7FDCA0130D432A0E98957738A9DD SHA1: 2978AE0CEAF02E52EC4135200D4BDBC861E07BE8 CRC32: 8C329C89 简述&#xff1a; 由YCDIS…

IDE如何安装插件实现Go to Definition

项目背景 框架&#xff1a;Cucumber Cypress 语言&#xff1a;Javascript IDE&#xff1a;vscode 需求 项目根目录cypress-automation的cypress/integration是测试用例的存放路径&#xff0c;按照不同模块不同功能创建了很多子目录&#xff0c;cucumber测试用例.feature文…

pyqtgraph绘制实时更新数据的图

PyQtGraph是一个基于PyQt和NumPy的Python库&#xff0c;它专为实时数据可视化而设计。以绘制0~2π范围的ysin(x)为例&#xff0c;基本用法的代码如下&#xff1a; # codingutf-8import pyqtgraph as pg from pyqtgraph.Qt import QtGui, QtCore import numpy as np# pyqtgraph…

容器运行应用及Docker命令

文章目录 一、使用容器运行Nginx应用1_使用docker run命令运行Nginx应用1 观察下载容器镜像过程2 观察容器运行情况 2_访问容器中运行的Nginx服务1 确认容器IP地址2 容器网络说明3 使用curl命令访问 二、Docker命令1_Docker命令获取帮助方法2_Docker官网提供的命令说明3_docker…

小身躯大能量-供热系统通过EtherCAT转Profinet网关进行升级

在现代工业自动化领域&#xff0c;通信技术的进步对于提高系统效率、稳定性和可靠性起着至关重要的作用。EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;作为一种实时以太网解决方案&#xff0c;因其高性能及成本效益高等特点&#xff0c;在众多…

网络编程(UDP\TCP回显服务器)

目录 套接字socket TCP和UDP特点比较 特点 比较 UDP回显服务器/客户端的编写 UDP的socket api 回显服务器 客户端 TCP回显服务器/客户端的编写 TCP的socket api 回显服务器 客户端 优化服务器 1.关闭服务器创建的socket对象 2.引入线程池&#xff0c;为多个客户…

系统监控——分布式链路追踪系统

摘要 本文深入探讨了分布式链路追踪系统的必要性与实施细节。随着软件架构的复杂化&#xff0c;传统的日志分析方法已不足以应对问题定位的需求。文章首先解释了链路追踪的基本概念&#xff0c;如Trace和Span&#xff0c;并讨论了其基本原理。接着&#xff0c;文章介绍了SkyWa…

burp常用机漏洞测试理论

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

docker学习笔记(四)--DockerFile

文章目录 一、什么是Dockerfile二、docker build命令三、dockerfile指令3.1 FROM3.2 ENV3.3 WORKDIR3.4 RUN3.5 CMD3.6 ENTRYPOINT3.7 EXPOSE3.8 ARG3.9 ADD3.10 COPY3.11 VOLUME 四、dockerfile示例 一、什么是Dockerfile Dockerfile 是用于构建 Docker 镜像的脚本文件&#…

创造未来:The Sandbox 创作者训练营如何赋能全球创造者

创作者训练营让创造者有能力打造下一代数字体验。通过促进合作和提供尖端工具&#xff0c;The Sandbox 计划确保今天的元宇宙是由一个个创造者共同打造。 2024 年 5 月&#xff0c;The Sandbox 推出了「创作者训练营」系列&#xff0c;旨在重新定义数字创作。「创作者训练营」系…

基于Pyhton的人脸识别(Python 3.12+face_recognition库)

使用Python进行人脸编码和比较 简介 在这个教程中&#xff0c;我们将学习如何使用Python和face_recognition库来加载图像、提取人脸编码&#xff0c;并比较两个人脸是否相似。face_recognition库是一个强大的工具&#xff0c;它基于dlib的深度学习模型&#xff0c;可以轻松实…

抽象工厂模式的理解和实践

在软件开发中&#xff0c;设计模式是解决常见问题的最佳实践。抽象工厂模式是一种创建型设计模式&#xff0c;提供了一种创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们的具体类。本文将详细解释抽象工厂模式的概念、结构、优点、缺点&#xff0c;并通过Java代…

Hadoop生态圈框架部署 伪集群版(五)- HBase伪分布式部署

文章目录 前言一、Hbase伪分布式部署&#xff08;手动部署&#xff09;1. 下载Hbase2. 上传安装包3. 解压HBase安装包4. 配置HBase配置文件4.1 修改hbase-env.sh配置文件4.2 修改hbase-site.xml配置文件4.3 修改regionservers配置文件4.4 删除hbase中slf4j-reload4j-1.7.33.jar…

【css】基础(二)

本专栏内容为&#xff1a;前端专栏 记录学习前端&#xff0c;分为若干个子专栏&#xff0c;html js css vue等 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;css专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &a…

链式设计模式

链式设计模式——装饰器模式和职责链模式 装饰模式 定义&#xff1a; 指在不改变现有对象结构的情况下&#xff0c;动态地给该对象增加一些职责&#xff08;即增加其额外功能&#xff09;的模式。 结构 装饰&#xff08;Decorator&#xff09;模式中的角色&#xff1a; 抽…

电子电气架构 --- E/E(电子电气架构)的重新定义

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…