// TAG
#shell
24 篇
LinuxShell 位置参数传递:从入门到“怀疑人生“
Shell 位置参数详解与常见陷阱 本文系统介绍了Shell脚本中的位置参数机制,重点解析了特殊变量$*与$@的区别及常见使用误区。主要内容包括: 位置参数基础:$0-$9、$#等特殊变量的含义与用法 $*与$@的核心差异:不加引号时行为相同,加引号时$*合并为一个字符串,$@保持参数独立性 6个典型陷阱案例:单引号下的参数展开、管道中的参数传递、IFS对$*的影响、嵌套引号处理等 实用技巧:shift命令操作参数、printf替代echo处理参数边界等 关键结论:在大多数场景下应使用"$@"来确保参数传递
阅读 →
LinuxShell 命令执行知识体系全景解析
Shell 命令执行全流程解析 本文系统梳理 Shell 命令执行的核心机制,涵盖三大关键环节: 命令解析与查找 解析流程:历史扩展 → 大括号扩展 → 变量扩展 → 命令替换 → 路径扩展 → 引号移除 查找优先级:别名 > 关键字 > 函数 > 内建命令 > hash缓存 > PATH搜索 验证方法:type -a查看命令类型,command/builtin绕过优先级 命令类型与执行 内建命令直接执行(如cd),外部命令需fork+exec 命令替换推荐$(...),支持嵌套和引号保护 进程管理与重定向
阅读 →
安全研究进程管理器大横评:从 PM2 到 Systemd 的选型与实战
进程管理器是服务器运维中确保应用持续稳定运行的核心组件,主要解决进程崩溃、服务器重启时的自动恢复问题。主流工具包括: PM2:Node.js生态标杆,支持集群模式、零停机部署和资源监控,但资源占用较高。 systemd:Linux原生方案,深度集成系统功能,提供资源隔离和安全加固,适合生产环境。 Supervisor:跨语言通用工具,配置简单,适合多语言混合环境,但功能相对基础。 Forever:Node.js早期工具,极简设计,适合简单场景。
阅读 →
LinuxShell脚本技巧:去除文件中字符串两端空白
本文介绍了在Bash环境中清理文本行首尾空白字符的三种方法:1) 使用awk命令,通过字段拆分和行重构机制高效处理,推荐awk '$1=$1'作为首选方案;2) 使用sed命令,通过正则表达式实现灵活精准的空白控制;3) 采用Bash内置参数扩展,适合无外部工具依赖的环境但效率较低。文章详细分析了各方案的底层原理、代码示例和执行过程,并提供了方案对比和选型建议,其中awk方案因其简洁高效被推荐为通用场景的首选方法。
阅读 →
Linux探索 Shell:选择适合你的命令行利器 bash, zsh, fish, dash, sh...
Shell 是用户与操作系统内核之间的桥梁,负责接收用户输入的命令,解析并传递给系统执行。在 Linux 和 BSD 系统中,Shell 通常以命令行界面的形式呈现,但它远不止于此。Shell 是一个强大的脚本语言环境,可以通过编写脚本自动化复杂任务,处理文件、数据流以及系统资源。许多新用户对 Linux 的第一印象是“必须使用终端,输入复杂命令”,甚至觉得它不够友好。然而,这种看法并不完全准确。现代 Linux 发行版提供了图形化界面(GUI),用户完全可以仅通过鼠标操作。
阅读 →
红队渗透Penelope:现代渗透测试中的强大 Shell Handler
Penelope是一款专为渗透测试设计的开源shell handler工具,旨在解决传统工具(如Netcat)在终端稳定性、文件传输等方面的不足。它以自动化能力为核心,支持PTY自动升级、多会话管理、文件传输、日志记录等功能,并内置权限提升模块。Penelope纯Python编写,安装简便,兼容Linux/macOS,能与Metasploit等工具集成。其模块化设计涵盖权限提升、端口转发等场景,通过run命令调用各类插件,显著提升渗透测试效率。
阅读 →
Linuxawk 从入门到进阶(中)
在现代数据驱动的场景中,文本数据的处理与分析已成为系统管理、数据分析和开发工作中不可或缺的一部分。从服务器日志的实时解析到大规模数据集的清洗与统计,从配置文件调整到自动化报告生成,高效的文本处理能力直接决定了任务的完成效率与成果质量。作为一款内置于操作系统的文本处理利器,awk不仅能轻松应对日志分析、数据过滤和列操作,还能在数值计算、条件筛选和数据聚合等复杂任务中大显身手。如果说基础篇为你打开了awk的大门,那么本篇中篇将带你深入探索其核心功能。数值计算:从浮点运算到逐行统计,展示awk。
阅读 →
红队渗透Bash 花括号扩展 {start..end} 进阶使用指南——字典生成
工具内置性支持类型内存效率复杂模式适用规模是数字、字母、组合低否小中规模seq是数字高否大规模crunch否数字、字母、组合高是超大规模Bash 花括号扩展语法简单却功能强大,掌握其基础与进阶用法,能极大提升脚本效率。无论是生成测试数据、批量操作文件,还是创建爆破字典,它都是不可或缺的利器。结合管道和其他工具,您可以解锁更多可能性!
阅读 →
LinuxLinux 文件夹复制与移动技巧详解:一级解散、隐藏文件与目录结构
本文详细解析了Linux中cp和mv命令在文件夹操作中的关键特性与使用技巧。通过对比表格总结了两种命令在复制/移动内容、处理隐藏文件、目标目录结构和适用场景上的差异,具体包括:cp -r src/* dest/(仅非隐藏文件)、cp -r src/. dest/(包含隐藏文件)和cp -r src dest/(保留目录结构)等6种常见用法。针对隐藏文件被忽略、目录结构保留不当等常见问题,提供了启用dotglob、使用find命令等解决方案。
阅读 →
LinuxShell 编程:生成随机数与字符串的高效技巧
echo解释提供随机字节流。通过tr工具过滤字符,只保留自定义字符集中的字符。此字符集包含了数字、特殊字符以及大小写字母。head -c8截取 8 个字符,生成一个长度为 8 的随机字符串。这种方法适合于生成较为复杂的随机密码,尤其是当需要使用特定字符集时。解释a=(echo {a…z}这一行代码生成一个包含字母a到z的数组。{a..z}是一个 Bash 字符范围扩展,生成从a到z的所有小写字母。a=()将这些字母存储在数组a中。使用$RANDOM。
阅读 →
LinuxLinux find 命令详解:强大的文件查找工具
find命令是一个非常强大的工具,适用于文件查找、批量处理和执行脚本等多种场景。它提供了丰富的选项和灵活的条件表达式,能够帮助用户高效地管理文件系统中的文件。掌握find命令将极大提升你在系统管理和脚本自动化方面的效率。
阅读 →
LinuxBashrc 和 Profile 配置文件详解
和主要用于登录 shell,而和~/.bashrc用于非登录 shell。登录 shell 会依次加载和(如果后者不存在,加载和~/.profile非登录 shell 会加载和~/.bashrc。配置文件加载遵循全局优先,局部(用户)配置覆盖全局配置的原则。通过合理配置这些文件,我们能够控制 shell 的行为、环境以及终端交互的细节,从而优化工作效率和提升用户体验。
阅读 →
LinuxShell 运算符完全指南
本文系统介绍了Bash Shell中的各类运算符,包括算术运算、比较运算、逻辑运算、位运算、字符串运算和文件测试运算符。详细说明了每种运算符的语法、用法、优先级及典型应用场景,通过示例代码演示了不同运算符的使用方法。特别强调了数值比较与字符串比较的区别,以及逻辑运算符在不同环境下的差异。此外,还介绍了复合赋值运算符、自增自减运算符以及短路求值等实用技巧,帮助读者全面掌握Shell脚本中的运算逻辑。
阅读 →
安全研究深入掌握 ls 命令:从基础到进阶
ls 是 Linux 系统中用于列出目录内容的常用命令,支持多种选项以定制输出格式和排序方式。本文详细介绍了 ls 命令的基本语法、常见选项及其功能,如 -a 显示隐藏文件、-l 以长格式显示详细信息、-h 以人类可读格式显示文件大小等。此外,文章还解析了 ls -l 的输出格式,包括文件类型、权限、所有者、文件大小和修改时间等信息,并提供了符号链接、设备文件等特殊文件类型的示例。通过掌握 ls 命令及其选项,用户可以更高效地管理和分析文件与目录。
阅读 →
LinuxShell脚本技巧:逐行读取文件与死循环的常用思路
推荐使用或mapfile,能更精准处理复杂内容。对于简单任务,可以快速实现,但不适合复杂场景。使用while true或语法简单直观,是最常见的方式。for ((;;))和也是常见替代方案。
阅读 →
红队渗透从非交互式 Shell 到全交互式 tty:反弹 Shell 终端升级全攻略
在渗透测试中,初始获取的Shell往往是非交互式的,存在命令补全缺失、无法运行交互工具等限制。本文系统分析了三种Shell类型:非交互式(如Netcat反弹)、半交互式(通过Python或script模拟PTY)和全交互式(完全模拟终端)。重点介绍了从非交互式升级的方法:利用Python的pty.spawn()或script命令创建伪终端,再通过stty设置终端参数、调整环境变量(TERM/SHELL)实现功能强化。其核心原理是通过PTY(伪终端)模拟真实终端的数据流和控制信号传输,使Shell
阅读 →
Linux深入理解 Shell 重定向
文件描述符是操作系统为打开的文件、管道、网络连接等「输入/输出资源」分配的非负整数标识符。Shell 中所有的输入输出操作,本质上都是通过操作文件描述符来完成的。0:标准输入(stdin):默认指向键盘,是命令的输入来源(比如read命令读取用户输入)。1:标准输出(stdout):默认指向终端屏幕,是命令的正常输出(比如ls命令列出的文件列表)。2:标准错误(stderr):默认指向终端屏幕,是命令的错误输出(比如输出的「没有那个文件或目录」)。
阅读 →
LinuxShell脚本基础:函数
函数体# 你希望执行的命令示例 1:简单的函数定义# 定义一个函数,打印 hello world函数体内可以包含任意的命令或逻辑。调用函数时只需要使用函数名即可。# 定义函数,使用 local 声明局部变量# 调用函数echo "Incremented result is: $result" # $result 是全局变量,仍然为未定义6local关键字使得result仅在函数内部有效,不会影响全局环境。
阅读 →
LinuxShell脚本基础:循环结构
循环类型逻辑适用场景for遍历列表已知范围或固定数量的操作,例如文件列表、数字序列等。while条件为真处理动态范围或未知次数的循环,例如用户输入、实时监控等。until条件为假在特定条件达成之前重复执行,例如检查进程完成状态、检测文件生成等。以上是 Shell 脚本中三种循环结构的详细用法。通过示例代码与解析,相信大家对forwhile和until的特点有了更深入的理解。在编写脚本时,灵活选择适合的循环结构,可以让代码更简洁、高效!
阅读 →
安全研究Shell脚本基础:条件判断与选择语句
条件表达式中使用各种运算符,例如数值比较运算符、字符串比较运算符、文件测试运算符等,它们在判断过程中起到了至关重要的作用。掌握这些基本的条件判断技巧后,可以在脚本中构建更加复杂和智能的逻辑。在之前我们已经介绍过了数值比较、字符串比较和文件测试等运算符,这些运算符也是条件判断中不可或缺的一部分。条件判断是Shell脚本中非常重要的一部分,它使得脚本能够根据不同的输入或环境情况做出决策。Shell还提供了一些文件测试运算符,用于判断文件的存在、类型和权限等。是否相等,如果相等,则输出“相等”;
阅读 →
安全研究Shell read 命令指南:从标准输入读取数据
Shell脚本编程中,read命令是实现用户交互的核心工具。文章系统讲解了read的语法和常用选项:-p显示提示信息,-n限定字符数,-t设置超时,-s静默输入,-r原样读取反斜杠。重点介绍了while read循环处理文件数据的高效写法,并指出管道中read会创建子进程导致变量失效,推荐使用重定向方式。最后总结了read在交互设计、数据安全和批量处理中的应用技巧,帮助开发者编写更健壮的Shell脚本。
阅读 →
LinuxShell脚本基础:变量使用
在 Shell 脚本中,变量是用来存储数据的标识符,可以保存字符串、数字或命令输出的结果。变量的定义非常简单,通过等号()将值赋给变量名。语法结构变量定义的格式为变量名=值,等号两侧不能有空格。例如,会导致语法错误,正确的写法是。值可以是字符串、数字或命令的输出。例如,count=42定义一个数字变量,存储命令的输出。动态类型Shell 中的变量是动态类型的,无需显式声明变量的类型。Shell 会根据赋值的内容自动推断。例如,age=27被视为整数,而被视为字符串。变量的类型可以随时改变。例如,
阅读 →
LinuxShell脚本基础开篇:Shell与脚本的基本概念及脚本的执行方式
定义了一个变量name,并将其值设置为 “xiaoyu”。Shell 中不需要指定变量的类型,变量是动态类型的,值的类型会根据其内容自动确定。$name:用来引用变量name的值。然后,你可以使用echoecho $namexiaoyu。
阅读 →
红队渗透Windows 基础(一):深入理解Windows,掌握命令行与Shell
在本文中,我们深入介绍了Windows 系统与LInux系统的不同之处以及终端命令行工具的使用,这些都是红队工作中不可或缺的知识点(特别是不同系统下文件路径等细微差异)。需要强调的是,命令需要多敲多练,方可熟能生巧。
阅读 →