shell脚本的常用命令
文件操作
ls
列出目录内容:
bash
ls -l # 显示详细信息
ls -a # 包含隐藏文件
cp
复制文件或目录:
bash
cp file1 file2 # 复制文件
cp -r dir1 dir2 # 递归复制目录
mv
移动或重命名:
bash
mv oldname newname # 重命名
mv file dir/ # 移动文件
rm
删除文件或目录:
bash
rm file # 删除文件
rm -rf dir # 强制递归删除目录(慎用)
文本处理
grep
文本搜索:
bash复制插入
grep "pattern" file # 搜索匹配行
grep -i "pattern" file # 忽略大小写
复制插入
sed
流编辑器:
bash
sed 's/old/new/g' file # 全局替换
sed -i 's/old/new/' file # 直接修改文件
awk
文本分析:
bash
awk '{print $1}' file # 打印第一列
awk -F',' '{print $2}' file # 以逗号分隔并打印第二列
系统信息
ps
查看进程:
bash
ps aux # 显示所有进程
ps -ef | grep process_name # 过滤特定进程
top
实时系统监控:
bash
top # 交互式查看资源占用
top -n 1 # 非交互式单次输出
df
磁盘空间:
bash
df -h # 人类可读格式显示
df -i # 查看inode使用情况
权限管理
chmod
修改权限:
bash
chmod 755 file # 设置rwxr-xr-x
chmod +x script.sh # 添加执行权限
chown
修改属主:
bash
chown user:group file # 修改所有者和组
chown -R user:group dir # 递归修改
网络操作
ping
网络连通性测试:
bash复制插入
ping example.com # 基本测试
ping -c 4 example.com # 限定次数
复制插入
curl
数据传输工具:
bash
curl -O http://example.com/file # 下载文件
curl -X POST -d 'data' http://example.com # POST请求
wget
网络下载:
bash
wget http://example.com/file # 下载文件
wget -c http://example.com/file # 断点续传
流程控制
if
条件判断:
bash
if [ -f "file" ]; thenecho "File exists"
fi
for
循环:
bash
for i in {1..5}; doecho $i
done
while
循环:
bash
while true; doecho "Looping"sleep 1
done
变量操作
定义变量:
bash
name="value" # 注意等号无空格
echo $name # 使用变量
数组操作:
bash
array=("a" "b" "c")
echo ${array[1]} # 访问第二个元素
调试技巧
set
调试模式:
bash
set -x # 开启命令打印
set +x # 关闭命令打印
trap
信号捕获:
bash
trap "echo 'Script interrupted'" SIGINT