你是否有过这样的体验在终端里敲了半天命令结果发现输错了要重新打想批量处理一批文件却不知道怎么写匹配规则想把命令的输出保存下来结果把原文件给覆盖了……这些“低级错误”其实不是你不小心而是因为你还没有掌握终端里那些提升效率、避免翻车的基本功。这篇文章不讲复杂的概念只讲你在日常运维中一定会用到的操作技巧。学完这一篇你的终端操作至少提速 50%。一、命令输入的艺术少敲键盘多干活1. 命令补全Tab 键是你最好的朋友你是不是还在一个字一个字地敲命令和路径其实大部分时候只需要按Tab​ 键就够了。命令补全输入sys然后按 Tab如果系统里只有一个以sys开头的命令比如systemctl它会自动补全如果有多个再按一次 Tab 会列出所有候选。路径补全输入/etc/ng然后按 Tab如果只有一个匹配比如/etc/nginx直接补全否则再次 Tab 列出选项。实操打开终端输入ls /et然后按 Tab看看发生了什么。2. 命令历史找回你刚才执行过的命令有时候你执行了一条很长的命令想再来一次难道要重新敲一遍不用。按↑​ 键可以浏览之前执行过的命令。输入history可以看到所有历史命令及编号。想重新执行第 123 条命令!123。想执行最近一次以ssh开头的命令!ssh。想获取上一条命令的最后一个参数!$或者按Esc后再按.。实操先执行echo hello world然后输入!!再回车你会发现上一条命令又被执行了一次。3. 命令行编辑快捷键别再用退格键慢慢删了快捷键作用Ctrl A跳到行首Ctrl E跳到行尾Ctrl U删除光标左边所有内容Ctrl K删除光标右边所有内容Ctrl W删除光标左边一个单词Ctrl Y粘贴刚刚删除的内容Alt F向右跳一个单词Alt B向左跳一个单词Ctrl L清屏相当于 clearCtrl R反向搜索历史命令输入关键字即可匹配实操输入一条长命令比如systemctl status sshd --no-pager然后依次尝试CtrlA、CtrlE、CtrlU、CtrlY感受一下。二、文件管理创建、复制、移动、删除的正确姿势1. 创建目录mkdir 的隐藏技能你可能知道mkdir dirname创建目录但有两个选项非常实用mkdir -p a/b/c/d自动创建所有不存在的父目录一步到位。mkdir -v dirname显示创建过程的详细信息。mkdir -m 755 dirname创建目录的同时设定权限。实操mkdir -pv /tmp/test/sub1/sub2看看输出。2. 复制文件cp 的安全用法cp是最常用的命令之一但也最容易出错——一不小心就把重要文件覆盖了。交互模式cp -i source dest覆盖前会问你确认。递归复制目录cp -r sourcedir destdir。保留所有属性cp -a source dest相当于-dR --preserveall常用于备份。复制符号链接本身cp -d linkfile dest默认会复制链接指向的目标文件。防翻车口诀不确定时加-i复制目录加-r要备份用-a。3. 移动和重命名mv 的妙用mv既可以移动文件也可以重命名。同样建议加-i防止覆盖mv -i oldname newname # 重命名 mv -i file /tmp/ # 移动到 /tmp 目录4. 删除文件rm 的危险与自救rm是 Linux 上最危险的操作之一尤其是rm -rf /千万别试。安全删除rm -i file逐个确认。删除目录rm -r dir或者更安全的rm -ri dir。强制删除rm -f file不提示直接删。黄金法则在执行rm -rf之前先ls一遍确认路径是否正确。另外养成用trash-cli类似于回收站的习惯可以救命。三、查看文件内容不止 cat 和 less1. 快速查看head 和 tailhead -n 20 file查看文件前 20 行默认 10 行。tail -n 20 file查看文件后 20 行。tail -f file实时追踪文件的新增内容查看日志的神器。按CtrlC退出。实战场景排查故障时tail -f /var/log/syslog可以实时看到新产生的日志。2. 分屏阅读more 和 lessmore file一页一页看按空格翻页看完自动退出。less file更强大支持上下翻页、搜索输入/keyword搜索按n跳到下一个匹配。man命令用的就是 less。3. 查看文件元数据stat 和 touchstat file查看文件的元数据包括大小、权限、三个时间戳Access、Modify、Change。touch file如果文件不存在则创建空文件如果存在则更新它的时间戳为当前时间。touch -d yesterday 14:00 file把时间戳改成昨天下午两点。这在模拟日志时间时很有用。实操touch mytest.txt stat mytest.txt看看输出里三个时间戳的值。四、批量处理文件通配符Glob的力量当你有几十个文件需要操作时一个一个敲名字太傻了。这时候就要用文件名通配符。常用通配符模式含义示例*匹配任意长度任意字符*.log匹配所有.log结尾的文件?匹配任意单个字符file?.txt匹配file1.txt、fileA.txt[abc]匹配方括号内任意一个字符file[123].txt匹配file1.txt、file2.txt、file3.txt[a-z]匹配指定范围[a-z]*.txt匹配以小写字母开头的 txt 文件[^abc]匹配不在方括号内的字符[^0-9]*匹配不以数字开头的文件[[:upper:]]POSIX 字符类匹配大写字母等价于[A-Z]实操先创建几个测试文件touch report{1..5}.log note{A,B,C}.txt然后试试ls *.log、ls report?.log、ls note[A-C].txt。五、数据流处理IO 重定向和管道这是 Linux 运维中最强大的思想之一把命令的输入输出像水管一样连接起来。1. 输出重定向保存结果command file将标准输出覆盖写入文件。command file将标准输出追加写入文件。command 2 file将错误输出重定向到文件。command file将标准输出和错误输出合并重定向。command file 21另一种合并写法注意顺序。防翻车用set -C可以禁止覆盖已有文件防止误操作。需要覆盖时用|。2. 输入重定向从文件读取command file从文件读取输入。tr a-z A-Z file将文件内容从小写转为大写tr命令默认从标准输入读取。3. 管道串联命令的魔法管道用|连接把左边命令的输出作为右边命令的输入。cat /var/log/syslog | grep error | head -20这条命令的意思是读取日志 → 筛选出包含 error 的行 → 只显示前 20 行。实用组合history | grep ssh查找历史中所有 ssh 相关的命令。ls -l /etc | wc -l统计 /etc 下有多少个文件。du -sh /* | sort -rh | head -5找出根目录下占用空间最大的 5 个目录。4. tee一边输出一边保存command | tee file把命令的结果同时显示在屏幕并保存到文件里。调试时特别好用。5. xargs把文本变成命令参数当管道传递的是文本行而你需要把它们作为参数传给另一个命令时用xargsfind /tmp -name *.tmp | xargs rm -f这条命令会找到/tmp下所有.tmp文件然后删除它们。注意xargs默认会把输入按空格或换行分割如果文件名包含空格可能会出错可以用-0配合find ... -print0处理。6. 特殊设备/dev/null这是一个“黑洞”所有写入它的数据都会被丢弃。常用于屏蔽不需要的输出command /dev/null # 安静执行不产生任何输出六、变量的简单认识在 bash 中变量就是一块命名的内存空间。你可以用它来存储值方便复用。nameworld echo Hello, $name # 输出 Hello, world变量的引用方式$name或${name}弱引用变量会被展开。$name强引用原样输出$name字符串。command或$(command)命令替换执行命令并用其输出替换。实操echo Today is $(date)看看输出。七、命令的执行状态每条命令执行后都会返回一个状态码0 表示成功非 0 表示失败。这个状态码保存在特殊变量$?中。ls /nonexist echo $? # 输出非 0表示上一个命令失败了在写脚本时可以通过检查$?来决定下一步操作。八、踩坑经验汇总误删文件永远不要在不确定的情况下执行rm -rf。建议先ls确认或者用mv移到临时目录。管道丢失数据有些命令如grep默认是缓冲输出的可能导致管道下游迟迟收不到数据。可以用--line-buffered选项强制行缓冲。通配符没展开如果文件名里有空格通配符展开后可能被拆成多个参数。尽量用引号包裹变量或用find ... -exec替代。重定向顺序错误command 21 file是错误的正确顺序是command file 21。因为重定向是从左到右解析的。tail -f 看不到新内容如果日志文件被轮替logrotate重命名了tail -f盯着的还是旧文件的 inode不会跟踪新文件。这时要用tail -F大写 F。总结这篇文章涵盖了你在 Linux 终端里最常用的基本功命令补全与历史、文件管理、内容查看、通配符、IO 重定向与管道。这些技能单个看起来都很简单但组合起来威力巨大。