简介:本文系统梳理Linux日常运维与开发中最常用的命令,涵盖身份切换、权限管理、文件编辑、用户管理、时间设置、帮助查询与目录操作等核心场景。通过原理讲解与代码示例,帮助读者构建清晰的命令知识体系,掌握高效、安全的操作方式,提升终端环境下的工作效率与问题排查能力。
在服务器运维、后端开发与日常终端操作中,Linux 命令行始终是最核心的生产力工具。与图形界面相比,命令行的优势在于可组合、可脚本化、可远程执行,并且对系统资源的占用极低。本文将围绕身份与权限、文件编辑、用户管理、文件与目录操作、时间管理、帮助系统等主题,系统梳理常用命令的用法、原理与注意事项,帮助读者从“会用”走向“用对、用好”。
任何命令的执行都离不开“当前用户是谁”这一前提。理解身份与权限模型,是安全操作的第一步。
id 命令用于显示当前用户的身份信息,包括用户 ID(UID)、组 ID(GID)以及所属的附加组。
id# 输出示例:uid=1000(dev) gid=1000(dev) groups=1000(dev),27(sudo)
在排查权限问题时,第一步通常是执行 id,确认当前用户是否属于某个特权组。很多“权限不足”的报错,根源就在于当前用户未加入目标组。
pwd(print working directory)用于打印当前所在目录的绝对路径。在编写脚本或执行相对路径操作前,明确工作目录可以避免大量“文件找不到”的低级错误。
pwd# 输出示例:/home/dev/projects
su(switch user)用于切换用户身份,默认切换到 root,切换后需要输入目标用户的密码。而 sudo 则以当前用户身份、临时借用目标用户的权限执行单条命令,通常只需输入当前用户自己的密码。
su - root # 切换到 root 并加载其环境sudo systemctl restart nginx # 以 root 权限执行单条命令
sudo 的授权规则集中在配置文件中,一条典型规则如下:
用户名 ALL=(ALL) ALL
这三段配置分别表示:允许从任何终端或主机访问;允许以任何用户身份执行命令;允许执行所有命令。理解这三层含义,有助于在企业环境中按最小权限原则精细化配置授权,避免“一刀切”带来的安全风险。实际使用中,建议为不同角色分配不同的命令白名单,而非直接授予全部权限。
vim 是终端环境下最常用的文本编辑器之一,其核心特点是“模式化编辑”。
vim filename
启动后默认处于普通模式。按下小写字母 i 进入插入模式,此时可以正常输入内容。编辑完成后按 Esc 返回普通模式,再输入 : 进入命令模式:
:wq:保存并退出;:q:未修改时退出;:q!:强制退出,放弃修改。初学者最常遇到的困惑是“按了键却没反应”,这通常是因为当前处于普通模式而非插入模式。养成“先看模式、再操作”的习惯,可以显著降低误操作概率。对于配置文件修改,建议先备份再编辑,例如 cp config.conf config.conf.bak,以便在出错时快速回滚。
useradd username # 创建用户userdel username # 删除用户
创建用户时,系统会在 /etc/passwd 中写入账户信息,在 /etc/shadow 中记录密码相关字段,并可能创建同名家目录。查看系统内所有用户,可以读取:
cat /etc/passwd
该文件每行以冒号分隔,依次包含用户名、密码占位符、UID、GID、描述信息、家目录与登录 Shell。需要强调的是,删除用户时若希望同时清理其家目录,应使用对应选项,否则可能残留文件;而在生产环境中,直接删除用户前应先确认其进程、定时任务与文件归属,避免影响正在运行的服务。
ls # 简单列出ls -l # 长格式,显示权限、属主、大小、时间ls -ld dir # 查看目录本身的信息,而非其内容ls -a # 显示以 . 开头的隐藏文件
需要注意,ls -ld 与 ls -l 的差别在于前者针对目录自身,后者列出目录内部条目。多个命令可以用 ; 隔开顺序执行,例如 pwd; ls -l,这在临时组合操作时非常方便。
du -sh *
-s 表示为每个参数只输出总计,-h 表示以人类可读格式(如 1K、234M、2G)展示。在磁盘告警排查中,du -sh * 能快速定位占用空间最大的目录,是运维人员的常用手段。若目录层级较深,可结合排序命令按大小排列,进一步提高定位效率。
touch newfile.txt # 创建空文件或更新文件时间戳cd # 不带参数,进入当前用户家目录cd - # 返回上一次所在目录cd ~ # ~ 代表用户家目录
cd - 在多个目录间来回切换时极为高效,相当于终端里的“后退”按钮。而 ~ 的展开由 Shell 完成,理解这一点有助于在脚本中正确书写路径。
date '+%F %H:%M:%S' # 按指定格式显示时间date -s '2020-11-28 14:17:20' # 设置系统时间
date 支持丰富的格式化占位符,%F 等价于 %Y-%m-%d,%H:%M:%S 表示时分秒。在日志分析、定时任务与时间戳转换场景中,灵活使用格式化输出可以大幅提升效率。需要注意的是,修改系统时间通常需要管理员权限,且在启用时间同步服务的环境中,手动设置可能被同步机制覆盖,因此应优先通过时间同步方案保证一致性。
whatis date # 简要说明命令用途which date # 显示命令对应的可执行文件路径date --help # 查看简要帮助man date # 查看完整手册info date # 查看信息文档
在命令语法说明中,[] 表示参数可选,<> 表示必须传递,否则执行会报错。man 与 info 都会进入阅读模式,退出时按 q 返回命令行。
man 的浏览操作包括:方向键逐行滚动,空格键按页向下,PageUp 按页向上;输入 / 后键入关键词并回车可进行查找,再用 N 在匹配项之间上下跳转。熟练掌握这些操作,可以让查阅手册的速度提升数倍。
alias 用于为常用命令设置别名:
alias ll='ls -l'alias
仅输入 alias 会列出当前所有别名。别名的生效范围通常仅限于当前会话,若希望每次登录自动生效,可将定义写入用户级或系统级的 Shell 配置文件中。合理使用别名可以减少重复输入、统一团队操作习惯,但也要避免过度使用导致脚本可读性下降——在正式脚本中,建议使用完整命令而非依赖别名。
Linux 命令的学习并非死记硬背,而是理解其背后的模型:身份与权限决定“能不能做”,路径与目录决定“对谁做”,帮助系统决定“怎么做”。将 id、pwd、sudo、ls、du、man 等基础命令组合起来,就能覆盖绝大多数日常场景。建议读者在练习环境中反复操作,并逐步把这些命令沉淀为脚本与别名,最终形成属于自己的高效工作流。