Linux命令备忘录:从文件操作到进程管理的核心命令精讲
1. 从“黑窗口”到“老朋友”为什么你需要一份自己的Linux命令备忘录如果你刚接触Linux面对那个只有光标闪烁的黑色终端窗口是不是感觉有点无从下手或者你已经用了一段时间但每次想改个文件权限、查个进程还是得去网上搜半天命令别担心这种感觉每个Linux用户都经历过。Linux命令行这个看似冰冷、由字母和符号组成的工具集其实是与系统深度对话的桥梁。它不像图形界面那样直观但一旦掌握其高效、精准和强大的能力会让你再也回不去。我刚开始用Linux那会儿也是把各种命令写在便利贴上贴满显示器边框。后来发现零散的笔记效率太低真正有用的是一套自己整理、理解透彻的“内功心法”。这份合集就是我结合多年运维和开发经验从海量命令中提炼出的“最高频”核心。它不追求大而全而是聚焦于那些你几乎每天都会用到的操作并解释清楚每个命令“为什么”要这么用以及背后可能踩到的“坑”。无论你是需要部署服务的后端开发者管理服务器的运维工程师还是单纯想更高效使用电脑的极客这份指南都能帮你把Linux终端从“陌生工具”变成“得力助手”。我们不仅讲命令怎么敲更会深入文件系统结构、权限设计哲学和进程管理逻辑让你知其然更知其所以然。2. 基石认知理解Linux的“世界观”与核心结构在挥舞命令这把“利剑”之前我们必须先了解它运行的“战场”——Linux操作系统本身的设计哲学。这绝非枯燥的理论而是理解后续所有操作的基础。2.1 操作系统的角色不只是软件更是资源大管家通常我们说装个软件比如浏览器、办公套件它们是在一个已经搭建好的平台上运行。而操作系统OS就是这个平台的奠基者和总调度。你可以把它想象成一个超级智能的写字楼物业管理系统。硬件CPU、内存、硬盘、网卡是这栋楼里的电梯、供电、网络管线等基础设施。操作系统物业系统负责资源分配与管理决定哪个程序租户能用多少CPU时间电梯时长、多大内存办公面积、硬盘空间仓库。提供统一接口为所有软件租户提供一套标准的用水、用电、网络接口系统调用让软件开发者不用关心底层硬件是“柴油发电机”还是“国家电网”。抽象与隔离让每个程序都感觉自己独享CPU和内存互不干扰就像给每个租户提供了独立的、安全的办公单元。Linux是众多OS中的一种以其开源、稳定、高效和安全著称尤其在全球的服务器领域占据绝对主导地位。它的强大很大程度上源于其清晰、严谨的设计结构。2.2 Linux文件系统一切皆文件的哲学与核心目录解析Linux有一个著名设计哲学一切皆文件。这不仅仅是文本、图片硬件设备如U盘、打印机、进程信息、网络连接甚至系统状态都被抽象成“文件”放在目录树中。这种统一用“打开、读取、写入、关闭”来操作一切的方式极大地简化了设计。而这一切的起点就是根目录/。下面这张表梳理了最核心的几个目录及其用途理解它们是你不会在系统里“迷路”的关键目录路径英文全称/含义核心用途与典型内容操作注意事项/根目录整个文件系统的起点所有其他目录的父目录。切忌随意删除根目录下的任何你不完全理解的目录。/binBinary存放系统最基础的命令二进制可执行文件如ls,cp,bash。这些命令在单用户维护模式无法挂载其他分区时也必须可用。普通用户可执行但不应在此目录存放个人脚本。/etcEtcetera(历史原因)系统配置文件的集中地。如网络配置 (/etc/network/)、用户信息 (/etc/passwd)、软件源 (/etc/apt/sources.list)。修改前务必备份这里的文件决定了系统的行为。/home用户家目录每个普通用户都有一个以自己用户名命名的子目录如/home/zhangsan用于存放个人文档、配置文件、桌面设置等。用户的“主战场”拥有最高自由度。系统盘空间告急时常检查这里的大文件。/root超级用户家目录系统管理员root用户的个人目录。普通用户无权访问。避免在root目录下进行日常操作以防误操作。/varVariable存放经常变化的数据。如日志文件 (/var/log/)、邮件队列、网站数据 (/var/www/)、缓存文件。此目录内容增长很快是磁盘空间监控的重点区域。/tmpTemporary临时文件目录所有用户都可读写。系统重启后里面的文件通常会被清除。适合存放进程间通信的临时文件不要放重要数据。/devDevice设备文件目录。硬盘 (/dev/sda)、终端 (/dev/tty)、空设备 (/dev/null) 都以文件形式存在。直接向某些设备文件写入数据等同于操作硬件需格外小心。/procProcess虚拟文件系统存在于内存中是内核和进程信息的接口。通过读取如/proc/cpuinfoCPU信息、/proc/meminfo内存信息、/proc/[PID]/某个进程详情来获取实时系统状态。这里的“文件”大小常显示为0用cat或less查看其内容。/usrUnix System Resources次级层次结构存放用户安装的应用程序、库文件、文档等。可理解为“用户软件资源库”。其下也有/usr/bin非基础命令、/usr/lib库文件等。大多数通过包管理器安装的软件都在这里。注意不同的Linux发行版如Ubuntu, CentOS目录结构可能略有差异但核心目录的用途基本一致。理解/etc管配置、/home管个人、/var管变化、/proc管状态就能把握住脉络。3. 生存必备文件与目录操作命令精讲现在我们进入实战环节。文件与目录操作是使用Linux的日常以下命令的熟练程度直接决定了你的效率。3.1 导航与查看弄清楚“我在哪”和“这里有什么”pwd(Print Working Directory)这是你的“GPS”。在复杂的目录树中穿梭时随时用pwd确认当前绝对路径。cd(Change Directory)切换目录的“传送门”。cd /path/to/dir切换到绝对路径。cd dir或cd ./dir切换到当前目录下的子目录相对路径。cd ..返回上一级目录。两个点 (..) 代表父目录这是一个关键概念。cd ~或直接cd快速回到当前用户的家目录。cd -在最近两次所在目录之间快速切换非常实用。ls(List)列出目录内容使用频率最高的命令之一。ls简单列出文件名隐藏文件不显示。ls -l长格式列表显示详细信息权限、所有者、大小、修改时间。-l是必须掌握的参数。ls -a显示所有文件包括以点.开头的隐藏文件如.bashrc配置文件。ls -la或ls -l -a结合上述两者最常用的查看方式。ls -lh-h参数使文件大小以人类可读的形式K, M, G显示配合-l使用 (ls -lh) 体验更佳。3.2 创建、删除与操作塑造你的文件世界mkdir(Make Directory)创建目录。mkdir new_dir创建单个目录。mkdir -p a/b/c/d递归创建多级目录。如果a不存在它会自动创建a再在a下创建b以此类推。这是避免“目录不存在”错误的利器。rmdir(Remove Directory)删除空目录。rmdir empty_dir。如果目录非空此命令会失败。rm(Remove)删除文件或目录。这是最危险的命令之一请谨慎使用rm file.txt删除文件。rm -r directory/递归删除目录及其内部所有内容。-r(recursive) 是关键。rm -rf directory/在递归删除基础上-f(force) 表示强制删除不进行任何确认提示。rm -rf /这样的命令会毁灭整个系统需要root权限但极其危险。强烈建议新手永远不要养成使用-f的习惯先使用-ri。rm -ri directory/-i(interactive) 在删除每个文件前交互式询问-r递归。这是相对安全的做法。cp(Copy)复制。cp source.txt dest.txt复制文件。cp -r source_dir/ dest_dir/递归复制整个目录。cp -i source.txt dest/-i在覆盖目标前提示确认防止误覆盖重要文件。mv(Move)移动或重命名。它在同一文件系统内是“重命名”操作速度极快跨文件系统则相当于“复制删除”。mv old_name.txt new_name.txt重命名文件。mv file.txt /path/to/dir/将文件移动到目标目录。mv dir1/ dir2/如果dir2存在则将dir1移动到dir2内如果dir2不存在则将dir1重命名为dir2。touch主要功能是更新文件的时间戳访问和修改时间。如果文件不存在则创建一个空文件。常用于触发某些依赖时间戳的构建工具或快速创建空文件。3.3 文件内容查看与编辑从阅读到修改cat(Concatenate)连接文件并打印到标准输出。适合查看内容较少的文本文件。cat file.txt查看文件全部内容。cat file1.txt file2.txt依次显示多个文件内容。cat newfile.txt从键盘输入创建新文件按CtrlD结束输入。不常用因为有更好的编辑器。less/more分页查看器用于查看大文件。less比more功能更强支持上下翻页、搜索等是事实上的标准。less huge_log.log进入浏览模式。常用操作空格键向下翻页b键向上翻页/keyword搜索q键退出。head/tail查看文件开头或结尾部分。head -n 20 file.log查看文件前20行。tail -n 30 file.log查看文件末尾30行。tail -f app.log动态追踪文件末尾。这个命令在实时查看日志时无比重要它会持续显示文件新增的内容直到你按CtrlC中断。vi/vim强大的终端文本编辑器。学习曲线陡峭但一旦掌握效率倍增。它有三种模式普通模式 (Normal Mode)刚打开文件时进入。此模式下按键是命令如dd删除整行yy复制整行p粘贴/搜索。插入模式 (Insert Mode)在普通模式下按i(insert)、a(append)、o(open new line) 等键进入。此时可以像普通编辑器一样输入文本。命令行模式 (Command-Line Mode)在普通模式下按:进入。可以执行保存、退出等命令。:w保存:q退出:wq保存并退出:q!不保存强制退出。初学者可以先记住按i开始编辑编辑完后按Esc回到普通模式再输入:wq回车保存退出。实操心得对于文件删除我的血泪教训是永远先ls确认一下目标路径再用rm。尤其是在使用通配符*时rm *.log和rm * .log多了一个空格是天壤之别。建议为rm设置别名到rm -i在~/.bashrc中加入alias rmrm -i增加一道安全锁。4. 权限与用户管理理解Linux的安全基石Linux是一个多用户系统精密的权限机制是其安全性的核心。不理解权限你会在执行命令时频繁遇到“Permission denied”。4.1 用户与用户组权限的归属体系用户 (User)系统资源的最终使用者。每个用户有唯一的用户名和UID用户ID。root用户是超级管理员UID为0拥有至高无上的权限。用户组 (Group)用户的集合。方便对一组用户进行统一的权限分配。每个组有唯一的GID组ID。创建用户时系统会默认创建一个同名的私有组。相关命令whoami查看当前登录的用户名。id [username]查看指定用户或自己的UID、GID及所属组列表。groups [username]查看用户属于哪些组。su - username切换用户。-符号代表使用目标用户的完整环境如自己的bash配置。从普通用户切换至root需要输入root密码而root切换至任何用户都无需密码。sudo command以超级用户权限执行一条命令。需要当前用户在sudoers配置列表中。比直接切换到root更安全、更推荐。useradd/usermod/userdel添加、修改、删除用户通常需要root权限。passwd [username]修改用户密码。普通用户只能修改自己的密码。4.2 文件权限详解rwx与数字表示法使用ls -l查看文件详情时第一列就是权限信息如-rwxr-xr--。第一个字符-表示普通文件d表示目录l表示链接文件。后面9个字符每3个一组分别代表前3位文件所有者 (Owner)的权限。中3位文件所属用户组 (Group)的权限。后3位其他用户 (Others)的权限。每组中的三个字符依次表示r(Read)读权限。对文件是可查看内容对目录是可列出内容ls。w(Write)写权限。对文件是可修改对目录是可创建/删除文件。x(Execute)执行权限。对文件是可作为程序运行对目录是可进入cd。权限的数字表示法将rwx看作二进制位有权限为1无为0。r-- 100 (二进制) 4 (十进制)-w- 010 2--x 001 1rwx 111 7 (421)r-x 101 5 (41)因此rwxr-xr--用数字表示就是754所有者7组5其他4。4.3 权限修改命令chmod与chownchmod(Change Mode)修改文件权限。数字模式最常用chmod 755 script.sh。将script.sh设置为所有者可读可写可执行(7)组用户可读可执行(5)其他用户可读可执行(5)。这是可执行脚本的常见权限。符号模式chmod ux,g-w,or file.txt。u(user/所有者)增加执行权限g(group)去掉写权限o(others)设置为只读。更灵活但稍复杂。chown(Change Owner)修改文件的所有者和所属组。chown user:group file.txt将文件所有者和组都修改。chown user file.txt仅修改所有者。chown :group file.txt仅修改所属组。通常需要root权限才能执行此命令。注意事项给目录赋予x权限是进入该目录的前提。一个常见的坑是目录只有r权限时你可以ls看到文件名但无法cd进入也无法访问目录内的文件属性。目录的w权限意味着可以在其中创建和删除文件即使你对文件本身没有写权限。这有时会导致奇怪的现象你无法修改一个文件却可以删除它如果它的父目录你有w权限。5. 进程管理与系统窥探掌控运行中的系统程序是静态的指令集而进程是程序的一次动态执行。管理进程就是管理正在运行的任务。5.1 进程查看ps与topps(Process Status)查看进程快照。ps aux最常用的组合之一。a显示所有用户进程u显示详细格式包括用户、CPU、内存等x显示没有控制终端的进程如后台服务。ps -ef另一种常用格式显示全格式列表包含PPID父进程ID。通常结合grep过滤ps aux | grep nginx查找所有包含“nginx”的进程。top/htop动态、交互式查看进程和系统资源占用CPU、内存。htop是top的增强版界面更友好支持鼠标操作强烈建议安装使用。在top界面中按q退出按k可以杀死指定PID的进程。5.2 进程控制kill与前后台作业kill向进程发送信号。默认发送SIGTERM(15)即终止信号允许进程进行清理工作。kill PID优雅地终止进程。kill -9 PID发送SIGKILL(9) 信号强制立即终止进程。这是“杀手锏”进程无法捕获或忽略可能导致数据丢失或状态不一致应在kill无效时使用。killall process_name根据进程名杀死所有同名进程。前后台作业控制command 在命令末尾加让命令在后台运行。Ctrl Z将当前前台运行的程序暂停并放入后台。jobs查看当前shell的后台作业列表。fg %n将后台第n号作业调至前台继续运行。bg %n让后台第n号暂停的作业在后台继续运行。nohup让进程在用户退出登录后仍继续运行并且忽略挂断信号。nohup your_command output.log 21 这是启动一个持久化后台服务的经典命令组合。nohup免疫挂断。your_command你要运行的程序。 output.log将标准输出重定向到output.log文件。21将标准错误 (2) 也重定向到标准输出 (1) 所在的地方即同一个日志文件。放入后台运行。5.3 系统状态与信息查询df -h查看磁盘空间使用情况。-h参数使结果易读。du -sh [目录]查看指定目录的磁盘使用总量。-s显示总计-h易读。free -h查看内存使用情况。uname -a查看系统内核信息内核版本、主机名等。which command查看某个命令的完整安装路径。例如which python。man command查看命令的官方手册是最权威的文档。按q退出。6. 软件安装与管理三大派系的包管理器在Linux上安装软件不同于Windows的“下一步”安装主要通过包管理器。这能自动解决依赖关系是Linux生态的一大优势。6.1 安装方式概览源码编译安装 (tar.gz)最原始、最灵活的方式。通常步骤是./configure配置-make编译-make install安装。能获得最佳性能和控制但过程繁琐依赖需手动解决。包管理器安装主流方式分为两大阵营Debian/Ubuntu 系使用apt(Advanced Package Tool)。命令如apt update,apt install package_name。RHEL/CentOS/Fedora 系使用yum(Yellowdog Updater Modified) 或新一代的dnf。命令如yum install package_name。RPM/DEB包直接安装下载.rpm(Red Hat系) 或.deb(Debian系) 包文件用rpm -i或dpkg -i安装。但不会自动处理依赖不推荐新手。6.2 核心命令详解以CentOS的yum和Ubuntu的apt为例对于基于RPM的发行版如CentOSyum search keyword搜索软件包。yum install package_name安装软件包及其所有依赖。yum update package_name更新指定软件包。yum update更新所有可更新的软件包系统升级。yum remove package_name卸载软件包保留配置文件。yum erase package_name卸载软件包及其配置文件。rpm -qa | grep package_name查询某个包是否已安装。rpm -ql package_name查询某个已安装包的文件都装到了哪里。对于基于DEB的发行版如Ubuntuapt update更新本地软件包索引从服务器获取可用软件包列表。这是安装前的好习惯。apt search keyword搜索软件包。apt install package_name安装软件包。apt upgrade升级所有已安装的包不处理依赖关系的改变。apt full-upgrade执行更智能的升级可能会处理依赖关系的变更如删除旧包。apt remove package_name卸载软件包保留配置文件。apt purge package_name卸载软件包及其配置文件。dpkg -l | grep package_name查询是否安装。dpkg -L package_name列出已安装包的文件清单。实操心得在服务器上安装软件尤其是生产环境务必注意版本。直接yum install nginx安装的可能是很旧的稳定版。如果需要新版通常需要先添加官方的软件源Repository。例如安装新版Nginx需要先执行yum install epel-release安装EPEL扩展源或添加Nginx官方源。这个“配置软件源”的步骤是新手常遇到的第一个坎。7. 网络与连接让系统与世界沟通Linux服务器的大部分工作都离不开网络。7.1 网络配置与诊断ifconfig或ip addr查看网络接口配置IP地址、MAC地址等。ifconfig是传统命令ip命令更强大是现代推荐的工具。ping host测试与目标主机域名或IP的网络连通性。-c参数可指定发送次数如ping -c 4 google.com。netstat或ss查看网络连接、路由表、接口统计等信息。ss是netstat的现代替代品速度更快。ss -tlnp查看所有监听的TCP端口以及对应的进程。-tTCP,-l监听,-n数字显示,-p显示进程。curl与wget命令行下载工具或HTTP客户端。curl -O http://example.com/file.tar.gz下载文件。curl -I http://example.com仅获取HTTP响应头常用于检查网站状态。wget http://example.com/file.tar.gz下载文件支持断点续传。7.2 远程连接SSHSSH (Secure Shell) 是远程安全登录和管理Linux服务器的标准协议。连接服务器ssh usernameremote_server_ip例如ssh root192.168.1.100。指定端口如果服务器SSH服务不在默认的22端口使用-p参数ssh -p 2222 userhost。使用密钥登录免密码更安全本地生成密钥对ssh-keygen -t rsa一直回车即可默认保存在~/.ssh/id_rsa和~/.ssh/id_rsa.pub。将公钥上传到服务器ssh-copy-id userhost。这会将你的公钥添加到服务器的~/.ssh/authorized_keys文件中。之后登录就不再需要输入密码。管理SSH服务(通常需要root权限)systemctl start sshd启动服务。systemctl stop sshd停止服务。systemctl restart sshd重启服务。systemctl status sshd查看服务状态。8. 文本处理三剑客grep, sed, awk这是三个功能极其强大的流式文本处理工具是Shell脚本和日常文本分析的灵魂。grep(Global Regular Expression Print)按行过滤文本搜索匹配模式的行。grep error logfile在文件中搜索包含“error”的行。grep -r function_name /path/to/code/递归搜索目录下所有文件。grep -v exclude_word file-v反向选择输出不包含模式的行。grep -E pattern1|pattern2 file使用扩展正则表达式。sed(Stream Editor)流编辑器用于对文本进行替换、删除、插入等操作。sed s/old/new/g file将文件中所有的“old”替换为“new”。s表示替换g表示全局。sed -i.bak s/old/new/g file-i直接修改原文件.bak会先创建一个备份文件。sed /pattern/d file删除匹配模式的行。awk一门强大的文本分析语言擅长处理按列结构化的文本如CSV、日志。awk {print $1, $3} data.txt打印文件的第一列和第三列默认以空格或制表符分隔。awk -F, {print $2} data.csv-F指定分隔符为逗号打印第二列。awk $3 100 {print $0} data.txt如果第三列的值大于100则打印整行 ($0)。awk BEGIN{sum0} {sum$1} END{print sum} numbers.txt计算第一列的总和。掌握这三个工具的组合可以让你在命令行中完成大部分简单的文本数据分析工作效率远超手动操作或导入其他软件。9. 高效工作流组合命令与实用技巧真正的Linux高手善于将简单的命令通过管道 (|)、重定向 (,) 和后台运行 () 组合起来形成高效的工作流。管道|将一个命令的输出作为另一个命令的输入。ps aux | grep python先列出所有进程然后过滤出包含“python”的行。cat logfile | grep ERROR | wc -l查看日志文件中“ERROR”出现的行数。wc -l统计行数。重定向command file将命令的标准输出重定向到文件覆盖原文件。command file将命令的标准输出重定向到文件追加到文件末尾。command 2 error.log将命令的标准错误重定向到文件。command output.log 21将标准输出和标准错误都重定向到同一个文件。这是记录命令完整输出的常用方法。命令替换 或$()将一个命令的输出作为另一个命令的参数。echo Today is $(date)date命令的输出被嵌入到echo的字符串中。tar -czf backup_$(date %Y%m%d).tar.gz /path/to/backup用当前日期动态生成备份文件名。通配符*匹配任意多个字符。rm *.tmp删除所有.tmp结尾的文件。?匹配单个字符。ls file?.txt匹配file1.txt,fileA.txt。[abc]匹配括号内的任意一个字符。ls file[123].txt匹配file1.txt,file2.txt,file3.txt。历史与补全history查看命令历史记录。!number执行历史记录中第number条命令。!!执行上一条命令。Ctrl R反向搜索历史命令输入关键词即可查找。Tab键命令/文件名补全按一次自动补全按两次显示所有可能选项。最后也是最重要的习惯善用man和--help。当你不确定一个命令的用法时man command或command --help是你最好的老师。这份合集是你探索Linux世界的起点和速查手册但官方手册才是终极的权威指南。保持好奇心多动手实践很快你就会发现这个黑色的终端窗口是你掌控数字世界最强大的武器。