一、Linux系统简介

1.1 什么是Linux

Linux是一种自由和开放源代码的类UNIX操作系统,由林纳斯·托瓦兹(Linus Torvalds)于1991年首次发布。它基于POSIX标准,支持多用户、多任务、多线程和多CPU架构,广泛应用于服务器、嵌入式系统、移动设备等领域。

1.2 Linux的主要特点

  • 开源免费:用户可自由获取、修改和分发源代码

  • 稳定性与安全性:系统运行稳定,安全机制完善

  • 多任务与多用户:支持同时运行多个程序和多个用户登录

  • 高度可定制:可根据需求裁剪系统组件

  • 强大的网络功能:内置丰富的网络协议和工具

1.3 Linux的应用领域

  • 服务器系统(Web服务器、数据库服务器等)

  • 嵌入式设备(智能手机、路由器、智能家居等)

  • 云计算与大数据平台

  • 科研与高性能计算

  • 桌面操作系统(如Ubuntu、Fedora等发行版)

二、Linux常用命令

2.1 文件与目录操作

ls - 列出目录内容

bash

ls                # 列出当前目录文件
ls -l             # 详细格式显示
ls -a             # 显示隐藏文件
ls /home/user     # 列出指定目录内容

cd - 切换目录

bash

cd /path/to/dir   # 切换到指定目录
cd ~              # 切换到用户主目录
cd ..             # 切换到上级目录
cd -              # 切换到上一次访问的目录

pwd - 显示当前目录

bash

pwd               # 显示当前工作目录的绝对路径

mkdir - 创建目录

bash

mkdir newdir      # 创建单个目录
mkdir -p a/b/c    # 创建多级目录

rm - 删除文件/目录

bash

rm file.txt       # 删除文件
rm -r dir         # 删除目录及其内容
rm -f file.txt    # 强制删除文件(无提示)
rm -rf dir        # 强制删除目录(无提示)

cp - 复制文件/目录

bash

cp src.txt dest.txt       # 复制文件
cp -r src_dir dest_dir    # 复制目录

mv - 移动/重命名文件/目录

bash

mv old.txt new.txt        # 重命名文件
mv file.txt /path/to/dir  # 移动文件

2.2 文件内容查看

cat - 查看文件内容

bash

cat file.txt              # 显示文件全部内容
cat -n file.txt           # 显示行号

more/less - 分页查看文件

bash

more file.txt             # 分页显示(空格键翻页,q退出)
less file.txt             # 更灵活的分页查看(支持上下滚动)

head/tail - 查看文件开头/结尾

bash

head file.txt             # 显示文件前10行
head -n 5 file.txt        # 显示文件前5行
tail file.txt             # 显示文件后10行
tail -f log.txt           # 实时查看文件更新(常用于日志)

2.3 系统管理

ps - 查看进程

bash

ps                       # 显示当前用户进程
ps aux                   # 显示系统所有进程
ps aux | grep "nginx"    # 查找特定进程

top - 实时系统监控

bash

top                      # 实时显示系统资源使用和进程信息

df/du - 磁盘空间查看

bash

df -h                    # 显示磁盘分区使用情况(人类可读格式)
du -sh /path/to/dir      # 显示目录大小(人类可读格式)

free - 内存使用情况

bash

free -h                  # 显示内存使用情况(人类可读格式)

2.4 网络操作

ping - 测试网络连接

bash

ping www.example.com      # 测试与目标主机的连接

ifconfig/ip - 网络接口配置

bash

ifconfig                 # 显示网络接口信息(旧版)
ip addr                  # 显示网络接口信息(新版)

netstat - 网络状态查看

bash

netstat -tuln            # 显示监听的TCP/UDP端口

ssh - 远程登录

bash

ssh user@remote_host     # 通过SSH协议登录远程主机

2.5 权限管理

chmod - 修改文件权限

bash

chmod 755 file.sh        # 设置文件所有者可读可写可执行,其他用户可读可执行
chmod +x script.sh       # 为文件添加执行权限

chown - 修改文件所有者

bash

chown user:group file.txt # 修改文件所有者和所属组

三、总结

Linux命令是使用Linux系统的基础,掌握常用命令可以极大提高工作效率。本文介绍的只是Linux命令的冰山一角,建议通过man 命令名(如man ls)查看完整的命令手册,深入学习和实践。

随着使用经验的积累,你会发现Linux系统的强大功能和灵活性,它将成为你工作和学习的得力助手。

四、常用命令高级用法与实战技巧

4.1 文件操作进阶

ls 命令高级用法

bash

ls -lh                 # 以人类可读格式显示文件大小
ls -lt                 # 按修改时间排序(最新在前)
ls -lSr                # 按文件大小排序(从小到大)
ls -l | grep ".txt"    # 结合管道筛选特定文件

实用场景

bash

# 统计当前目录下不同类型文件数量
ls -l | awk '{print $1}' | grep -v '^d' | wc -l  # 统计普通文件数量
ls -l | awk '{print $1}' | grep '^d' | wc -l     # 统计目录数量

find 命令 - 高级文件搜索

bash

find / -name "*.log"               # 从根目录搜索所有.log文件
find ~ -type d -name "test*"       # 在主目录搜索以test开头的目录
find . -mtime -7                   # 查找7天内修改过的文件
find . -size +100M                 # 查找大于100MB的文件
find . -perm 777                   # 查找权限为777的文件
find . -name "*.txt" -exec rm {} \; # 查找并删除所有.txt文件(谨慎使用)

cp 命令高级复制

bash

cp -a src_dir dest_dir             # 保留文件属性的递归复制
cp -r --parents a/b/c dest         # 复制文件并保留目录结构
cp -v file1 file2 dest_dir         # 显示复制过程

4.2 文本处理工具

grep - 文本搜索神器

bash

grep "error" log.txt               # 在文件中搜索"error"
grep -i "Error" log.txt            # 忽略大小写搜索
grep -r "pattern" /path/to/dir     # 递归搜索目录下所有文件
grep -n "keyword" file.txt         # 显示匹配行号
grep -v "exclude" file.txt         # 排除包含"exclude"的行
grep -E "pattern1|pattern2" file   # 搜索多个模式(正则表达式)

实用案例

bash

# 从日志中提取IP地址并统计出现次数
grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' access.log | sort | uniq -c | sort -nr

sed - 流编辑器

bash

sed 's/old/new/' file.txt          # 将每行第一个"old"替换为"new"
sed 's/old/new/g' file.txt         # 全局替换所有"old"为"new"
sed '/pattern/d' file.txt          # 删除包含"pattern"的行
sed -n '5,10p' file.txt            # 显示第5到10行内容
sed 's/^/#/' file.txt              # 给文件所有行添加注释(#)

awk - 文本处理语言

bash

awk '{print $1}' file.txt          # 打印文件第一列
awk -F ',' '{print $2}' data.csv   # 处理CSV文件,打印第二列
awk '$3 > 100 {print $0}' data.txt # 第三列大于100的行
awk 'BEGIN{sum=0} {sum+=$1} END{print sum}' numbers.txt # 计算第一列总和

4.3 系统监控与管理

ps 进程管理进阶

bash

ps aux --sort=-%cpu | head        # 按CPU使用率排序进程(前10)
ps aux --sort=-%mem | head        # 按内存使用率排序进程(前10)
ps -ef | grep "process_name"      # 查看进程完整信息

top 高级用法

bash

top -d 2                          # 每2秒刷新一次
top -p 1234                       # 只监控PID为1234的进程
top -u username                   # 只显示指定用户的进程
在top界面按:
  P - 按CPU使用率排序
  M - 按内存使用率排序
  q - 退出

netstat/ss 网络连接监控

bash

netstat -anp | grep ESTABLISHED   # 查看已建立的连接
netstat -tulnp                    # 查看监听端口及对应进程
ss -lntu                          # 更高效的端口查看(ss是netstat的替代工具)

4.4 权限与用户管理

文件权限详解

Linux文件权限由9个字符表示,分为3组:所有者(u)、所属组(g)、其他用户(o)

每组包含r(读)、w(写)、x(执行)权限,对应数值:r=4, w=2, x=1

bash

chmod u+x file.sh                 # 仅给所有者添加执行权限
chmod g=rw file.txt               # 设置所属组权限为读写
chmod o-rwx file.txt              # 移除其他用户所有权限
chmod ug+rwx,o-rwx dir            # 目录权限设置

sudo 权限管理

bash

sudo command                      # 以root权限执行命令
sudo -i                           # 切换到root用户环境
sudo visudo                       # 安全编辑sudoers文件

用户与组管理

bash

useradd newuser                   # 创建新用户
passwd newuser                    # 设置用户密码
usermod -aG sudo newuser          # 将用户添加到sudo组
groupadd newgroup                 # 创建新组
chown -R user:group /path/to/dir  # 递归修改目录所有者和组

4.5 实用系统工具

tar - 归档与压缩

bash

tar -cvf archive.tar file1 file2  # 创建归档文件
tar -xvf archive.tar              # 解压缩归档
tar -zcvf archive.tar.gz dir      # 创建gzip压缩包
tar -jcvf archive.tar.bz2 dir     # 创建bzip2压缩包
tar -zxvf archive.tar.gz          # 解压gzip压缩包
tar -tf archive.tar               # 查看归档内容而不解压

wget/curl - 网络下载工具

bash

wget https://example.com/file.iso # 下载文件
wget -c URL                       # 断点续传
wget -P /path/to/save URL         # 指定保存路径

curl -O URL                       # 下载文件
curl -L URL                       # 跟随重定向
curl -X POST -d "data=1" URL      # 发送POST请求

history - 命令历史

bash

history                           # 显示命令历史
history 10                        # 显示最近10条命令
!100                              # 执行历史中第100条命令
!ls                               # 执行最近一次以ls开头的命令
history | grep "command"          # 搜索历史命令

4.6 系统性能优化

vmstat - 系统性能监控

bash

vmstat 2 5                        # 每2秒采样一次,共5次
vmstat -s                         # 显示内存统计信息

iostat - 磁盘I/O监控

bash

iostat                            # 显示CPU和磁盘I/O统计
iostat -x 2                       # 每2秒显示一次详细磁盘统计

系统资源限制临时调整

bash

ulimit -n 65535                   # 临时调整文件描述符限制
ulimit -u 1024                    # 调整最大用户进程数

五、Linux命令速查表

5.1 常用快捷键

快捷键

功能描述

Tab

自动补全命令/文件名

Ctrl+C

终止当前命令

Ctrl+Z

暂停当前命令(fg恢复)

Ctrl+D

退出当前shell

Ctrl+L

清屏

Ctrl+R

搜索命令历史

!!

重复上一条命令

!$

获取上一条命令的最后一个参数

5.2 必备命令分类汇总

命令类型

常用命令

文件管理

ls, cd, pwd, mkdir, rm, cp, mv, find, tar, gzip

文本处理

cat, more, less, head, tail, grep, sed, awk, vi

系统监控

ps, top, htop, vmstat, iostat, df, du, free

网络操作

ping, ifconfig, ip, netstat, ss, ssh, scp, wget, curl

权限管理

chmod, chown, chgrp, sudo, su, passwd

用户管理

useradd, usermod, userdel, groupadd, groupmod, groups

六、Linux学习资源推荐

  1. 官方文档:各Linux发行版官方文档

  2. 在线教程:Linux中国、菜鸟教程、LinuxTOY

  3. 书籍推荐

    • 《鸟哥的Linux私房菜》

    • 《Linux命令行与shell脚本编程大全》

    • 《Unix/Linux系统管理手册》

  4. 实践平台

    • 虚拟机(VMware/VirtualBox)

    • 云服务器(AWS EC2, 阿里云ECS等)

    • 在线实验平台(如Katacoda, Linux Academy)

通过持续实践这些命令和技巧,你将逐渐掌握Linux系统的强大功能,提高工作效率。记住,熟练掌握Linux的最佳途径是多动手、多尝试、多解决实际问题