广告

从零基础到实战:Linux命令行基础教程与常用命令详解

1. Linux命令行基础概览

1.1 终端与Shell的关系

终端是人与操作系统沟通的入口,提供文本界面来输入命令和显示输出;常见的终端程序包括 GNOME Terminal、iTerm2、xterm 等。

在终端背后运行的是 Shell,它负责解析用户输入的命令、扩展变量、执行脚本以及管控进程。常用的 Shell 有 bashzsh 等,选择合适的 Shell 能提升工作效率。

1.2 为什么学习命令行

命令行提供了高效且可自动化的工作流,能够通过脚本批量完成重复任务,显著提升生产力。

通过掌握基础命令和管道机制,可以将不同命令组合成强大的工作流,从而实现快速定位问题、处理文本和管理系统的能力。

2. 环境搭建与工具准备

2.1 发行版与包管理器

不同发行版通常使用不同的包管理器来获取软件包,了解所在系统的包管理器是学习命令行的第一步。

在 Debian/Ubuntu 系列中,常用的包管理器是 apt,通过 sudo apt updatesudo apt install <软件名> 等命令安装软件。

# 更新软件包索引
sudo apt update
# 安装 git
sudo apt install -y git

2.2 终端仿真与SSH工具

终端仿真器提供颜色、标签、分屏等方便功能,常见选择包括 GNOME Terminal、iTerm2、Termite 等。

SSH工具用于远程登录另一台主机,常用命令如 ssh user@host;远程拷贝可以使用 scprsync

# 使用 SSH 远程登录
ssh user@remote-host
# 将本地文件拷贝到远端
scp localfile.txt user@remote-host:/path/to/destination/

3. 基本命令与目录结构

3.1 路径与工作目录

当前工作目录通过 pwd查看,输出显示你现在所在的路径。

路径分隔符在类 Unix 系统中使用 /,根目录用 /表示,用户目录通常在 /home/你的用户名 下。

pwd
/home/you

3.2 目录列表与导航

列出当前目录内容最常用的命令是 ls,加上参数可以显示更详细信息。

切换工作目录使用 cd,结合相对路径和绝对路径可以快速定位到目标目录。

ls -la
cd /var/log
cd ../tmp

3.3 文件创建与删除

创建空文件可以使用 touch;创建并打开的方式也可以结合编辑器完成。

删除文件与目录需要小心,使用 rm 删除文件,删除目录时需要加选项如 rm -r

touch newfile.txt
rm oldfile.txt
rm -r olddir

4. 文件与文本处理命令

4.1 文件权限与所有权

权限分为读/写/执行,通过 ls -l 可以看到权限位。

修改权限可以使用 chmod,改变不同用户组的访问级别。

ls -l script.sh
chmod +x script.sh

4.2 文本过滤与查找

文本过滤常用工具是 grep,用于在文件中搜索匹配的文本模式。

多条件筛选可以结合 grep -Eawksed 实现复杂筛选。

grep -n "ERROR" /var/log/syslog
grep -E "error|warning" logfile.txt

4.3 文本替换与编辑

简单替换可以用 sed,如就地替换字符串。

批量替换常与管道结合,形成强大的文本处理链。

sed -i 's/old/new/g' filename.txt
cat filename.txt | sed 's/foo/bar/g' | sort

5. 进程、系统信息与性能

5.1 进程查看与控制

查看进程的基础命令是 ps,结合 aux可以查看系统中所有进程信息。

管理前前台进程可以使用 killkillall,也可以使用更友好的工具如 htop(需要安装)。

ps aux | grep nginx
kill -TERM 1234

5.2 系统资源查看

系统信息可以通过 uname -auptimedf -hfree -h 来获取。

性能监控常用命令包括 topiotopvmstat

uptime
df -h
free -h

5.3 常用监控工具

网络负载与资源的监控可以使用 sar(sysstat 包的一部分)来汇总统计信息。

快速排错时,journalctl(对系统日志查看)与 dmesg(内核日志)非常有用。

sar -u 1 3
journalctl -xe
dmesg | tail -n 50

6. 重定向、管道与脚本编写

6.1 重定向与管道

输出重定向将命令输出保存到文件,例如 ls -la > listing.txt

管道将一个命令的输出作为下一个命令的输入,实现数据流的连接。

ls -la | grep "^d" | wc -l
grep "pattern" logfile | sort | uniq -c | sort -nr

6.2 简单脚本示例

脚本是将一组命令自动化执行的文件,通常以 #!/bin/bash 开头。

编写可执行脚本后,需要赋予执行权限并直接运行。

#!/bin/bash
# 简单问候脚本
echo "Hello, Linux scripting!"
chmod +x greet.sh
./greet.sh

7. 网络相关命令与远程访问

7.1 诊断网络连接

网络连通性可以用 pingtraceroutetracepath

端口与服务状态可使用 nc(netcat)进行探测,或 ssnetstat 查看连接状态。

ping -c 4 example.com
ss -tulpen | grep 80

7.2 远程连接与文件传输

SSH是最常用的远程登录方式,随着密钥认证也越来越安全。

文件传输可以使用 scprsync,适合跨主机备份与同步。

ssh user@remote-host
scp localfile.txt user@remote-host:/path/to/destination/
rsync -avz /local/dir/ user@remote-host:/remote/dir/

8. 实战练习:从零基础到实战的练习清单

8.1 小练习题目

练习目标包括创建目录、搜索日志、提炼关键信息等,帮助巩固基础。

在练习中务必熟悉 命令组合、输出查看与文件管理的基本技巧。

8.2 实战小项目

项目一:每日备份脚本,将指定目录打包后保存到备份目录,并记录时间戳。

以下示例展示一个简化版本,包含注释与可执行脚本的写法:

#!/bin/bash
# 每日备份脚本示例
SRC="/home/user/data"
DST="/home/user/backup"
DATE=$(date +%F-%H%M)
tar czf "$DST/backup-$DATE.tar.gz" -C "$SRC" .
echo "Backup completed: $DST/backup-$DATE.tar.gz"

项目二:日志筛选与汇总,从系统日志中筛选出最近一天的错误信息并统计数量。

从零基础到实战:Linux命令行基础教程与常用命令详解

步骤包括定位日志文件、使用 grep 过滤、用 wc -l 统计数量,以及用 sort/uniq 汇总。

grep -i "error" /var/log/syslog | grep "$(date +%Y-%m-%d)" | wc -l
grep -i "error" /var/log/syslog | grep "$(date +%Y-%m-%d)" | sort | uniq -c | sort -nr

广告

操作系统标签