首页 > 系统相关 >shell脚本(1)

shell脚本(1)

时间:2024-11-14 11:17:37浏览次数:3  
标签:脚本 shell 变量 echo VAR MY 环境变量

免责声明

学习视频来自B 站up主泷羽sec,如涉及侵权马上删除文章。

笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。

Shell脚本

建立一个sh脚本

touch 1.sh (新建脚本文件)
vi 1.sh(编写文件内容)
按 i 可以写入内容,按esc :wq退出并保存

解释

1、创建脚本文件

2、脚本文件中第一行为指定脚本编译器:# !/bin/bash

最终调用的都是dash

执行shell脚本命令: 1、./1.sh

难道我们必须要修改权限才能执行sh脚本吗?让我们看一下接下来的两种方式。

2、bash+文件名相对路径\绝对路径

3、.sh+文件名相对路径\绝对路径

当然我们的source也可以执行 4、source+文件名相对路径\绝对路径

shell脚本变量

在Kali Linux系统中,系统变量(也称为环境变量)是在整个用户会话或整个操作系统中可用的变量。这些变量可以存储诸如路径、配置信息、用户设置等数据,并且可以在系统中的多个程序和脚本之间共享。以下是 一些常见的Kali Linux系统变量及其作用域:

全局系统变量(作用于整个操作系统)

  1. PATH

    • 作用:包含可执行文件的目录列表,当用户在终端输入命令时,系统会在这些目录中查找相应的可执行文件。

    • 示例/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

  2. HOME

    • 作用:指向当前用户主目录的路径。

    • 示例/home/user

  3. USER

    • 作用:当前登录用户的用户名。

    • 示例kali

  4. SHELL

    • 作用:当前用户登录的shell类型。

    • 示例/bin/bash

  5. LANG

    • 作用:定义系统的语言和字符集。

    • 示例en_US.UTF-8

  6. PWD

    • 作用:当前工作目录的绝对路径。

    • 示例/home/user/projects

用户级别的环境变量

用户可以在自己的主目录下的.bashrc.profile文件中设置特定的环境变量,这些变量仅对该用户会话有效。

设置用户级别的环境变量
  1. 打开终端。

  2. 编辑 .bashrc 文件:
    nano ~/.bashrc
    
  3. 添加新的环境变量:
    export MY_VARIABLE="my_value"
    
  4. 使更改生效:
    source ~/.bashrc
    

使用 envprintenv 命令查看环境变量

  • **env**:显示当前所有的环境变量。

  • **printenv**:可以查看特定环境变量的值,例如:
    printenv PATH
    

注意事项

  • 修改系统级别的环境变量通常需要管理员权限。

  • 对于临时设置环境变量,可以在当前终端会话中使用 export 命令,但该设置不会在新的终端窗口或会话中保留。

在Kali Linux系统中,设置持续化变量(永久环境变量)意味着要配置环境变量,使其在系统重启后仍然有效。这通常涉及到修改用户级别的配置文件(如.bashrc.profile)或系统级别的配置文件(如/etc/profile)。以下是设置Kali Linux中持续化变量的步骤:

设置用户级别的永久环境变量

  1. 打开终端。

  2. 编辑用户级别的配置文件。对于Bash shell用户,通常是.bashrc文件;对于Zsh shell用户,则是.zshrc文件。

    nano ~/.bashrc
    
  3. 添加新的环境变量,并使用export命令。例如:

    export MY_VARIABLE="my_value"
    
  4. 保存文件并退出编辑器。

  5. 使更改生效,执行以下命令:

    source ~/.bashrc
    

设置系统级别的永久环境变量

对于系统级别的环境变量,需要编辑/etc/profile文件。请使用root权限执行以下操作:

  1. 打开终端。

  2. 使用文本编辑器打开/etc/profile文件。例如,使用nano编辑器:

    sudo nano /etc/profile
    
  3. 在文件末尾添加新的环境变量,并使用export命令。例如:

    export SYSTEM_VARIABLE="system_value"
    
  4. 保存文件并退出编辑器。

  5. 使更改生效,执行以下命令:

    source /etc/profile
    

临时环境变量

通过在变量前加上export,将变量变为临时环境变量。

在Kali Linux系统中,临时环境变量是指仅在当前终端会话中有效的变量。一旦关闭终端或会话结束,这些变量就会丢失。设置临时环境变量非常简单,只需在终端中使用export命令即可。

设置临时环境变量

  1. 打开终端。

  2. 使用export命令设置临时环境变量。例如:

    export TEMP_VARIABLE="temp_value"
    

查看临时环境变量

  • 使用env命令查看当前所有的环境变量,包括临时设置的变量:

    env | grep TEMP_VARIABLE
    
  • 或者使用printenv命令查看特定临时环境变量的值:

    printenv TEMP_VARIABLE
    

注意事项

  • 临时环境变量仅在当前终端会话中有效,关闭终端或会话结束后,这些变量将不再存在。

  • 如果需要在多个终端会话中共享变量,建议设置持续化环境变量(永久环境变量)。

自定义变量(普通变量作用域:当前解释器)

在Kali Linux系统中,自定义变量(普通变量)通常指的是在脚本或命令行中定义的局部变量,其作用域仅限于当前解释器会话或脚本执行期间。这些变量不会影响到其他终端会话或全局环境变量。

设置自定义变量

  1. 在脚本中设置自定义变量

    打开一个文本编辑器,创建一个新的脚本文件,例如my_script.sh,并在其中定义变量:

    #!/bin/bash
    MY_CUSTOM_VAR="Hello, Kali!"
    echo $MY_CUSTOM_VAR
    

    保存文件并赋予执行权限:

    chmod +x my_script.sh
    

    运行脚本:

    ./my_script.sh
    

    输出将是:

    Hello, Kali!
    
  2. 在命令行中设置自定义变量

    在终端中直接定义变量并使用:

    MY_CUSTOM_VAR="Hello, Kali!"
    echo $MY_CUSTOM_VAR
    

    输出将是:

    Hello, Kali!
    

注意事项

  • 自定义变量的作用域仅限于当前解释器会话或脚本执行期间。

  • 变量名通常以字母或下划线开头,后面可以跟字母、数字或下划线。

  • 变量值可以是字符串、数字或其他类型的数据。

通过以上步骤,您可以在Kali Linux系统中轻松地创建和使用自定义变量,这些变量仅在当前解释器会话中有效。

eg:
定义一个name变量:name=”leyinsec”
利用echo打印输出echo $name

注:空格需要用引号,引起来(空格代表结束)

变量作用域

在Kali Linux系统中,变量的作用域决定了变量在何处以及如何被访问。以下是几种常见的变量作用域:

1. 局部变量(Local Variables)

  • 作用域:仅在定义它们的函数或代码块内有效。

  • 示例
    function my_function() {
        local MY_VAR="This is local"
        echo $MY_VAR
    }
    my_function
    echo $MY_VAR  # 这将不会输出任何内容,因为MY_VAR在函数外部不可见
    

2. 全局变量(Global Variables)

  • 作用域:在整个脚本或程序中有效,包括所有函数和代码块。

  • 示例
    MY_VAR="This is global"
    function my_function() {
        echo $MY_VAR
    }
    my_function
    echo $MY_VAR  # 这将输出 "This is global"
    

3. 环境变量(Environment Variables)

  • 作用域:在整个用户会话或整个操作系统中有效。

  • 设置
    export MY_ENV_VAR="This is an environment variable"
    
  • 查看
    printenv MY_ENV_VAR
    

4. 用户级别的环境变量

  • 作用域:仅对当前用户有效。

  • 设置
    echo "export MY_USER_VAR='This is a user-specific environment variable'" >> ~/.bashrc
    source ~/.bashrc
    

5. 系统级别的环境变量

  • 作用域:对所有用户有效。

  • 设置
    sudo sh -c 'echo "export MY_SYSTEM_VAR='This is a system-wide environment variable'" >> /etc/profile'
    source /etc/profile
    

6. 临时变量(Temporary Variables)

  • 作用域:仅在当前终端会话中有效。

  • 设置
    export TEMP_VAR="This is temporary"
    
  • 关闭终端后,TEMP_VAR将不再存在

总结

  • 局部变量:仅在定义它们的函数或代码块内有效。

  • 全局变量:在整个脚本或程序中有效。

  • 环境变量:在整个用户会话或整个操作系统中有效。

  • 用户级别的环境变量:仅对当前用户有效。

  • 系统级别的环境变量:对所有用户有效。

  • 临时变量:仅在当前终端会话中有效。

特殊变量

在Kali Linux系统中,特殊变量主要指的是那些具有特殊含义和用途的变量。这些变量由Bash shell提供,用于在脚本和命令行中存储和传递信息。以下是一些常见的特殊变量及其作用:

特殊变量列表

  • **$0**:当前脚本的文件名。

  • **$n**:传递给脚本或函数的参数。n是一个数字,表示第几个参数。

  • **$#**:传递给脚本或函数的参数个数。

  • **$@**:传递给脚本或函数的所有参数。

  • **$***:传递给脚本或函数的所有参数。被双引号包含时,与$@稍有不同。

  • **$?**:上个命令的退出状态,或函数的返回值。

  • **$$**:当前Shell进程ID。

特殊变量的使用示例

假设我们有一个脚本test.sh,内容如下:

#!/bin/bash
echo "File Name: $0"
echo "First Parameter: $1"
echo "Second Parameter: $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters: $#"

运行该脚本并传入两个参数:

./test.sh Zara Ali

输出将是:

File Name: ./test.sh
First Parameter: Zara
Second Parameter: Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters: 2

标签:脚本,shell,变量,echo,VAR,MY,环境变量
From: https://blog.csdn.net/m0_74907475/article/details/143762844

相关文章

  • 刷题答题脚本—>接入AI (python+css)
    刷题答题脚本———接入AIgithub地址:https://github.com/LY-zhang-yi-hao/do-homework-AI-python创作不易,github点个star,有时间分享更多实用代码,谢谢!本项目使得刷题的脚本的编写下限变低,利用阿里云模型回答问题,不需要进行题库的编写或网页搜索。将问题发送给AI,拿到答案后,进行......
  • shell编程
    学习视频来自B站up主泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec......
  • 【知行】知行方块兽生态脚本潮玩宇宙
    知行生态脚本是知行团队开发的围绕潮玩生态的产品,在里面会汇集着大部分的潮玩游戏的脚本,方便大家更好的操作。知行团队立志于开发出最大、性价比最高的的潮玩游戏和脚本社区。如图:包含方块兽六种游戏如何使用模拟器登录脚本模拟器如何配置已雷电模拟器为例先点击右......
  • shell正则表达式、sed基本用法及sed应用案例
    一、正则表达式●可以使用若干符号配合某工具对字符串进行增删改查操作1.1基本正则列表正则符号描述^匹配行首$匹配行尾[]集合,匹配集合中任意单个字符[^]对集合取反.匹配任意字符*匹配前一个字符任意次数【*不允许单独使用】\{n,m}匹配......
  • Ubuntu 设置开机自启动脚本
    Linux系统中设置自定义脚本开机自启动有如下几种方式方案一、增加crontask1.打开任务文件cron#执行如下命令打开当前用户的cron,如果打开root用户的cron,执行sudocrontab-ecrontab-e2.向其中加入如下需要开机自启的脚本#@reboot后为用户自定义的启动脚本的完整......
  • shell脚本30个案例(一)
    通过一个多月的shell学习,总共写出30个案例,分批次进行发布,这次总共发布了5个案例,希望能够对大家的学习和使用有所帮助,更多案例会在下一次进行发布。案例一、备份指定目录下的文件到另一个目录1.问题在服务器环境中,需要定期备份特定目录(如/var/www/html)中的文件到备份目录(如/b......
  • 2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell
    实验环境准备(同一个网段下,我是桥接的虚拟机)一、bash反弹shell二、python反弹shell三、nc反弹shell四、villain反弹shell实验环境准备(同一个网段下,我是桥接的虚拟机)      一台kali的linux(攻击者)        一台centos7/debian[另一个linux](受害者)一、b......
  • 使用 PowerShell 创建多个 .reg 文件进行分段(切片)并且能够在执行时按顺序合并并执行,我
    使用PowerShell创建多个.reg文件进行分段(切片)并且能够在执行时按顺序合并并执行,我们可以按照以下步骤进行:目标:将一个大的 .reg 文件分割成多个小文件。每个小文件(分段)都将是一个有效的 .reg 文件,可以独立执行。使用PowerShell自动生成这些分段 .reg 文件,并执行它......
  • [免费]SpringBoot+Vue3校园宿舍管理系统(优质版)【论文+源码+SQL脚本】
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue3校园宿舍管理系统(优质版),分享下哈。项目视频演示【免费】SpringBoot+Vue3校园宿舍管理系统(优质版)Java毕业设计_哔哩哔哩_bilibili项目介绍随着信息技术的不断发展,现代化的校园管理需求日益增多,尤其在校园宿......
  • 检查电脑的 .net framework 的版本(复制到powershell里执行)
    打开powershell,$release=Get-ItemPropertyValue-LiteralPath'HKLM:SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v4\Full'-NameReleaseswitch($release){{$_-ge533320}{$version='4.8.1orlater';break}{$_-ge52......