前几篇文章里,我们一起拆解了 Linux 和 Windows 的核心差异,啃完了用户权限体系和文件系统结构这两块硬骨头,也搭好了 VMware 虚拟机和 CentOS 系统。
刚接触 Linux 时,总觉得命令行是冷冰冰、拒人千里的东西,远不如 Windows 图形界面点一点来得安心。但慢慢上手才发现,Linux 的灵魂恰恰就在这黑框框里 —— 我们之前说 Linux 的文件系统像一个规规矩矩的大衣柜,每个格子都有固定用途,而今天要讲的这些基础命令,就是打开衣柜、挪动物品、整理空间的 “钥匙”。
它们没有那么可怕,反而藏着极简又高效的设计哲学,用熟之后,你会发现:原来操作电脑可以这么快,再也不想回头点鼠标找文件夹了!这一篇,我们就从最基础、日常用得最多的文件目录操作命令说起,不堆枯燥参数,只讲实战中真正能用得上的用法,也会穿插入门时踩过的坑、养成的小习惯,陪着大家一步步把命令行用起来,摆脱 “黑屏恐惧”。
先搞懂:我们天天敲命令的 “终端”,到底是什么?
很多新手刚打开虚拟机,面对那个能输入文字、输出内容的黑框窗口,第一反应都是:“这东西到底叫啥?”答案很简单:它就是我们所有操作的载体 —— 终端(Terminal)。
先说说它的含义,终端的本质,是用户与 Linux 操作系统内核之间的交互桥梁,也是一套负责接收输入、展示输出的字符型界面。
我们没办法直接对着系统内核说 “我要打开这个文件夹”“我要复制这个文件”,内核听不懂日常语言,它只认特定指令。而终端,就是我们和内核的 “沟通窗口”:我们把标准化命令输进去,它传递给背后的命令解释器,再把内核的执行结果、报错信息,原原本本地展示给我们。
新手必分清:“终端”“shell”“命令行” 不是一回事! |
•物理终端:最早的终端是实打实的设备。在 Unix 还是大型机的年代,一台主机要连接很多台 “终端机” —— 就是一套键盘 + 显示器,没有自己的计算能力,只能传指令、显结果,也叫控制台。
•虚拟终端/终端模拟器:我们现在用的(CentOS 右键打开的 “Terminal”、Xshell、SecureCRT、Windows Terminal),都是软件模拟的,功能和当年的物理终端一样,日常说的 “终端”,基本都指它。
•shell:运行在终端里的 “命令解释器”。终端是 “话筒和屏幕”,shell 是 “翻译官”,比如我们常用的 bash,就是 shell 的一种,负责把 ls、cd 这些命令,翻译成内核能听懂的语言。
•命令行:就是终端里输入指令的那一行提示符,也就是 “命令行界面(CLI)”,和 Windows 图形界面(GUI)相对,是基于文本指令的交互方式,终端是它的承载载体。
刚开始时,总觉得这个黑框框像电影里黑客用的东西,普通人根本玩不转。但用久了才发现,它是 Linux 里最 “真诚” 的存在 —— 你输对指令,它就给你想要的结果;输错了,它会明明白白告诉你哪里错了,不会像图形界面那样,点了没反应、报错藏在层层菜单里,让你摸不着头脑。
终端的核心作用,到底是什么?
CentOS 也有图形界面,我用鼠标点一点也能操作文件,为什么非要用终端敲命令?
其实这也是我刚学 Linux 时的疑问,直到真正上手做运维、管理服务器,才明白终端的不可替代性 —— 它的核心作用,藏在 Linux 的设计哲学里,也和我们之前讲的 Linux 核心特性完全呼应。
•核心作用一:Linux 系统的 “通用入口”没有终端,就碰不到 Linux 的核心能力。Linux 的优势在服务器、嵌入式、云计算领域,这些场景里的 Linux,99% 都没有图形界面 —— 图形界面会占用大量 CPU、内存,对追求极致性能的服务器来说完全冗余;而且系统核心配置、服务管理、性能调优,最终都要靠终端命令完成。你能在图形界面做的,终端都能做;但终端能实现的复杂功能,图形界面大多做不到。
•核心作用二:极致的操作效率,图形界面比不了举个简单例子:在几百个文件里,找到所有含 “error” 关键词的日志,再复制到备份目录。用图形界面,你要一个个翻文件夹、一个个打开搜索、一个个复制,半小时都未必做完;但在终端里,一条组合命令,几秒钟就能搞定。单个命令看似简单,组合起来就能实现复杂批量操作,这就是终端的最大魅力。
•核心作用三:远程管理服务器的唯一可靠方式运维管理的服务器,大多在千里之外的机房,不可能现场插鼠标键盘操作。这时候,我们通过 SSH 协议,用终端远程连接服务器,不管是 1 台还是 100 台,都能轻松管理。而图形界面远程管理,卡顿、延迟高、不稳定,遇到网络波动就断开,根本没法用于生产环境。
•核心作用四:实现自动化运维,解放双手之前提过的 shell 脚本,执行、调试全靠终端。比如每天凌晨备份数据库、清理过期日志,用图形界面只能手动操作;但在终端里,写个简单脚本、设置定时任务,系统就会自动执行,完全不用人工干预 —— 这也是企业运维几乎全用终端的原因。
终端还有一个最实在的作用:它能逼着你真正理解 Linux 的运行逻辑。用图形界面点鼠标,你只知道 “双击能打开文件夹”,却不知道背后系统做了什么;而在终端里敲 cd、ls,你会一步步明白 “我在目录树的哪个位置”“这个目录里有什么”“文件有什么权限”,把之前学的文件系统、权限知识真正落地,而不是停留在理论上。
讲完终端的“来龙去脉”,接下来我们正式走进命令行的世界 —— 先搞懂命令行的通用规则,再一个个拆解那些日常用得最多的基础命令,新手也能轻松跟上!
开篇必知:先搞懂命令行的 2 个核心规则
规则一:Linux 命令的通用格式
命令 [选项] [参数]
•命令:核心动作,比如查看目录的 ls、切换目录的 cd;
•选项:细化规则,通常以 - 加单个字母(如 ls -l)、-- 加完整单词(如 ls --help),同一个命令搭配不同选项,效果完全不同;
•参数:操作对象,比如文件路径、目录名,告诉系统你要对哪个东西执行命令。
新手最容易踩的坑:命令、选项、参数之间,必须用空格隔开(不管几个空格都可以,但不能没有)!我当初经常把ls -l 写成 ls-l,系统一直报错,找了半天才发现是少了个空格,现在想起来还觉得好笑。 |
规则二:路径的两种写法 —— 绝对路径 vs 相对路径
上一篇说过,Linux 只有一个根目录 /,所有文件都在这个目录树下,路径的写法直接决定你能不能找到文件!
•绝对路径:从根目录 / 开始写的完整路径,比如 /home/qw/test.txt。无论你当前在哪个目录,用绝对路径都能精准找到文件,不会出错;
•相对路径:从你 当前所在的目录 开始写的路径,比如你现在在 /home/qw 目录下,直接写 test.txt,就和/home/qw/test.txt 是同一个文件。
建议:刚开始时,尽量用绝对路径!虽然多敲几个字母,但能最大程度避免 “找不到文件”“误删文件” 的坑,等你对目录结构熟了,再用相对路径提升效率。
第一站:定位与查看 —— 先搞懂 “我在哪,周围有什么”
刚打开终端登录系统,我们最先要解决的三个问题,永远是:“我现在在哪个目录里?”“这个目录里有什么东西?”“我怎么去我想去的目录?”
这三个问题,对应三个最基础的命令:pwd、ls、cd —— 它们是 Linux 文件系统里 “走路” 的基本功,练熟这三个,就能摆脱 “迷路” 困境。
1. pwd:查看当前所在路径
pwd 是 Print Working Directory 的缩写,翻译过来就是 “打印当前工作目录”,作用只有一个:告诉你,你现在站在目录树的哪个位置,输出的是完整的绝对路径。
基础用法
直接敲 pwd 回车,就会输出当前目录的绝对路径,没有任何多余选项,简单到极致。
[qw@localhost ~]$ pwd /home/qw |
这个输出就告诉我们:当前在/home/qw 这个普通用户的家目录里。
避坑小感悟
刚学 Linux 时,特别喜欢用 cd 到处切目录,切着切着就迷路了,不知道自己在哪、怎么回去,急得满头汗。后来养成了一个习惯:每次执行高危操作(比如删除文件)之前,一定会先敲 pwd 确认自己的位置,再用 ls 确认要操作的文件 —— 这个小习惯,帮我避开了无数次误操作。
运维圈里有句话:“三思而后行,操作前先 pwd”,真的不是玩笑话!
2. ls:查看目录里的内容(最常用命令,没有之一)
ls 是 List 的缩写,作用是列出指定目录里的所有文件和子目录。如果说 pwd 是告诉你 “你在哪”,那 ls 就是告诉你 “你周围有什么”,日常使用频率拉满。
基础用法
•直接敲 ls 回车:列出当前目录下的非隐藏文件和目录;
•ls 目录路径:列出指定目录里的内容,比如 ls /etc,就能查看 /etc 目录下的配置文件。
[qw@localhost ~]$ ls test.txtdocumentsdownload |
最常用的选项
ls 的选项很多,但新手不用记全,掌握这几个,就能覆盖 99% 的日常场景:
•-l:以长格式显示内容,会列出文件的权限、所有者、大小、修改时间等详细信息,最常用的选项,没有之一。
[qw@localhost ~]$ ls -l -rw-r--r--. 1 qw qw120 3月 25 14:30 test.txt drwxr-xr-x. 2 qw qw 4096 3月 25 14:31 documents |
衔接之前的知识点:第一列的 -rw-r--r-- 就是我们讲过的 rwx 权限模型,第一个字符 - 代表普通文件,d 代表目录;后面的 qw qw 分别是文件的所有者和所属组。
•-a:显示所有文件,包括隐藏文件(Linux 里以 . 开头的文件都是隐藏文件,默认不显示)。用户家目录里的 .bashrc、.bash_profile 这些环境配置文件,必须用 -a 才能看到。
[qw@localhost ~]$ ls -a ....bashrc.bash_profiletest.txtdocumentsdownload |
小提醒:这里的 . 代表当前目录,.. 代表上一级目录,后面讲cd 时会经常用到。
•-h:以人类可读的格式显示文件大小,默认 ls -l 显示的是字节数,很难直观判断,加了 -h 会自动转换成 KB、MB、GB,必须和 -l 搭配使用。
[qw@localhost ~]$ ls -lh -rw-r--r--. 1 qw qw2.3M 3月 25 14:30 install.log drwxr-xr-x. 2 qw qw4.0K 3月 25 14:31 documents |
•-t:按文件修改时间排序,最新修改的排在最前面;-r 是倒序排列,两者搭配 ls -ltr,能把最新修改的文件排在最后,看日志、找最新文件时特别好用。
常用组合
日常用得最多的就是 ls -lha —— 既能看到所有文件(包括隐藏文件),又能看到详细信息,还有直观的文件大小,一条命令搞定所有需求,使用中可以根据自己喜好或者阅读方式使用ll、ls –a、ls –h、ls –lrt等不同参数的组合。
3. cd:切换工作目录(自由穿梭目录树)
cd 是 Change Directory 的缩写,作用就是切换到你想去的目录,相当于 Windows 里双击打开文件夹。学会 cd,你就能在整个 Linux 目录树里自由穿梭,再也不用怕迷路。
基础用法
cd 目标目录路径,路径可以是绝对路径,也可以是相对路径。
# 用绝对路径切换到/home/qw/documents目录 [qw@localhost ~]$ cd /home/qw/documents [qw@localhost etc]$ pwd /home/qw/documents # 用相对路径切换到/home/qw/documents目录(当前在/home/qw) [qw@localhost ~]$ cd documents [qw@localhost documents]$ pwd /home/qw/documents |
几个超实用的特殊用法
这几个用法不用记复杂路径,能极大节省时间:
1.cd ~:直接切换到当前用户的家目录(普通用户是 /home/用户名,root 用户是 /root)。更简单的是,直接敲 cd 回车,效果和 cd ~ 一模一样,一键 “回家”,迷路了就敲它;
2.cd ..:切换到上一级目录(父目录),比如你在 /home/qw/documents,敲 cd .. 就回到 /home/qw,再敲一次回到 /home,逐级往上走;
3.cd -:切换到上一次所在的目录,相当于 “撤销上一次 cd 操作”。比如你从 /etc 切到 /home/qw/documents,想再回 /etc,不用敲完整路径,直接 cd - 就回去了,来回切换两个目录时特别方便。
踩坑提醒: 1. Linux 目录和文件名区分大小写,Documents 和 documents 是两个不同目录,敲错大小写会报错; 2. 目录名有空格,必须用引号括起来(比如 cd "my documents"),不然系统会把空格当成分隔符; 3. 不要随便用 cd / 切换到根目录,新手在根目录执行删除、修改操作,风险极高! |
第二站:目录的创建与删除 —— 搭建自己的文件结构
搞懂了怎么 “走路”,接下来我们说说怎么 “建房间” 和 “拆房间” —— 也就是目录的创建和删除,对应两个核心命令:mkdir(创建)和rmdir(删除),还有后续会讲的万能删除命令 rm。
1. mkdir:创建新目录(新建 “文件夹”)
mkdir 是 Make Directory 的缩写,作用就是创建新的空目录,和 Windows 里的 “新建文件夹” 完全一样,用法非常简单。
基础用法
mkdir 目录名:创建单个目录;也可以跟多个目录名(空格隔开),一次性创建多个目录。
# 在当前目录创建一个名为project的目录 [qw@localhost ~]$ mkdir project [qw@localhost ~]$ ls projecttest.txtdocuments # 一次性创建dir1、dir2、dir3三个目录 [qw@localhost ~]$ mkdir dir1 dir2 dir3 |
最常用的选项:-p 递归创建多级目录(核心!)
这是 mkdir 最核心的选项,没有之一。默认情况下,mkdir 只能创建一级目录,如果你想创建 project/code/src 这样的多级目录,直接敲命令会报错 —— 因为父目录 project/code 还不存在。
这时候 -p 就派上用场了:它会自动创建不存在的父目录,一次性把整个目录树建完,不用一级一级手动创建,特别省心,可以理解为逐级创建。
# 错误示范:直接创建多级目录,会报错 [qw@localhost ~]$ mkdir project/code/src mkdir: 无法创建目录"project/code/src": 没有那个文件或目录 # 正确示范:加-p选项,递归创建 [qw@localhost ~]$ mkdir -p project/code/src [qw@localhost ~]$ ls -l project/code drwxr-xr-x. 2 qw qw 4096 3月 25 15:10 src |
建议小习惯
平时创建目录,不管是单级还是多级,都会习惯性加-p 选项 —— 就算目录已经存在,也不会报错,只会静默执行,避免了 “目录已存在” 的烦人防错提示,可以借鉴。
2. rmdir:删除空目录(限制较多,日常用得少)
rmdir 是 Remove Directory 的缩写,作用是删除空的目录,用法和 mkdir 几乎一致,但限制很多,日常用得很少。
基础用法
rmdir 目录名:只能删除空目录,如果目录里有文件或子目录,就会报错。
# 删除空的dir1目录 [qw@localhost ~]$ rmdir dir1 # 删除非空的project目录,会报错 [qw@localhost ~]$ rmdir project rmdir: 删除 "project" 失败: 目录非空 |
它也有 -p 选项,可以递归删除多级空目录(比如 rmdir -p project/code/src),会先删除 src,再删除 code,最后删除 project —— 但前提是所有目录都是空的。
这个命令日常用得极少,因为它只能删空目录,限制太多。实战中删除目录,我们基本都用后面要讲的 rm -r 命令,这里只需知道有这个命令、它能删空目录就够了。
第三站:文件的基础操作 —— 创建、查看、复制、移动、删除
这一部分是文件目录操作的核心,也是我们日常工作中接触最多的内容。我们一个个来讲,每个命令都只讲实战中最常用的用法,避开冷门参数。
1. touch:创建空文件 & 修改文件时间戳
touch 是我们创建空文件最常用的命令,用法简单到极致。
基础用法
touch 文件名:创建一个空的文本文件;也可以跟多个文件名,一次性创建多个文件。
# 创建一个空的test.sh脚本文件 [qw@localhost ~]$ touch test.sh [qw@localhost ~]$ ls -l -rw-r--r--. 1 qw qw 0 3月 25 15:20 test.sh # 一次性创建file1.txt、file2.txt、file3.txt三个文件 [qw@localhost ~]$ touch file1.txt file2.txt file3.txt |
一个冷知识:touch 的本职工作不是创建文件
很多人以为 touch 就是用来创建文件的,其实不是!它的核心功能,是修改文件的 “访问时间” 和 “修改时间”。
如果 touch 一个已经存在的文件,不会清空文件内容,只会更新它的时间戳为当前系统时间 —— 这个功能在脚本里用得很多,比如标记文件的最新更新时间。创建空文件,只是它的附加功能而已。
# 已存在的test.txt,修改时间是3月25日14:30 [qw@localhost ~]$ ls -l test.txt -rw-r--r--. 1 qw qw 120 3月 25 14:30 test.txt # 执行touch命令,更新时间戳 [qw@localhost ~]$ touch test.txt [qw@localhost ~]$ ls -l test.txt -rw-r--r--. 1 qw qw 120 3月 25 15:25 test.txt |
2. 文件查看:根据场景选对命令,效率翻倍
Linux 里查看文件内容的命令有很多,不同场景适合不同命令 —— 不是所有文件都用 cat 打开,一定要选对,不然会走很多弯路。我按使用场景给大家分好了,直接对号入座就行。
场景 1:查看小文件,一次性输出所有内容 —— cat
cat 是 concatenate 的缩写,适合查看内容不多的小文件(比如几行、几十行),会把文件所有内容一次性输出到终端,简单直接。
基础用法:cat 文件名
# 查看test.txt的内容 [qw@localhost ~]$ cat test.txt hello linux this is a test file |
常用选项:-n —— 显示行号,看配置文件时特别方便,能快速定位到第几行。
[qw@localhost ~]$ cat -n test.txt 1hello linux 2this is a test file |
场景 2:查看大文件,分页浏览 —— more & less
如果用 cat 打开几百行、几千行的日志文件,内容会瞬间刷屏,根本看不清楚 —— 这时候就需要分页查看的命令,more 和 less 就是最佳选择。
•more 文件名:分页显示文件内容,按回车键向下翻一行,按空格键向下翻一页,按 q 键退出。缺点是只能向下翻,不能向上翻;
•less 文件名:more 的升级版,也是最推荐的大文件查看命令。不仅能向下翻,还能按上下箭头向上翻,按 /关键词搜索文件内容,按 n 跳转到下一个匹配结果,按 q 退出。
小提醒:系统日志文件(存放在 /var/log 目录下)通常都很大,用 less 查看最合适,比如 less /var/log/messages。
场景 3:只看文件的开头/结尾 —— head & tail
很多时候,我们不需要看整个文件,只想看开头几行(比如配置文件的注释),或者结尾几行(比如日志的最新内容) —— 这时候 head 和 tail 就派上用场了。
•head 文件名:默认查看文件前 10 行,加 -n 数字 可以指定看前几行。
•tail 文件名:默认查看文件最后 10 行,加 -n 数字 可以指定看最后几行。它有个王牌选项 -f —— 实时跟踪文件新增内容,文件有新内容会立刻输出到终端,看服务实时日志绝对离不开它!
3. cp:复制文件和目录(复制-粘贴)
cp 是 Copy 的缩写,作用是复制文件或目录,和 Windows 里的 “复制-粘贴” 完全一样,日常使用频率很高。
基础用法
•复制文件:cp 源文件路径 目标路径
•复制目录:必须加 -r 选项(递归复制),不然会报错。-r 会把目录里的所有文件、子目录一起复制过去,完整保留目录结构。
实战常用选项
•-p:复制时保留文件原属性(所有者、权限、修改时间),备份文件时特别常用 —— 避免复制后文件权限、属性变了,导致系统报错;
•-i:覆盖已有文件前,会弹出提示询问是否覆盖,重要文件或文件夹复制加这个选项 —— 避免不小心覆盖。系统通常会给 cp 设置别名,默认带 -i,但自己敲的时候加上,更保险。
4. mv:移动 & 重命名文件和目录(剪切-粘贴+重命名)
mv 是 Move 的缩写,它有两个核心作用 —— 移动文件/目录(相当于 Windows 剪切-粘贴)、给文件/目录重命名,是 Linux 里最常用的重命名方式,一个命令搞定两个需求,特别高效。
用法 1:移动文件/目录
mv 源文件/目录路径 目标路径,重点提醒:移动目录不需要加 -r 选项,直接用就行 —— 这是和 cp 最大的区别!
# 把file1.txt移动到project/code目录下 [qw@localhost ~]$ mv file1.txt project/code/ # 把dir2目录移动到backup目录下 [qw@localhost ~]$ mv dir2 backup/ |
用法 2:重命名文件/目录
当源文件和目标文件在同一个目录里时,mv 就实现了重命名的效果 —— 不用额外命令,简单又方便。
# 把test.sh重命名为start.sh [qw@localhost ~]$ mv test.sh start.sh # 把dir3目录重命名为test_dir [qw@localhost ~]$ mv dir3 test_dir |
同样,它也有 -i 选项,覆盖文件前会弹出提示,建议养成加 -i 的习惯。
5. rm:删除文件和目录(高危命令)
rm 是 Remove 的缩写,是 Linux 里删除文件和目录的命令 —— 也是最容易踩坑、最容易出事故的命令,没有之一!
重点提醒:Windows 删错文件能从回收站恢复,但 Linux 里用 rm 删除的文件,几乎无法恢复;尤其是在 root 用户下,一个命令下去,整个系统都能直接删崩,一定要慎之又慎!
基础用法
•删除文件:rm 文件名,默认会弹出提示询问是否删除,输入 y 确认,输入 n 取消。
•删除目录:必须加 -r 选项(递归删除),会删除目录里的所有内容(包括子目录和文件)。
常用选项 & 高危提醒
•-f:强制删除,不弹出任何提示,直接删除;就算文件不存在,也不会报错。这个选项极其危险,尤其是和 -r 搭配(rm -rf),尽量别用!
•-i:交互式删除,每删除一个文件/目录,都会弹出提示确认,是最安全的选项。
绝对不能碰的致命操作 以下命令,绝对不能在虚拟机乱试,更不能在生产服务器执行 —— 一旦执行,系统直接崩溃,数据无法恢复! 1.rm -rf /:递归强制删除根目录下所有文件,整个系统被清空,没有任何挽回余地,是运维的 “死亡命令”; 2.rm -rf *:在根目录执行,效果和上面一样;就算在普通目录执行,也会清空当前目录所有内容,风险极高; 3.带错误路径的 rm -rf 目录/*:比如想删除 /home/qw/test/*,多敲一个空格写成 rm -rf /home/qw/test / *,系统会先删 test 目录,再删根目录所有内容,直接酿成事故。 |
安全操作习惯(可借鉴)
自己刚入门也因 rm 误删导致差点踩坑,慢慢养成了这几个习惯,分享给大家:
1.执行 rm 前,先敲 pwd 确认当前目录,再用 ls 确认要删除的文件/目录,确认无误再回车;
2.尽量不用 -f 选项,尤其是删除系统相关文件,用 -i 一个个确认,多敲一个 y,总比删错后悔强;
3.删除带通配符(比如 *)的内容时,先加 echo测试(比如 echo rm -rf test/*),先看看要删除的是哪些文件,确认没问题再去掉 echo 执行;
4.重要文件/目录,先备份再删除,或者先改个名字,确认系统运行没问题,再彻底删除;
5.绝对不用 root 用户日常操作 —— 普通用户就算误删,也只影响自己的家目录,不会搞崩整个系统(这也是之前用户权限篇反复强调的)。
第四站:文件查找 —— 快速找到你要的文件(告别手动翻找)
Windows 里找文件用系统搜索,Linux 里也有对应的查找命令,而且功能更强大、查找更精准 ——掌握这三个命令,就能应对 99% 的日常查找需求,告别手动翻找的麻烦。
1. which:查找命令的可执行文件路径
之前讲过,Linux 的所有命令都是可执行文件 —— which 的作用,就是找到这个命令对应的可执行文件存放在哪个目录,比如想知道 ls、cd 这些命令到底存在哪里,用它一查就知道。
基础用法:which 命令名
# 查找ls命令的路径 [qw@localhost ~]$ which ls /usr/bin/ls # 查找cd命令的路径 [qw@localhost ~]$ which cd /usr/bin/cd |
实用场景:安装软件后,想知道命令放在哪里;系统有多个版本的同一个命令,想知道当前用的是哪一个 —— 用 which 就能快速定位。
2. whereis:查找命令的相关文件
whereis 比 which 查找范围更广 —— 不仅能找到命令的可执行文件,还能找到命令的帮助文档、源码文件,适合查找和命令相关的所有文件。
基础用法:whereis 命令名
[qw@localhost ~]$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz |
输出说明:第一个路径/usr/bin/ls是可执行文件路径,第二个/usr/share/man/man1/ls.1.gz是帮助文档路径。
3. find:精准查找文件和目录(最强大的查找命令)
find 是 Linux 里最强大的文件查找命令,功能多、参数复杂,可以不用记全 —— 掌握最常用的 “按文件名查找”,就能解决 90% 的查找问题。
基础用法:find 查找范围 -name "要查找的文件名"
•查找范围:你想在哪个目录里找,比如 / 代表整个系统,/etc 代表配置文件目录,/home/qw 代表qw用户家目录;
•-name:按文件名查找,支持通配符 *(匹配任意字符)。
# 在整个系统里查找名为nginx.conf的文件 [root@localhost ~]# find / -name "nginx.conf" /etc/nginx/nginx.conf # 在/home/qw目录里,查找所有以.txt结尾的文件 [qw@localhost ~]$ find /home/qw -name "*.txt" /home/qw/test.txt /home/qw/file1.txt /home/qw/file3.txt # 在/etc目录里,查找所有以host开头的文件 [root@localhost ~]# find /etc -name "host*" /etc/hosts /etc/hostname /etc/host.conf |
小提醒:在整个系统 / 里查找时,需要 root 权限 —— 普通用户很多目录没有访问权限,会输出很多报错信息,用 root 用户执行就能完整查找。
必学:3 个提升效率的小技巧
最后,给大家分享觉得 “惊艳” 的小技巧 —— 学会之后,命令行操作效率直接翻倍,少敲很多字母、少犯很多拼写错误,新手一定要尽快掌握!
1. Tab 键自动补全(最实用,没有之一)
这是 Linux 终端最实用的功能,没有之一!当你输入命令、文件名、目录名的前几个字母时,按一下 Tab 键,系统会自动补全剩下的内容;如果有多个匹配内容,按两下 Tab 键,系统会列出所有匹配选项。
比如你想输入cd documents,只需要敲cd doc,按一下 Tab,系统就会自动补全成cd documents;如果目录里有documents和download两个目录,敲cd do按两下 Tab,系统就会把这两个目录都列出来,让你选择。
这个技巧能帮你避免 90% 的拼写错误,也不用记完整的长文件名,养成用 Tab 补全的习惯,真的太香了。
2. 命令历史记录
Linux 会自动记录你在终端里执行过的所有命令,存在用户家目录的.bash_history文件里。
·按上下方向键,就能快速调出之前执行过的命令,不用重复敲;
·敲history回车,会列出所有执行过的命令,每条前面都有编号;
·敲!编号,就能重新执行对应编号的命令;
·敲!回车,会重新执行上一条命令。
比如你之前执行过一条很长的find命令,想再执行一次,不用重新敲,按上箭头找出来,或者用history找到编号,用!编号就能直接执行,特别方便。
最常用的通配符有两个:*和?
·*:匹配任意数量的任意字符,比如*.txt代表所有以.txt 结尾的文件,test*代表所有以 test 开头的文件;
·?:匹配单个任意字符,比如file?.txt,能匹配 file1.txt、file2.txt,但不能匹配 file10.txt。
通配符在ls、cp、mv、rm、find这些命令里都能用,比如你想一次性复制所有的 txt 文件,只需要敲cp *.txt /home/qw/backup/,不用一个个写文件名,效率极高。
写在最后
其实写到这里,回头看了看,这些命令看起来零散,但其实都围绕着一个核心逻辑:怎么在 Linux 的文件系统里,完成对文件和目录的 “定位、查看、创建、修改、删除、查找” 这一套完整的操作。
刚接触 Linux 的时候,总觉得要记住几百个命令才算学会,其实不是。做运维这么多年,日常工作中高频使用的命令,也就二十来个,今天讲的这些,占了其中的 80%。不用追求一下子全部背下来,命令不是背会的,是用会的。
当初学这些的时候,就是在自己的虚拟机里,建文件、建目录、复制、移动、删除,一个个命令敲,踩了拼写的坑、路径的坑,甚至差点删了系统文件,靠着之前拍的虚拟机快照恢复了好几次,才慢慢熟练起来。不用怕出错,我们之前讲过 VMware 的快照功能,操作之前拍个快照,就算操作错了,一键恢复就好,多试试,比背十遍参数都有用。
❤️ 觉得有用,记得点赞+在看,转发给身边学Linux的小伙伴哦!
记得关注【极客代码库】,不错过每一篇干货!
往期文章:
虚拟化技术基础(VMware/VirtualBox/KVM)