公司动态

Linux系统入门:从基础命令到Shell脚本编程

📅 2026/8/10 8:09:11
Linux系统入门:从基础命令到Shell脚本编程
1. Linux系统基础概述作为一名使用Linux系统超过十年的老用户我经常被问到Linux到底该怎么入门这个问题。Linux作为开源操作系统的代表已经渗透到我们数字生活的方方面面——从智能手机的Android内核到云计算服务器的操作系统再到嵌入式设备和超级计算机Linux无处不在。对于初学者来说Linux最令人困惑的可能就是它的命令行界面。但正是这个看似古老的交互方式赋予了Linux无与伦比的灵活性和强大功能。与Windows不同Linux系统更注重做一件事并把它做好的Unix哲学每个命令都是精心设计的工具可以通过管道等方式组合使用完成复杂的任务。2. Linux系统核心概念解析2.1 文件系统结构Linux采用树状文件系统结构但与Windows的盘符划分完全不同。在Linux中一切皆文件包括硬件设备、进程信息等。几个关键目录需要特别关注/bin存放系统基本命令/etc系统配置文件/home用户主目录/var经常变化的文件如日志/dev设备文件提示初学者常犯的错误是试图在根目录下直接创建文件。实际上用户文件应存放在/home下的个人目录中。2.2 用户与权限管理Linux是一个多用户系统严格的权限控制是其安全性的基石。每个文件和目录都有三组权限所有者(owner)、所属组(group)和其他用户(others)。权限分为读(r)、写(w)和执行(x)。修改权限的chmod命令有多种使用方式chmod 755 file.txt # 数字表示法 chmod ux script.sh # 符号表示法2.3 软件包管理不同Linux发行版使用不同的包管理系统Debian/Ubuntuapt/dpkgRedHat/CentOSyum/rpmArch Linuxpacman以Ubuntu为例常用命令包括sudo apt update # 更新软件源 sudo apt install vim # 安装软件 sudo apt remove vim # 卸载软件3. 常用命令实战指南3.1 文件操作命令ls列出目录内容ls -l # 详细列表 ls -a # 显示隐藏文件cp/mv/rm复制/移动/删除文件cp -r dir1 dir2 # 递归复制目录 rm -i file.txt # 交互式删除find查找文件find /home -name *.txt # 按名称查找3.2 文本处理三剑客grep文本搜索grep error /var/log/syslog # 查找错误日志sed流编辑器sed s/foo/bar/g file.txt # 替换文本awk强大的文本分析工具awk {print $1} file.txt # 打印第一列3.3 系统监控命令top/htop进程监控top -u username # 监控特定用户进程df/du磁盘空间检查df -h # 人类可读格式显示磁盘使用 du -sh * # 查看当前目录各文件大小free内存使用情况free -m # 以MB为单位显示4. Shell脚本编程基础4.1 基础语法一个简单的Shell脚本示例#!/bin/bash # 这是一个注释 echo Hello, $USER! # 使用环境变量重要概念变量定义VARvalue条件判断if [ condition ]; then ... fi循环for/while/until4.2 实用脚本示例备份脚本#!/bin/bash BACKUP_DIR/backups DATE$(date %Y%m%d) tar -czf $BACKUP_DIR/backup-$DATE.tar.gz /home/user日志分析脚本#!/bin/bash LOG_FILE/var/log/nginx/access.log awk {print $1} $LOG_FILE | sort | uniq -c | sort -nr5. 网络配置与管理5.1 基础网络命令ifconfig/ip网络接口配置ip addr show # 显示网络接口信息ping/traceroute网络连通性测试ping -c 4 google.com # 发送4个ping包netstat/ss网络连接查看ss -tulnp # 查看监听端口5.2 SSH远程管理SSH是管理Linux服务器的标准工具ssh usernamehostname # 基本连接 scp file.txt usernamehostname:/path # 文件传输配置SSH密钥认证更安全ssh-keygen -t rsa # 生成密钥对 ssh-copy-id usernamehostname # 部署公钥6. 系统服务管理6.1 systemd基础现代Linux发行版大多使用systemd管理服务sudo systemctl start nginx # 启动服务 sudo systemctl enable nginx # 设置开机启动 sudo systemctl status nginx # 查看服务状态6.2 日志查看journalctl是查看系统日志的强大工具journalctl -u nginx # 查看特定服务日志 journalctl --since 2024-01-01 --until 2024-01-02 # 按时间筛选7. 安全基础配置7.1 防火墙设置UFW(Uncomplicated Firewall)简化了iptables配置sudo ufw allow 22/tcp # 允许SSH sudo ufw enable # 启用防火墙7.2 用户安全一些基本安全实践禁用root远程登录使用sudo代替直接root操作定期更新系统sudo apt update sudo apt upgrade8. 开发环境配置8.1 编译工具链安装基本开发工具sudo apt install build-essential # Ubuntu sudo yum groupinstall Development Tools # CentOS8.2 版本控制Git的基本使用git clone https://github.com/user/repo.git git add . git commit -m message git push9. 常见问题排查9.1 系统无法启动常见原因及解决方案文件系统损坏使用Live CD修复Grub引导问题重装grub内核panic检查硬件兼容性9.2 性能问题排查步骤使用top查看CPU使用率检查内存使用(free -m)查看磁盘I/O(iotop)检查网络流量(iftop)10. 学习资源推荐10.1 在线文档man手册Linux自带的权威文档man ls # 查看ls命令手册TLDP(The Linux Documentation Project)丰富的HOWTO文档10.2 推荐书籍《鸟哥的Linux私房菜》- 适合初学者《Linux命令行与shell脚本编程大全》- 深入命令行《UNIX环境高级编程》- 高级主题学习Linux最重要的是动手实践。我在最初学习时经常因为一个命令的错误使用而不得不重装系统但这些经历恰恰是最好的老师。建议初学者在自己的电脑上安装虚拟机环境大胆尝试各种命令和配置遇到问题时善用搜索引擎和社区资源。