Shell命令学习笔记:从入门到实践
·
一、Shell基础概念
Shell是用户与操作系统内核之间的命令行接口,它接收用户输入的命令,解释并执行这些命令,然后将结果返回给用户。常见的Shell包括Bash(Bourne Again Shell)、Zsh、Fish等,其中Bash是Linux和macOS系统中最常用的默认Shell。
二、Shell基本语法与命令结构
Shell命令通常遵循以下格式:
command [options] [arguments]
其中:
- command:要执行的命令名称
- options:命令选项,通常以"-"或"--"开头
- arguments:命令参数,通常是文件路径、字符串等
三、常用Shell命令分类
1. 文件与目录操作
ls- 列出目录内容ls -la # 显示所有文件(包括隐藏文件)的详细信息cd- 切换目录cd /home/user # 切换到指定目录 cd .. # 返回上级目录 cd ~ # 返回家目录pwd- 显示当前工作目录mkdir- 创建目录mkdir -p dir1/dir2 # 递归创建目录rmdir- 删除空目录rm- 删除文件或目录rm -rf dirname # 强制递归删除目录(谨慎使用!)cp- 复制文件或目录cp -r source_dir target_dir # 递归复制目录mv- 移动或重命名文件/目录touch- 创建空文件或更新文件时间戳
2. 文件内容查看与编辑
cat- 连接文件并打印到标准输出cat file.txt # 显示文件内容 cat file1.txt file2.txt # 合并显示多个文件less/more- 分页查看文件内容head- 显示文件开头部分head -n 10 file.txt # 显示前10行tail- 显示文件末尾部分tail -f log.txt # 实时跟踪文件变化grep- 文本搜索工具grep "pattern" file.txt # 搜索包含pattern的行 grep -r "error" . # 递归搜索当前目录sed- 流编辑器,用于文本替换、删除等操作awk- 文本处理语言,适合处理结构化文本
3. 权限管理
chmod- 修改文件权限chmod 755 script.sh # 数字模式 chmod u+x script.sh # 符号模式:给所有者添加执行权限chown- 修改文件所有者chown user:group file.txtchgrp- 修改文件所属组
4. 进程管理
ps- 显示当前进程状态ps aux # 显示所有用户的详细进程信息top/htop- 实时显示进程状态kill- 终止进程kill -9 PID # 强制终止进程jobs- 显示后台任务bg/fg- 后台/前台运行任务
5. 网络相关
ping- 测试网络连通性curl/wget- 网络数据传输工具ssh- 远程登录ssh user@hostname # 远程登录scp- 安全复制文件scp file.txt user@hostname:/path/ # 复制到远程netstat- 显示网络连接、路由表等
四、Shell进阶特性
1. 管道(Pipe)
管道符|可以将一个命令的输出作为另一个命令的输入:
ls -la | grep ".txt" # 查找所有txt文件
ps aux | grep "python" # 查找python进程
2. 重定向
- 输出重定向:
>(覆盖)、>>(追加)echo "hello" > file.txt # 覆盖写入 echo "world" >> file.txt # 追加写入 - 输入重定向:
<wc -l < file.txt # 统计文件行数 - 错误重定向:
2>command 2> error.log # 将错误输出重定向到文件
3. 变量与环境变量
# 定义变量
name="John"
echo $name # 输出变量值
环境变量
echo $PATH # 系统路径
echo $HOME # 用户家目录
echo $USER # 当前用户名
导出环境变量
export MY_VAR="value"
4. 条件判断与循环
# if语句
if [ -f "file.txt" ]; then
echo "文件存在"
elif [ -d "dir" ]; then
echo "目录存在"
else
echo "都不存在"
fi
for循环
for i in {1..5}; do
echo "Number: $i"
done
while循环
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count+1))
done
5. 函数定义
# 定义函数
greet() {
echo "Hello, $1!"
}
调用函数
greet "World"
五、实用技巧与最佳实践
1. 命令历史与快捷键
history- 查看命令历史!!- 执行上一条命令!$- 上一条命令的最后一个参数Ctrl+R- 反向搜索历史命令Ctrl+A/Ctrl+E- 移动到行首/行尾Ctrl+U/Ctrl+K- 删除到行首/行尾
2. 命令别名
# 设置别名
alias ll='ls -la'
alias grep='grep --color=auto'
永久生效:添加到~/.bashrc或~/.bash_profile
3. 脚本编写基础
#!/bin/bash
# 这是一个Shell脚本示例
设置脚本遇到错误时退出
set -e
获取脚本参数
echo "脚本名称: $0"
echo "第一个参数: $1"
echo "参数个数: $#"
函数示例
check_file() {
if [ ! -f "$1" ]; then
echo "错误: 文件 $1 不存在"
exit 1
fi
}
主程序
main() {
echo "开始执行脚本..."
check_file "input.txt"
# 更多操作...
}
调用主函数
main "$@"
4. 调试技巧
# 调试模式
bash -x script.sh
在脚本中启用调试
set -x # 开启调试
你的代码
set +x # 关闭调试
六、学习资源推荐
- 在线教程:LinuxCommand.org、Bash Academy
- 书籍推荐:《Linux命令行与shell脚本编程大全》
- 练习平台:OverTheWire、Bandit wargame
- 备忘单:Bash Cheat Sheet
七、总结
Shell命令是Linux/Unix系统管理和开发的基础工具。掌握Shell不仅能提高工作效率,还能深入理解操作系统的工作原理。建议从基础命令开始,逐步学习管道、重定向、变量、条件判断等进阶特性,最后通过编写脚本将多个命令组合起来解决实际问题。
记住:实践是最好的学习方式。多动手尝试,遇到问题时善用man命令查看手册,使用--help选项查看命令帮助。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)