Linux set 命令详解,零基础入门到精通,收藏这一篇就够了

790 篇文章 31 订阅
387 篇文章 12 订阅

Linux set 命令详解

set 命令用于显示和设置 shell 及 Linux 环境中的各种变量、选项。它广泛适用于不同的 shell,例如 Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh),但在 Bash 中更常用。set 提供了强大的控制功能,使用户可以改变 shell 的行为,尤其适合调试、错误处理、环境配置等场景。

基本语法

set [options] [arguments]
  • options:影响 shell 操作方式的选项标志。

  • arguments:设置位置参数(即 $1, $2, 等)的值。

选项详解

常用选项
选项-o 标志描述
-a-o allexport标记所有创建或修改的变量或函数为导出,以便子 shell 使用。
-b-o notify后台作业终止时立即通知用户。
-e-o errexit当命令失败(非零退出状态)时,使 shell 立即退出。
-f-o noglob禁用文件名通配符展开(globbing)。
-h-o hashall在定义函数时定位并保存函数命令。默认启用。
-k-o keyword将所有赋值参数放入命令的环境,而不仅限于命令名之前的参数。
-n-o noexec读取命令但不执行它们,常用于检查脚本语法。
-m-o monitor任务完成时显示通知。默认在交互模式中启用。
-p-o privileged禁用 $ENV 文件处理和 shell 函数导入。当真实用户 ID 和有效用户 ID 不同时,默认启用。关闭时将有效用户 ID 和组 ID 设置为真实用户 ID 和组 ID。
-t-o onecmd读取一条命令后退出。
-u-o nounset将未定义的变量视为错误,防止使用未设置的变量。
-v-o verbose逐行打印 shell 输入内容,便于调试。
-x-o xtrace执行时打印每条命令及其参数,常用于调试。
-B-o braceexpand启用 shell 大括号扩展(如 {1..5})。
-C-o noclobber通过重定向时防止覆盖现有文件。
-E-o errtrace使 shell 函数继承 ERR 捕获(trap)。
-H-o histexpand启用历史替换(如 !!)。在交互模式下默认启用。
-P-o physical防止命令跟随符号链接,强制使用物理目录路径。
-T-o functrace使 shell 函数继承 DEBUG 捕获(trap)。
--将剩余参数赋值给位置参数。如果没有参数,则取消设置位置参数。
-将剩余参数赋值给位置参数,同时关闭 -x-v 选项。
-o emacs使用 emacs 风格的行编辑接口。
-o history启用命令历史记录。
-o ignoreeof读取到文件末尾(EOF)时,shell 不退出。
-o interactive-comments允许在交互模式下使用注释。
-o nolog不在历史文件中记录函数定义。
-o pipefail使管道返回值为第一个失败命令的退出状态,而不是最后一个命令的状态。
-o posix使 Bash 的行为与 POSIX 标准一致。
-o vi使用类似 vi 的行编辑接口。

常见用法与示例

    1. 显示所有 shell 变量
      执行 set 不带任何参数,将输出当前 shell 中的所有变量及其值。
    set
    
    1. 脚本调试
      使用 -x 选项逐行输出脚本执行的每条命令和参数。
    set -x   var=5   while [ $var -gt 0 ]; do       echo $var       var=$((var - 1))   done
    

    输出将详细显示每个步骤的执行情况,有助于排查问题。

    1. 错误处理:命令失败时退出
      使用 -e 选项使 shell 遇到错误命令时退出,避免继续执行后续指令。
    #!/bin/bash   set -e   echo "Trying to read a non-existing file"   cat non_existing_file.txt   echo "This will not print if the file doesn't exist"
    
    1. 自动导出变量
      使用 -a 选项将每个新创建的变量自动标记为导出到子进程环境。
    set -a   var1="Hello"   var2="World"   /bin/bash  # 启动子shell,所有变量都会导出   echo "$var1 $var2"
    
    1. 禁止文件重定向覆盖现有文件
      使用 -C 选项防止重定向 (>) 意外覆盖已存在的文件,确保文件内容不会丢失。
    echo "Initial data" > file.txt   set -C   echo "New data" > file.txt  # 这将失败,因为文件已经存在
    
    1. 检测未定义变量
      -u 选项可确保使用未定义变量时引发错误,避免脚本因未设置变量而产生的逻辑错误。
    #!/bin/bash   set -u   echo $undefined_var  # 这会导致脚本立即退出
    
    1. 设置位置参数
      使用 set 命令可以设置位置参数 $1, $2 等。
    set one two three   echo $1  # 输出 one   echo $2  # 输出 two
    
    1. 字符串分割为多个变量
      set -- 可以根据空格将字符串拆分为多个位置参数。
    mystring="hello world example"   set -- $mystring   echo $1  # 输出 hello   echo $2  # 输出 world
    
    1. 切换 shell 特性
      使用 set -o 可以切换不同的 shell 特性,例如 allexport 自动导出变量,notify 后台任务完成时立即通知。
    set -o allexport -o notify
    

高级应用

  • 防止脚本运行时误操作
    使用 -C 防止覆盖重要文件,结合 -e 在错误时退出,确保关键任务的健壮性。

  • 调试复杂脚本
    结合使用 -x 选项(调试)与 -v 选项(逐行打印输入)可以帮助分析复杂脚本的行为。

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值