1. Linux基础命令概述
作为一名Linux系统管理员,我每天打交道最多的就是各种命令行工具。很多人刚接触Linux时会被黑底白字的终端窗口吓到,但当你真正掌握这些基础命令后,会发现它们比图形界面更高效、更强大。Linux命令就像是一把瑞士军刀,每个命令都有其特定用途,组合起来能完成各种复杂任务。
根据我十年的运维经验,80%的日常管理工作都可以用不到20个基础命令解决。这些命令主要包括文件操作、系统管理、网络配置和文本处理四大类。掌握这些命令不仅能提高工作效率,也是理解Linux系统运行机制的基础。
提示:Linux命令区分大小写,所有命令、选项和参数之间需要用空格分隔。Tab键可以自动补全命令和文件名,这是提高效率的小技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录操作命令
2.1 导航与查看命令
pwd命令是我最常用的命令之一,它显示当前工作目录的完整路径。当你在复杂的目录结构中迷失时,这个命令能立即告诉你所在位置。
ls命令用于列出目录内容,我通常会加上-l选项以长格式显示文件详细信息,加上-a显示隐藏文件(以点开头的文件)。例如:
bash复制ls -la /home/user
这个组合能显示目录下所有文件(包括隐藏文件)的权限、所有者、大小和修改时间等完整信息。
cd命令用于切换目录,几个特殊符号需要记住:
cd ~返回用户主目录cd ..返回上级目录cd -返回上一个工作目录
2.2 文件操作命令
cp命令用于复制文件或目录,我经常使用的格式是:
bash复制cp -r source_dir target_dir # -r表示递归复制目录
mv命令既可以移动文件也可以重命名文件。在Linux中没有专门的"重命名"命令,重命名实际上就是移动文件到同一目录下的新名称。
rm命令删除文件要格外小心,特别是加上-r和-f选项时。我有个惨痛教训:曾经误删了整个项目目录。现在我会先用ls确认要删除的文件,再执行rm。
touch命令不仅可以创建空文件,更常用于更新文件的访问和修改时间戳。这在某些自动化脚本中很有用。
2.3 文件权限管理
chmod命令修改文件权限,我通常使用数字模式:
bash复制chmod 755 script.sh # 所有者可读可写可执行,其他用户可读可执行
chown命令改变文件所有者,在部署服务时经常用到:
bash复制chown -R www-data:www-data /var/www # -R递归修改,设置web目录所有者
3. 系统管理与监控命令
3.1 进程管理
ps命令查看进程状态,我最常用的组合是:
bash复制ps aux | grep nginx # 查看nginx相关进程
top命令是实时系统监控神器,显示CPU、内存使用情况和进程列表。按q退出,按M按内存排序,P按CPU排序。
kill命令终止进程,先用ps找到进程ID,然后:
bash复制kill -9 1234 # 强制终止PID为1234的进程
3.2 系统信息查询
uname -a显示完整的系统信息,包括内核版本、主机名等。这在排查兼容性问题时很有用。
free -h以人类可读格式显示内存使用情况,-h选项会自动转换为MB或GB单位。
df -h查看磁盘空间使用情况,我经常用它监控服务器存储空间:
bash复制df -h / # 查看根分区使用情况
du -sh *查看当前目录下各文件和目录的大小,-s显示总计,-h人类可读格式。
4. 网络相关命令
4.1 网络配置与测试
ifconfig(或较新的ip addr)查看网络接口信息。在配置服务器网络时必不可少。
ping测试网络连通性,我通常会用-c限制次数:
bash复制ping -c 4 google.com # 发送4个ping包
netstat显示网络连接状态,常用选项:
bash复制netstat -tulnp # 查看所有监听端口及对应程序
ssh远程登录其他Linux主机,这是我最常用的命令之一:
bash复制ssh -p 2222 user@remote_host # 指定端口连接
4.2 文件传输
scp在本地和远程主机间安全复制文件:
bash复制scp -P 2222 local_file user@remote_host:/path/to/dest # 上传文件
scp user@remote_host:/path/to/file local_dir # 下载文件
wget和curl下载文件,后者更强大但前者更简单:
bash复制wget https://example.com/file.tar.gz
curl -O https://example.com/file.tar.gz
5. 文本处理与搜索命令
5.1 文本查看与编辑
cat查看小文件内容,less或more查看大文件(支持分页):
bash复制less /var/log/syslog # 按q退出,/搜索,n下一个匹配项
head和tail查看文件开头或结尾,后者加上-f可以实时跟踪日志:
bash复制tail -f /var/log/nginx/access.log # 实时监控访问日志
grep是文本搜索神器,我几乎每天都会用:
bash复制grep -r "error" /var/log/ # 递归搜索目录中的"error"
grep -i "warning" file.log # -i忽略大小写
5.2 文本处理工具
awk和sed是强大的文本处理工具。虽然学习曲线陡峭,但掌握后能处理复杂文本任务。例如提取日志中的IP地址:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr
这个管道组合:提取第一列(IP)→排序→统计出现次数→按次数排序。
sort排序,uniq去重(常与sort配合使用),wc统计行数字数:
bash复制wc -l access.log # 统计行数(访问量)
6. 压缩与打包命令
tar是最常用的归档工具,我常用的组合:
bash复制tar -czvf archive.tar.gz dir/ # 创建gzip压缩包
tar -xzvf archive.tar.gz # 解压gzip包
zip和unzip处理zip格式压缩包,在跨平台环境中常用:
bash复制zip -r archive.zip dir/
unzip archive.zip
gzip和bzip2是纯压缩工具,通常与tar配合使用:
bash复制gzip file # 压缩为file.gz
gunzip file.gz # 解压
7. 用户与权限管理
useradd和usermod管理用户账户,我通常这样创建新用户:
bash复制useradd -m -s /bin/bash newuser # -m创建家目录,-s指定shell
passwd newuser # 设置密码
groupadd和usermod -aG管理用户组,将用户加入sudo组:
bash复制usermod -aG sudo newuser # 授予sudo权限
su切换用户,sudo以root权限执行命令:
bash复制sudo apt update # 以root权限更新软件列表
8. 软件包管理命令
不同Linux发行版有不同的包管理工具。Debian/Ubuntu使用apt,CentOS/RHEL使用yum或dnf。
更新软件源并升级所有包:
bash复制sudo apt update && sudo apt upgrade -y
搜索和安装软件:
bash复制apt search nginx
sudo apt install nginx
删除软件:
bash复制sudo apt remove nginx
sudo apt autoremove # 删除不需要的依赖
9. 实用技巧与组合命令
Linux命令的强大之处在于可以通过管道(|)将多个命令组合使用。例如查找当前目录下最大的5个文件:
bash复制find . -type f -exec du -h {} + | sort -rh | head -n 5
统计当前目录下各种类型文件的数量:
bash复制find . -type f | awk -F. '!a[$NF]++{print $NF}' | xargs -I {} sh -c 'echo -n "{}: "; find . -type f -name "*.{}" | wc -l'
监控最消耗CPU的进程:
bash复制watch -n 1 'ps -eo pid,user,%cpu,%mem,comm --sort=-%cpu | head -n 6'
10. 命令历史与帮助
history查看命令历史,可以用!编号重复执行历史命令:
bash复制!112 # 执行历史记录中第112条命令
man查看命令手册,这是最权威的参考资料:
bash复制man ls # 查看ls命令的完整文档
--help选项提供快速帮助:
bash复制grep --help
type和which查找命令位置:
bash复制type cd # 查看cd命令的类型(内置/外部)
which python # 查看python命令的路径
掌握这些基础命令后,你会发现Linux命令行比图形界面更高效。我建议新手每天练习几个命令,逐渐熟悉它们的用法和选项。遇到不熟悉的命令时,多用man和--help查看文档。记住,Linux的强大之处不在于记住所有命令,而在于知道如何找到和使用正确的工具解决问题。
