Ubuntu 运维系列 | 第 3 天:命令行基础——运维必会的高效命令与技巧

在 Ubuntu 服务器运维的世界里,命令行(Command Line Interface,CLI)是每一位运维工程师的”母语”。图形界面虽然直观,但在服务器场景下往往并不存在;而一条精确的命令,往往比十次鼠标点击更高效、更可复现。今天这一讲,我们将系统梳理 Ubuntu 命令行环境的基础知识,从终端、Shell 与 Bash 的关系讲起,带你掌握最常用的文件、目录、文本处理命令,以及那些能显著提升效率的技巧。打好命令行基础,是后续用户权限、进程管理、日志分析等全部高级话题的地基。

Ubuntu 运维 第3天

一、核心概念:终端、Shell 与 Bash

要熟练使用命令行,首先需要厘清三个容易混淆的概念:终端(Terminal)、Shell 和 Bash。

终端(Terminal) 本质上是用户与系统交互的”窗口”,早期指物理的电传打字机终端,如今则多指图形界面中的终端模拟器(如 GNOME Terminal、Konsole、以及 SSH 登录后的伪终端)。它负责接收你的键盘输入、显示命令输出,本身并不解释命令。

Shell 是真正解释并执行命令的程序,它是用户与操作系统内核之间的”翻译官”。你在终端里敲下的 ls -l,最终是由 Shell 解析后交给内核去执行的。Ubuntu 默认的 Shell 是 Bash(Bourne Again SHell),此外还有 Zsh、Fish 等备选。

我们可以用下面的命令查看当前用户默认使用的是什么 Shell:

echo $SHELL
# 输出通常是 /bin/bash

Shell 还支持变量、通配符、重定向、管道等特性,这些都是提升效率的关键,我们会在后面的实战步骤中逐一体会。

二、实战步骤:从目录操作到文本处理

2.1 目录与文件的基础操作

运维日常使用频率最高的一组命令,当属目录与文件的浏览、创建、复制、移动与删除。下面这段命令演示了完整的操作流程:

# 查看当前所在目录
pwd
# 列出目录内容(含隐藏文件、人类可读的大小)
ls -lah
# 创建多层目录
mkdir -p /data/logs/nginx
# 复制文件并保留属性
cp -a /etc/nginx/nginx.conf /data/backup/
# 移动或重命名
mv /data/backup/nginx.conf /data/backup/nginx.conf.bak
# 删除空目录
rmdir /data/tmp_empty

需要特别提醒的是:rm 命令删除后通常无法恢复,务必慎用。养成”先 ls 确认、再 rm 执行”的习惯,能避免大量生产事故。

2.2 查看文件内容与文本处理三剑客

服务器日志排查是命令行最典型的应用场景之一。catless 用于查看文件,而 grepawksed 被合称为”文本处理三剑客”,几乎每一个运维问题排查都离不开它们:

# 查看文件全部内容(小文件)
cat /etc/hostname
# 分页查看大文件,支持搜索与翻页
less /var/log/syslog
# 过滤出包含 error 的行,忽略大小写并显示行号
grep -in "error" /var/log/syslog
# 提取第 1 列与第 3 列(awk 默认按空白分隔)
awk '{print $1, $3}' /etc/hosts
# 把文件中的 old 批量替换为 new(原地修改)
sed -i 's/old/new/g' /data/app/config.conf

2.3 管道与重定向:让命令协同工作

管道的符号是 |,它把前一个命令的输出作为后一个命令的输入;重定向符 >>> 则把输出写入文件。二者结合,可以串联出强大的”命令流水线”:

# 统计当前目录下 .log 文件的数量
ls /var/log/*.log | wc -l
# 查看占用内存最高的 5 个进程
ps aux --sort=-%mem | head -n 6
# 将历史命令追加写入文件(不覆盖原有内容)
history >> /root/command_history.txt

2.4 别名与历史命令:让重复操作更省力

对于频繁使用的长命令,可以用 alias 设置别名,也可以借助 history 快速找回曾经执行过的命令:

# 设置别名(临时生效)
alias ll='ls -alF'
# 写入配置让其永久生效
echo "alias ll='ls -alF'" >> ~/.bashrc
source ~/.bashrc
# 查找历史命令中包含 ssh 的记录
history | grep ssh

三、常见问题与排错

问题一:命令提示 command not found 这通常表示命令未安装,或该命令所在目录不在 PATH 环境变量中。先用 which 命令名 确认,若为空则考虑通过 apt install 安装,或检查 echo $PATH 是否包含了对应路径。

问题二:普通用户无法执行需要 root 权限的命令。 此时会提示 Permission denied,正确做法是使用 sudo 前缀临时提权,而不是长期以 root 身份登录。我们将在下一讲”用户与权限管理”中详细展开 sudo 的配置。

问题三:管道后面的命令取不到数据。 有些命令(如 find)默认输出格式特殊,直接接 grep 可能不符合预期。此时应先查看原始输出,必要时结合 xargs 或调整参数来适配。

四、总结

今天我们从终端、Shell 与 Bash 的概念入手,梳理了目录文件操作、文本处理三剑客、管道与重定向、别名与历史命令这几大命令行基本功。这些命令是 Ubuntu 运维的”元能力”,后续无论是排查日志、管理进程还是编写脚本,都建立在熟练使用它们的基础之上。建议你把这些命令在测试环境里亲手敲一遍,形成肌肉记忆。

下期预告:第 4 天《用户与权限管理——账号体系、sudo 与文件权限精讲》,我们将深入讲解 Linux 的账号体系与权限模型,帮你把服务器访问安全的第一道门关好。

微信二维码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容