shell脚本2---清风

devtools/2024/11/22 21:27:32/

声明:

本文的学习内容来源于B站up主“泷羽sec”视频“蓝队基础之网络七层杀伤链”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。

一、常见的变量

  1. 临时变量与永久变量

    临时变量: 仅在当前会话(shell 会话)或脚本中有效。 会话结束后,变量失效。 示例:

    name="xiaoyu" echo $name # 输出xiaoyu
    

    永久变量: 写入到配置文件(如 .bashrc 或 .bash_profile),在新的会话中仍然有效。 示例:

        echo 'export my_na="pppp"' >> ~/.bashrc source ~/.bashrc echo $my_na # 输出 pppp

  1. 环境变量1

    环境变量的用途: 系统通过环境变量存储全局信息(如用户目录、系统路径等)。 示例:

        echo $HOME # 显示当前用户的家目录,例如 /root echo $PATH # 显示可执行程序的搜索路径

    PATH:这是一个非常重要的环境变量,它定义了系统在哪些目录下去寻找可执行程序。当你在命令行输入个命令(如ls、cat等)时,系统会根据PATH环境变量所指定的目录顺序去查找对应的可执行文件,找到后就执行它

验证命令路径:

使用 which 命令查看可执行文件的完整路径:
​
which ls # 输出:/usr/bin/ls
​
系统执行命令时,会根据 $PATH 的值按顺序在每个目录中查找匹配的可执行文件。
  1. 将临时变量变为永久变量

  2. 方法(一):移动脚本到 $PATH 指定的目录

  3. 将脚本文件移动到 $PATH 中的某个目录(如 /usr/bin):

    mv 1.sh /usr/bin/

  4. 之后可以直接通过脚本名运行,而不需要指定路径(注意这里需要对文件的权限进行修改,文件需要有可执行条件才能够运行):

    1.sh

方法(二):修改 $PATH 添加自定义目录

临时添加目录到 $PATH:
​export PATH=/root:$PATH echo $PATH # 查看是否成功添加 /root 到环境变量​解释:
​
export:用于设置环境变量,使其对当前 shell 和子进程生效。
$PATH:定义系统查找命令的目录顺序。
/root:$PATH:将 /root 目录添加到 $PATH 的前面。
当用户运行命令时,系统会先在 /root 中查找,然后在原 $PATH 指定的其他目录中查找。
  1. 永久添加变量到 $PATH

    步骤: 编辑 ~/.bashrc 文件:

        vi ~/.bashrc# 添加以下内容export PATH=/root:$PATH
    ​
    使配置文件生效:
    ​
    source ~/.bashrc

    验证: 新开一个终端窗口,运行 1.sh 验证脚本是否可以直接运行。

二、查看命令脚本路径

查看命令脚本路径,当which ls不能查看时,使用which --a ls。其他命令脚本路径同理

which --a ls

which net

三、字符串操作

  1. 获取字符串长度

    使用 ${#变量名} 获取字符串长度:

    str="hello world" 
    echo ${str}  #输出hello world
    echo ${#str} # 输出 11
    
  2. 字符串截取

    使用 ${变量名:起始位置:长度} 截取子字符串:

    str="hello world" 
    echo ${str:0:4} # 输出 hell
    echo ${str:6:5} # 输出 world

字符串截取语法

格式:${变量名:起始位置:长度}变量名:字符串的变量名。起始位置:从字符串的哪个位置开始截取,从 0 开始计数。长度:从起始位置开始截取的字符数。

分析

echo ${str:0:5}str="hello world"。起始位置是 0,从字符串的第一个字符 h 开始。截取长度是 4,包括 h、e、l、l。输出结果:hell。
​
echo ${str:6:5}起始位置是 6,从字符串的第 7 个字符开始(索引从 0 开始)。第 6 位对应的是 w(字符串索引:h=0, e=1, l=2, l=3, o=4, 空格=5, w=6)。截取长度是 5,包括 w、o、r、l、d。输出结果:world。
echo ${str:0:5} 截取的是从索引 0 开始,长度为 5 的字符 → hello。
echo ${str:6:5} 截取的是从索引 6 开始,长度为 5 的字符 → world。

http://www.ppmy.cn/devtools/136127.html

相关文章

大模型(LLMs)推理面

1. 为什么大模型推理时显存涨的那么多还一直占着? 1. 首先,序列太长了,有很多Q/K/V; 2. 其次,因为是逐个预测next token,每次要缓存K/V加速解码。 2. 大模型在gpu和cpu上推理速度如何? 7B量级下: • cpu推理速度约10token/s; • 单卡A6000和8核AMD的推理速度通常为 10…

机器学习基础05_随机森林线性回归

一、随机森林 机器学习中有一种大类叫集成学习(Ensemble Learning),集成学习的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。集成算法大致可以分为:Bagging,Boosting 和 Stacking…

【Canvas与图标】蓝色数据库图标

【成图】 120*120的png图标&#xff1a; 各种大小图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>数据库图标 …

在ubuntu中查看csv

在 Ubuntu 中查看 CSV 文件的内容有多种方法。以下是一些常用的方法&#xff1a; 使用命令行工具 cat 命令 如果文件不大&#xff0c;可以使用 cat 命令快速查看文件内容&#xff1a; cat 10_11_query.csvless 命令 对于较大的文件&#xff0c;less 是一个更好的选择&#xf…

嵌入式Linux驱动开发日记

目录 让我们从环境配置开始 目标平台 从Ubuntu开始 从交叉编译器继续 arm-linux-gnueabihf-gcc vscode 没学过ARM汇编 正文开始——速度体验一把 写一个链接脚本 写一个简单的Makefile脚本 使用正点原子的imxdownload下载到自己的SD卡上 更进一步的笔记和说明 从IM…

【网站推荐】the top trending open-source startups, every quarter

每季度最热门的开源初创公司 我们根据 GitHub 存储库自 2020 年以来的明星增长情况发布热门开源项目&#xff0c;并将其称为 Runa 开源初创公司 (ROSS) 指数。 una Capital actively invests in open-source startups (like Nginx and MariaDB) and considers an active deve…

红日靶场-1详细解析(适合小白版)

红日靶场涉及内网知识&#xff0c;和前期靶场不太一样&#xff0c;前期靶场大部分都是单个靶机获得root权限&#xff0c;而这一次更综合&#xff0c;后期也会继续学习内网知识&#xff0c;继续打红日靶场&#xff0c;提高自己的综合技能。 环境搭建 首先本题的网络拓扑结构如…

VMware Workstation 17.6.1

概述 目前 VMware Workstation Pro 发布了最新版 v17.6.1&#xff1a; 本月11号官宣&#xff1a;针对所有人免费提供&#xff0c;包括商业、教育和个人用户。 使用说明 软件安装 获取安装包后&#xff0c;双击默认安装即可&#xff1a; 一路单击下一步按钮&#xff1a; 等待…