shell

Shell 全称 / 来源 特点 常用场景
sh Bourne Shell 经典shell,轻量,功能基础 跨平台脚本、兼容性要求高的系统
bash Bourne Again Shell (GNU) 兼容sh,功能丰富,支持历史命令、Tab补全 Linux 日常开发/运维脚本
zsh Z Shell 高度可定制,丰富提示和补全,插件丰富 高度交互终端、开发者使用
ksh Korn Shell 早期高级 shell,增强脚本能力 企业 Unix 脚本、商业系统
mksh MirBSD Korn Shell ksh 兼容,轻量、安全 嵌入式系统、资源受限环境
ash/dash Almquist Shell 非常轻量,启动快,POSIX 标准 嵌入式 Linux、初始化脚本、快速执行脚本
Shell 默认系统 POSIX 数组 扩展特性
sh Unix / 跨平台 兼容 不支持 基本语法,仅 POSIX 标准
bash Linux (Ubuntu/CentOS 默认) 兼容 支持 [[...]] 条件判断、((...)) 算术、数组、函数扩展
zsh macOS Catalina+ 默认 大部分 支持 高级数组、关联数组、强大提示功能
ksh Unix 系统 兼容 支持 高级函数、算术表达式、内建数组
mksh BSD / 嵌入式系统 兼容 支持 一些 ksh 扩展,轻量级
ash/dash Alpine Linux / Debian dash 兼容 仅单值 极少扩展,主要追求性能和兼容性

IFS

1IFS=$'\n'  # 设置换行符为分隔符
2for FILE in $FILES; do
3    if [ -f "$FILE" ]; then
4        code "$FILE"
5    else
6        echo "未找到文件: $FILE"
7    fi
8done
9unset IFS  # 恢复默认分隔符

dp0

路径通过 %~dp0 来动态获取当前脚本所在的路径

history

历史忽略重复命令,修改 ~/.bashrc

1export HISTCONTROL=$HISTCONTROL${HISTCONTROL+:}ignoredups:erasedups
2shopt -s histappend     # 追加历史 默认覆盖
1source ~/.bashrc        # 然后重新加载
2history -r              # 读取历史
3
4history -c              # 清除历史
5
6history -w              # 保存历史
7echo $HISTFILE          # 保存的历史文件路径

echo

1echo -e "hello\nworld"  # 换行

ip

centos10 最小化安装 有 ip addr 代替 ifconfig

ss

centos10 最小化安装 有 ss(socket statistics)是 netstat 的现代替代工具,用于查看 系统的套接字(socket)连接状态。 ss 可以代替 netstat

 1ss [选项]
 2
 3-t  显示 TCP 连接
 4-u  显示 UDP 连接
 5-l  只显示监听的端口
 6-a  显示所有套接字,包括监听和非监听
 7-n  不解析端口和地址名称,显示数字
 8-p  显示进程信息(需要 root)
 9-s  显示摘要信息,例如连接统计
10-r  显示路由信息

isof

centos10 最小化安装 没有 lsof(List Open Files)用于 查看系统中被打开的文件。在 Linux 中,几乎一切都是文件,包括普通文件、目录、套接字、管道等。

1lsof [选项] [文件或端口]
2
3-i          显示网络文件(网络连接)
4-i TCP:80   显示 TCP 80 端口使用情况
5-i UDP:137  显示 UDP 137 端口使用情况
6-p PID      显示指定进程打开的文件
7-u USER     显示指定用户打开的文件
8-n          不解析 IP 或端口名称
9-P          不解析端口名,直接显示端口号

检查防火墙

sudo firewall-cmd –list-all