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