当前位置: 首页 > news >正文

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

声明:

        学习视频来自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 文件。

相关文章:

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

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

Milvus×OPPO:如何构建更懂你的大模型助手

01. 背景 AI业务快速增长下传统关系型数据库无法满足需求。 2024年恰逢OPPO品牌20周年&#xff0c;OPPO也宣布正式进入AI手机的时代。超千万用户开始通过例如通话摘要、新小布助手、小布照相馆等搭载在OPPO手机上的应用体验AI能力。 与传统的应用不同的是&#xff0c;在AI驱动的…...

单片机几大时钟源

在单片机中&#xff0c;MSI、HSI和HSE通常指的是用于内部晶振配置的不同功能模块&#xff1a; MSI (Master Oscillator System Interface)&#xff1a;这是最低级的一种时钟源管理单元&#xff0c;它控制着最基本的系统时钟&#xff08;SYSCLK&#xff09;&#xff0c;一般由外…...

reverse学习总结(12)

一.[FlareOn4]IgniteMe1 https://files.buuoj.cn/files/02b39b8efca02367af23aa279c81cbec/attachment.zip 根据汇编语言分析 查看需要返回为1的函数 int sub_401050() {int v1; // [esp0h] [ebp-Ch]int i; // [esp4h] [ebp-8h]unsigned int j; // [esp4h] [ebp-8h]char v4; …...

基于“微店 Park”模式下 2+1 链动模式商城小程序的创新发展与应用研究

摘要&#xff1a;本文以“微店 Park”从“开店工具”向“众创平台”的转型为背景&#xff0c;深入探讨 21 链动模式商城小程序在该平台情境下的应用潜力与创新发展路径。通过剖析“微店 Park”的运营模式&#xff0c;包括灵活承租、低成本入驻、多元流量引流等特点&#xff0c;…...

C++11:【列表初始化】【右值引用和移动语义】

目录 一.列表初始化 1.1 C98传统的{} 1.2C11中的{} 1.3C中的std::initializer_list 二.右值引用和移动语义 2.1左值和右值 2.2左值引用和右值引用 2.3引用延长生命周期 2.4左值和右值的参数匹配 2.5右值引用和移动语义的使用场景 2.5.1左值引用主要使用场景 2.5.2移…...

Zookeeper的通知机制是什么?

大家好&#xff0c;我是锋哥。今天分享关于【Zookeeper的通知机制是什么?】面试题。希望对大家有帮助&#xff1b; Zookeeper的通知机制是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper的通知机制主要通过Watcher实现&#xff0c;它是Zookeeper客…...

嵌入式蓝桥杯学习1 电量LED

cubemx配置 1.新建一个STM32G431RBT6文件 2.在System-Core中点击SYS&#xff0c;找到Debug&#xff08;设置为Serial Wire&#xff09; 3.在System-Core中点击RCC&#xff0c;找到High Speed Clock(设置为Crystal/Ceramic Resonator) 4.打开Clock Configuration &#xff0…...

bsmap输出结果解释

关于, , -, --的解释 对应着参考基因组的正链&#xff08;有义链&#xff0c;非模板链&#xff0c;即hg38的序列&#xff0c;watson链&#xff09;&#xff1b; -代表正链的互补链&#xff08;正常情况下正链的互补链是负链&#xff0c;但在重硫酸盐处理后正链和负链并不互补…...

【java-数据结构篇】揭秘 Java LinkedList:链表数据结构的 Java 实现原理与核心概念

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 目录 1. Java LinkedList 基础 1.1 LinkedList 简介 1.2 LinkedList 的实现原理 1.3 LinkedList 与 ArrayList 的区别 2. 链表基础 2.1 链…...

macOS运行amd64的镜像

在macOS上运行amd64&#xff08;x86_64&#xff09;架构的镜像&#xff0c;通常通过虚拟化或仿真工具来实现。例如&#xff0c;如果你使用的是基于Apple Silicon&#xff08;M1或M2等&#xff09;芯片的Mac&#xff0c;那么你的处理器是ARM架构的&#xff0c;而amd64是x86架构&…...

轻量的基于图结构的RAG方案LightRAG

LightRAG出自2024年10月的论文《LIGHTRAG: SIMPLE AND FASTRETRIEVAL-AUGMENTED GENERATION》(github)&#xff0c;也是使用图结构来索引和搜索相关文本。 LightRAG作者认为已有的RAG系统有如下两个限制&#xff0c;导致难以回答类似"How does the rise of electric vehi…...

计算机的错误计算(一百七十三)

摘要 给定多项式 在 MATLAB 中计算 的值。输出是错误结果。 例1. 已知 计算 直接贴图吧&#xff1a; 这样&#xff0c;MATLAB 输出了错误结果。因为准确值为 0.2401e-16 . 注&#xff1a;可参看计算机的错误计算&#xff08;六&#xff09;。...

【力扣】—— 二叉树的前序遍历、字典序最小回文串

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构 &#x1f4da;本系列文章为个人学…...

linux替换更高版本gcc

实际使用时对与gcc版本有很多要求, 需要在centos上安装更高版本的gcc 1、安装centos-release-scl sudo yum install centos-release-scl2、安装devtoolset&#xff0c;注意&#xff0c;如果想安装7.版本的&#xff0c;就改成devtoolset-7-gcc&#xff0c;以此类推 sudo yum …...

在Java中使用Apache POI导入导出Excel(六)

本文将继续介绍POI的使用&#xff0c;上接在Java中使用Apache POI导入导出Excel&#xff08;五&#xff09; 使用Apache POI组件操作Excel&#xff08;六&#xff09; 43、隐藏和取消隐藏行 使用 Excel&#xff0c;可以通过选择该行&#xff08;或行&#xff09;来隐藏工作表…...

`uni.setClipboardData` 是 uni-app 提供的一个 API 设置系统剪贴板的内容

uni.setClipboardData是uni-app提供的一个API&#xff0c;用于设置系统剪贴板的内容。 使用说明&#xff1a; 使用此API可以将指定的文本内容复制到系统剪贴板&#xff0c;使用户能够在其他应用或页面中粘贴这些内容。 uni.setClipboardData({data: , // 需要复制的内容 suc…...

【大模型微调】pdf转markdown

目前市面上大部分都是pdf文档,要想转换成能训练的文本,调研了各种工具。 觉得MinerU确实不错。 参考此链接进行操作 MinerU/docs/README_Ubuntu_CUDA_Acceleration_en_US.md at master opendatalab/MinerU GitHub 需要注意的几个点: 1. 使用root账户安装的,配置文件在…...

Vue 3 结合 TypeScript基本使用

Vue 3 结合 TypeScript 使用可以提供更加强大的类型检查和开发体验。以下是一些基本的步骤来开始使用 Vue 3 和 TypeScript&#xff1a; 1. 创建项目 你可以使用 Vue CLI 来快速创建一个支持 TypeScript 的 Vue 项目。首先确保你已经安装了 Node.js 和 npm。然后全局安装或更…...

Trotter steps的复杂性分析

总结 • 我们开发了使用汉密尔顿系数结构执行 Trotter 步骤的递归方法&#xff0c;超越了顺序方法。 • #Gate/Step 在汉密尔顿项数上是次线性的&#xff0c;而 #Step 仍然保持交换子缩放。 • 新结果给出了实空间中第二量化电子结构汉密尔顿的最快量子模拟。对第一量化量子模…...

太原烘焙培训排名

在太原选择烘焙培训机构时&#xff0c;许多朋友会关注不同机构的教学质量与特色。以下整理了一些选择时可以考虑的方面&#xff0c;供您参考。教学方式与内容部分机构采用以实操为主的教学模式&#xff0c;例如山西旭梦圆食品有限公司的课程安排中&#xff0c;实践操作占较大比…...

uView Input前后槽实战:5分钟搞定搜索框+验证码组合

uView Input前后槽实战&#xff1a;5分钟搞定搜索框验证码组合 在移动端开发中&#xff0c;输入框(Input)是最基础也是最常用的UI组件之一。无论是用户登录、搜索功能还是表单填写&#xff0c;都离不开它。但你是否遇到过这样的困扰&#xff1a;想要在输入框左侧添加一个搜索图…...

告别“AI失忆“!掌握Harness Engineering,让AI秒变高效生产力工具

文章指出AI难以胜任长周期复杂任务并非因"不够聪明"&#xff0c;而是缺乏工程化工作方式。核心解法是引入Harness运行框架&#xff0c;通过外部记忆替代上下文依赖、强制任务拆解、建立固定执行循环及测试优先机制&#xff0c;将AI从单打独斗的"代码生成器"…...

从七鳃鳗到潜水器:手把手教你用Python生态学模型搞定2024美赛A、B题

从七鳃鳗到潜水器&#xff1a;Python生态学建模实战指南 数学建模竞赛中&#xff0c;生态学问题往往让参赛者望而生畏——复杂的生物系统、多变的环境参数、非线性相互作用&#xff0c;这些要素叠加起来容易让人陷入理论推导的泥潭。但换个角度看&#xff0c;这正是Python科学计…...

Tecplot三维可视化保姆教程:从MATLAB数据到专业云图只需5步

Tecplot三维可视化实战指南&#xff1a;从MATLAB数据到科研级云图全解析 在工程仿真与科学计算领域&#xff0c;数据可视化是研究成果呈现的关键环节。当二维图表无法满足复杂空间数据的展示需求时&#xff0c;Tecplot作为专业的三维可视化工具便展现出独特优势。本文将手把手带…...

DeepSeek-R1-Distill-Qwen-7B实测:推理能力超强的7B小模型

DeepSeek-R1-Distill-Qwen-7B实测&#xff1a;推理能力超强的7B小模型 1. 模型概述 DeepSeek-R1-Distill-Qwen-7B是DeepSeek团队推出的轻量级推理模型&#xff0c;基于Qwen架构蒸馏而来。这个7B参数规模的模型在保持较小体积的同时&#xff0c;展现了令人印象深刻的推理能力。…...

深入解析dlopen:动态库加载的机制与实践

1. 动态库加载的两种方式 在C/C开发中&#xff0c;动态库&#xff08;Dynamic Library&#xff09;的使用是提升代码复用性和灵活性的重要手段。动态库加载主要分为隐式链接和显式链接两种方式&#xff0c;它们各有特点&#xff0c;适用于不同场景。 隐式链接是最常见的方式&am…...

Windows系统下Neo4j社区版手动安装与配置指南(非Docker方案)

1. 环境准备&#xff1a;JDK安装与验证 在Windows系统下手动安装Neo4j社区版&#xff0c;第一步就是搞定Java环境。我见过太多新手卡在这一步&#xff0c;其实只要注意几个关键点就能轻松过关。Neo4j作为基于Java开发的图数据库&#xff0c;必须依赖JDK才能运行&#xff0c;但不…...

ESP32/ESP8266轻量级HA MQTT自动发现C++库

1. 项目概述 HA MQTT Discovery 是一个专为嵌入式平台&#xff08;特别是 ESP32/ESP8266&#xff09;设计的轻量级 C 库&#xff0c;用于实现与 Home Assistant 的原生 MQTT 自动发现&#xff08;Auto-Discovery&#xff09;协议兼容的设备与实体注册。其核心目标并非替代完整…...

开源吐槽大会:技术人的快乐与烦恼

开源项目吐槽大会&#xff1a;技术文章大纲技术吐槽的核心议题开源项目的常见痛点&#xff1a;文档不全、代码混乱、维护停滞 社区互动的典型问题&#xff1a;响应慢、沟通低效、贡献者流失 技术债务与设计缺陷&#xff1a;历史包袱、架构不合理、兼容性差吐槽背后的技术分析代…...