1. Linux命令入门:从零开始的终端操作指南
第一次打开Linux终端时,那个闪烁的光标可能会让人不知所措。但别担心,终端就像是一个超级计算器的键盘,而命令就是你和计算机对话的语言。想象一下,你是一位魔法师,每个命令都是一句咒语——掌握它们,你就能操控这台机器的每一个角落。
我刚开始使用Linux时,经常在终端里输入错误的命令,然后对着屏幕上莫名其妙的错误信息发呆。但现在回想起来,那些看似可怕的错误信息其实是最好的老师。它们不仅告诉你哪里出错了,还会暗示你应该怎么改正。比如当你输入sl而不是ls时,系统会友好地提示"command not found",然后你可能会发现原来有个有趣的蒸汽火车动画命令就叫sl。
提示:在Linux中,命令和参数是区分大小写的。
LS和ls是完全不同的东西,前者会报错,后者才是正确的列表命令。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录操作:Linux的基石命令
2.1 导航与查看:ls、cd和pwd
ls命令就像是你手中的手电筒,照亮当前所在的目录。加上-l参数,它会以详细列表的形式展示文件信息;-a参数则能显示所有文件,包括那些隐藏的配置文件(以点开头的文件)。我最喜欢的是ls -lah组合,它能以人类可读的格式(比如KB、MB)显示所有文件的详细信息。
bash复制$ ls -lah
total 64K
drwxr-xr-x 5 user user 4.0K Jun 15 10:30 .
drwxr-xr-x 3 root root 4.0K Jun 10 09:15 ..
-rw-r--r-- 1 user user 220 Jun 10 09:15 .bash_logout
-rw-r--r-- 1 user user 3.7K Jun 10 09:15 .bashrc
cd是改变目录的命令,但有几个特殊符号需要记住:
cd ~回到家目录cd ..返回上一级目录cd -回到上一个工作目录
pwd(Print Working Directory)则告诉你现在身处何方,当你迷失在目录森林中时,这个命令就是你的指南针。
2.2 文件操作:cp、mv、rm和touch
复制文件时,cp命令有几个实用选项:
-i交互模式,覆盖前询问-r递归复制目录-v显示详细过程
bash复制$ cp -iv source.txt destination.txt
cp: overwrite 'destination.txt'? y
'source.txt' -> 'destination.txt'
mv命令既可以移动文件也可以重命名文件,这取决于第二个参数是目录还是文件名。而rm是危险的命令,特别是加上-rf参数时——它会递归强制删除所有指定文件,没有任何确认提示。我曾经不小心在根目录下运行过rm -rf *,幸好是在测试环境中。
警告:永远不要在
rm -rf命令中使用通配符*,除非你百分之百确定自己在做什么。更好的做法是先用ls命令查看哪些文件会被删除。
touch命令不仅可以创建空文件,还能更新文件的访问和修改时间戳,这在某些构建系统中非常有用。
3. 文本处理三剑客:grep、awk和sed
3.1 grep:文本搜索的瑞士军刀
grep是全局正则表达式打印工具,它能快速在文件中搜索匹配的文本。我最常用的几个变体是:
grep -r "pattern" dir/递归搜索目录grep -i "pattern" file忽略大小写grep -v "pattern" file反向匹配(显示不包含模式的行)grep -A 3 -B 2 "pattern" file显示匹配行及其前后几行
bash复制$ grep -rn "TODO" src/ # 在src目录中递归搜索所有TODO注释
src/main.c:42: // TODO: 这里需要添加错误处理
src/utils.h:15: /* TODO: 优化这个算法 */
3.2 awk:强大的文本分析工具
awk其实是一门完整的编程语言,但大多数人只使用它的一些基本功能来处理表格数据。一个典型的用法是提取日志文件中的特定列:
bash复制$ awk '{print $1, $4}' access.log # 打印第一和第四列
192.168.1.1 [10/Oct/2023:13:55:36
192.168.1.2 [10/Oct/2023:13:55:37
更复杂的例子是计算某个值的总和:
bash复制$ awk '{sum += $3} END {print sum}' data.txt
3.3 sed:流编辑器
sed最适合批量替换文本内容。比如要替换文件中的所有"foo"为"bar":
bash复制$ sed -i 's/foo/bar/g' file.txt
-i表示直接修改文件,没有它则只输出到屏幕而不修改原文件。我经常用这个命令来批量更新配置文件或代码中的字符串。
4. 系统监控与管理命令
4.1 进程管理:ps、top和kill
ps命令显示当前进程状态,我最常用的参数组合是aux:
bash复制$ ps aux | grep nginx
root 1234 0.0 0.5 12345 6789 ? S Oct10 0:00 nginx: master process
www-data 1235 0.0 1.0 23456 9876 ? S Oct10 0:05 nginx: worker process
top则提供实时更新的进程信息,类似于Windows的任务管理器。在top界面中,按M按内存排序,P按CPU排序,q退出。
当需要终止进程时,kill命令发送信号给进程。默认发送SIGTERM(15),允许进程优雅退出;而kill -9发送SIGKILL(9),会立即强制终止进程。
4.2 磁盘与内存:df、du和free
df -h显示磁盘空间使用情况(人类可读格式),而du -sh *显示当前目录下各文件和目录的大小。
bash复制$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 15G 4.3G 78% /
/dev/sdb1 100G 30G 70G 30% /data
free -m以MB为单位显示内存使用情况,-g则以GB为单位。
4.3 网络工具:ping、netstat和ssh
ping测试网络连通性,netstat显示网络连接和端口信息:
bash复制$ netstat -tulnp # 查看所有监听端口及对应程序
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
tcp6 0 0 :::80 :::* LISTEN 5678/nginx
ssh是远程管理Linux系统的标准工具,配合公钥认证可以实现免密码登录:
bash复制$ ssh-keygen # 生成密钥对
$ ssh-copy-id user@remote_host # 将公钥复制到远程主机
5. 权限与用户管理
5.1 文件权限:chmod和chown
Linux文件权限分为读(r)、写(w)、执行(x),分别对应数字4、2、1。chmod修改权限:
bash复制$ chmod 755 script.sh # 所有者rwx,组和其他rx
$ chmod +x script.sh # 给所有用户添加执行权限
chown改变文件所有者:
bash复制$ chown user:group file.txt
5.2 用户管理:useradd、passwd和sudo
创建新用户并设置密码:
bash复制$ sudo useradd -m newuser # -m创建家目录
$ sudo passwd newuser
sudo允许授权用户以root权限执行命令。配置sudo权限通过/etc/sudoers文件,最好使用visudo命令编辑,因为它会检查语法。
6. 实用技巧与高级用法
6.1 命令组合与管道
Linux最强大的特性之一是可以将多个命令通过管道(|)连接起来。例如统计当前目录下文件数量:
bash复制$ ls | wc -l
查找并删除所有临时文件:
bash复制$ find . -name "*.tmp" -exec rm {} \;
6.2 后台任务与nohup
在命令末尾加&可以让它在后台运行:
bash复制$ long_running_command &
使用nohup可以防止命令因终端关闭而终止:
bash复制$ nohup ./server.sh > server.log 2>&1 &
6.3 命令别名与历史
在~/.bashrc中添加别名可以简化常用命令:
bash复制alias ll='ls -alF'
alias grep='grep --color=auto'
history命令显示命令历史,!123重新执行历史记录中第123条命令,!!重复上一条命令。
7. 常见问题排查
7.1 "Command not found"错误
这通常意味着:
- 命令拼写错误
- 命令未安装
- 命令不在PATH环境变量中
使用which命令检查命令位置:
bash复制$ which python
/usr/bin/python
7.2 权限被拒绝
遇到"Permission denied"时:
- 检查文件权限(
ls -l) - 尝试使用
sudo - 检查SELinux状态(
getenforce)
7.3 磁盘空间不足
当系统提示空间不足时:
- 使用
df -h查看哪个分区满了 - 使用
du -sh *查找大文件 - 清理日志文件(
/var/log)或缓存(/tmp)
8. 推荐的学习路径
- 先掌握基本文件操作命令(ls, cd, cp, mv, rm)
- 学习文本处理工具(grep, awk, sed)
- 熟悉系统监控命令(top, ps, df, free)
- 了解权限和用户管理
- 练习命令组合和脚本编写
- 探索更高级的工具(find, xargs, tar等)
最好的学习方法是在实际工作中使用这些命令。遇到问题时,记得Linux有完善的帮助系统:
man command查看命令手册command --help快速查看用法- 互联网上有无数Linux相关的问答和教程
