☰
Linux基础指令第一课
2026/10/12 5:36:38 网站建设 项目流程

Linux 基础指令第一课:从零开始的命令行冒险

适用人群:Linux 零基础小白、刚装好虚拟机还在对着黑框发呆的同学

阅读时间:约 20 分钟,但建议边看边敲,效果翻倍

写在前面:为什么要学 Linux?

先说个数据——全球 75% 的服务器跑在 Linux 上,你手里的 Android 手机底层也是 Linux,云计算、大数据这些热门方向更是离不开它。说白了,搞 IT 不懂 Linux,就像当厨师不会用刀。

但别慌,Linux 没你想的那么高冷。今天这第一节课,我们就干两件事:

  1. 认识 40+ 个常用命令——够你日常摸鱼……啊不,日常工作了
  2. 搞懂 Linux 权限系统——这是后面所有进阶内容的地基

准备好了?黑框框打开,咱们开整。


一、Linux 的前世今生(精简八卦版)

长的历史我就不背课文了,挑几个有意思的节点说:

  • 1969 年,贝尔实验室的 Ken Thompson 和 Dennis Ritchie 捣鼓出了 UNIX。这俩人后来都拿了图灵奖,Dennis 顺便还发明了 C 语言——大佬的世界就是这么朴实无华。
  • 1991 年,赫尔辛基大学一个叫 Linus Torvalds 的研究生,因为买不起 UNIX,一怒之下自己写了个操作系统内核,扔到了网上。当时他发布的版本号是 0.02,还谦虚地说"这只是个业余爱好,不会像 GNU 那样专业"。
  • 结果呢?全世界程序员蜂拥而至,一起贡献代码,Linux 就这么长成了参天大树。

一句话总结:Linux 诞生于一个穷学生的不服气,成长于开源社区的力量。

关于发行版,新手记住几个名字就行:

发行版特点适合谁
Ubuntu对新手最友好,社区大刚入门的你
CentOS稳定,企业服务器常用以后工作中会见很多
Kali Linux自带一堆渗透测试工具搞安全的"白帽子"

二、环境准备——XShell 连接 Linux

很多同学装好 Linux 后,盯着图形桌面觉得还挺亲切。忘掉它吧。以后工作中你根本碰不到图形界面,服务器都在远程机房里,你得用终端工具连上去。

XShell 就是最常用的远程终端软件,去官网下载选 Home/School 版本,免费的。

连接步骤

第一步:在 Linux 上查 IP 地址

[whb@bite-alicloud ~]$ifconfig

找到类似192.168.x.x或47.x.x.x的地址,这就是你 Linux 机器的"门牌号"。

第二步:在 XShell 里连接

[whb@bite-alicloud ~]$ssh47.xx.xx.xx

输入用户名和密码,连上之后你会看到一个类似的命令行提示符:

[whb@bite-alicloud ~]$

小贴士:XShell 里复制用Ctrl + Insert,粘贴用Shift + Insert。Ctrl+C和Ctrl+V在这里是不管用的,别习惯性按了。


三、命令行初体验:9 个必会命令

1. pwd —— 我在哪儿?

[whb@bite-alicloud ~]$pwd/home/whb

功能:显示当前所在目录的绝对路径。

就这么简单,没有任何选项。新手最容易迷路,pwd就是你迷路时的 GPS。

2. ls —— 这个目录里有什么?

[whb@bite-alicloud test]$lsdirfile.txt[whb@bite-alicloud test]$ls-ltotal12drwxrwxr-x3whb whb4096Jan1115:01.drwx------22whb whb4096Jan1114:21..drwxrwxr-x2whb whb4096Jan1114:22dir-rw-rw-r--1whb whb0Jan1114:22 file.txt[whb@bite-alicloud test]$ls-a...dirfile.txt

常用选项:

选项作用
-l显示详细信息(权限、所有者、大小、时间)
-a显示所有文件,包括以.开头的隐藏文件
-d只看目录本身,不看里面的内容
-F在文件名后加类型标记(/表示目录,*表示可执行文件)

技巧:ls -l可以简写成ll,敲起来快得多。

3. cd —— 去别的地方

# 返回上级目录[whb@bite-alicloud ~]$cd..# 用绝对路径跳转(从根目录 / 开始写)[whb@bite-alicloud home]$cd/home/whb/test# 用相对路径跳转(相对于当前位置)[whb@bite-alicloud test]$cd../temp/# 回家目录(~ 代表当前用户的家目录)[whb@bite-alicloud test]$cd~# 回到上一次待过的目录[whb@bite-alicloud ~]$cd-

关于路径,说人话就是:

  • 绝对路径:从/开始写,像快递地址一样精确到门牌号。不管你现在在哪儿,用它都能准确定位。
  • 相对路径:从当前位置出发,"出门左转再右转"那种。方便,但换了个位置可能就不对了。

4. touch —— 创建空文件

[whb@bite-alicloud test]$touchnewFile.txt[whb@bite-alicloud test]$lsdirfile.txt newFile.txt

功能:创建一个空文件,或者修改已有文件的时间戳。

touch其实还有个-a选项可以只修改访问时间,但说实话新手用不到,记住"touch = 建空文件"就行。

5. mkdir —— 创建目录

# 创建一个普通目录[whb@bite-alicloud test]$mkdirmydir# 一次性创建多层嵌套目录[whb@bite-alicloud test]$mkdir-ppath1/path2/path3/path4[whb@bite-alicloud test]$ tree path1 path1 └── path2 └── path3 └── path4

常用选项:-p递归创建,父目录不存在时自动帮你建好。这个很实用,不然你得一层层mkdir下去,手都得敲断。

6. rm —— 删除文件或目录

# 删除普通文件[whb@bite-alicloud test]$rmfile.txt# 删除目录(必须加 -r)[whb@bite-alicloud test]$rm-rdir# 删除前询问确认[whb@bite-alicloud test]$rm-inewFile.txt rm: remove regular emptyfile'newFile.txt'? y# 递归强制删除(新手慎用!)[whb@bite-alicloud test]$rm-rfpath1

常用选项:

选项作用
-f强制删除,不问你
-i删除前问一句"确定吗?"
-r递归删除目录及其内容

警告:rm -rf是 Linux 里最危险的命令之一。删错了没有回收站,没有撤销,游戏直接结束。网上有个经典段子——“让 rm -rf 教你什么叫人生重来”。所以用之前,看三遍路径对不对。

7. cp —— 复制文件或目录

# 复制普通文件[whb@bite-alicloud test]$cpmyfile.txt myfile-backup.txt# 把多个文件复制到指定目录[whb@bite-alicloud test]$cp*.txtdir# 递归复制整个目录[whb@bite-alicloud ~]$cp-rftesttest-backup

常用选项:-f强制覆盖、-i覆盖前询问、-r递归复制目录。

跟rm一样,操作目录就得加-r,这是规矩。

8. mv —— 移动 / 重命名

# 重命名文件[whb@bite-alicloud test]$mvmyfile.txt yourfile.txt# 把文件移到别的目录[whb@bite-alicloud test]$mvmyfile.txt temp/# 覆盖前询问[whb@bite-alicloud test]$mv-iyourfile.txt myfile.txt mv: overwrite'myfile.txt'? y

功能:mv是个双面间谍——第二个参数是文件名时它负责改名,是目录名时它负责搬家。常用选项-f(强制)和-i(询问)。

9. cat —— 查看文件内容

# 先用 echo 创建一个有内容的文件[whb@bite-alicloud test]$echo"hello bite">temp.txt[whb@bite-alicloud test]$cattemp.txt hello bite# 显示行号[whb@bite-alicloud test]$cat-ntemp.txt1hello bite2hello bite34hello bite

常用选项:-n对所有行编号、-b只对非空行编号、-s压缩多行空行。

注意:cat适合看短文件。文件长了,屏幕会刷刷刷滚过去,你根本看不清。这时候就该less上场了。

这里顺带说两个概念:

  • 重定向>:echo "hello" > file.txt会把输出写到文件里,覆盖原有内容。想追加用>>。
  • 管道|:把前一个命令的输出,当成后一个命令的输入。后面head+tail组合就是靠它实现的。

四、进阶命令速览

上面 9 个是吃饭用的筷子,下面这些是调味料——不一定天天用,但需要的时候没有就抓瞎。

命令速查表

命令一句话功能最常用选项
man查命令的说明书man 3 printf(查库函数)
less分页查看大文件-N(显示行号),/(搜索)
head看文件开头 N 行-n 行数
tail看文件末尾 N 行-n 行数、-f(实时追踪)
find按条件搜索文件-name 文件名
grep在文件里搜文本-i(忽略大小写)、-n(带行号)、-v(反向匹配)
tar打包 / 解压-zxvf(解压)、-zcvf(压缩)
date显示 / 设置时间+%Y-%m-%d(格式化)
cal显示日历-3(看前后三个月)
zip/unzip压缩 / 解压 zip-r(递归压缩目录)
bc命令行计算器直接输入bc进入交互式
uname查看系统信息-a(显示全部)

重点技巧:head + tail 管道组合

这个是面试常考、工作中常用的技巧。

问题:一个文件有 2000 行,怎么只看第 180 到 200 行?

[whb@bite-alicloud test]$head-200temp.txt|tail-20hello180hello181hello182... hello199

原理:head -200先取前 200 行,通过管道|传给tail -20,再从这 200 行里取最后 20 行——正好就是第 180~200 行。

管道|的作用就是"把前面命令的输出,当后面命令的输入"。你可以把它想象成流水线,上一个工序的产品直接递给下一个工序。

grep —— 文本搜索利器

grep是你以后用得最多的命令之一,能在文件里搜文本:

# 文件内容[whb@bite-alicloud test]$cattemp.txt abcd ABCD hello bite1234# 基本查找[whb@bite-alicloud test]$grep"abcd"temp.txt abcd# 忽略大小写[whb@bite-alicloud test]$grep-i"abcd"temp.txt abcd ABCD# 带行号 + 忽略大小写[whb@bite-alicloud test]$grep-ni"abcd"temp.txt1:abcd2:ABCD# 反向匹配(显示不包含 "abcd" 的行)[whb@bite-alicloud test]$grep-vni"abcd"temp.txt3:hello4:bite5:1234

date —— 时间日期

# 显示当前时间[whb@bite-alicloud test]$dateWed Jan1118:22:50 CST2023# 格式化输出[whb@bite-alicloud test]$date+%Y/%m/%d-%H:%M:%S2023/01/11-18:23:20# 查看时间戳(从1970年1月1日零点开始的秒数)[whb@bite-alicloud test]$date+%s1673432636# 时间戳转成可读时间[whb@bite-alicloud test]$date+%Y/%m/%d-%H:%M:%S-d@01970/01/01-08:00:00

时间戳在编程中用得很多,日志文件、数据库记录都靠它来标记时间。

tar 压缩解压速记

# 压缩:把 test 目录打包成 .tar.gz[whb@bite-alicloud ~]$tar-zcvftest.tar.gztest# 解压:解开到当前目录[whb@bite-alicloud ~]$tar-zxvftest.tar.gz# 解压到指定目录[whb@bite-alicloud ~]$tar-zxvftest.tar.gz-C/tmp

记不住参数?背个口诀:zcvf = 压(Zip + Create + Verbose + File),zxvf = 解(Zip + eXtract + Verbose + File)。


五、Shell 是什么?——"媒婆"的故事

到这里你可能在想:我敲的这些命令,到底是谁在执行?

答案是:Shell。

Linux 严格来说只是一个操作系统内核(kernel),但你不能直接跟内核对话——它太底层了,听不懂人话。你需要一个"翻译",这个翻译就是 Shell。

打个比方:

你是个害羞的程序员,看上了村头漂亮的村花小花(kernel)。你不好意思直接表白,就找了村里的媒婆王婆(bash,最常用的 Shell)帮你传话。你跟王婆说什么,王婆就翻译给小花听;小花什么反应,王婆再翻译回来告诉你。

所以你敲ls,Shell 把它翻译成内核能理解的系统调用,内核执行完,Shell 再把结果摆到你面前。

Shell 的本质:命令行解释器(Command Interpreter),干两件事——把你的命令翻译给内核,把内核的结果翻译给你。


六、Linux 权限系统(重点!)

这部分是今天最硬核的内容,也是面试必问。打起精神来。

6.1 用户分类

Linux 下有两种用户:

  • 超级用户(root):想干啥干啥,提示符是#
  • 普通用户:只能干被允许的事,提示符是$

切换用户用su命令:

# 普通用户切到 root[whb@bite-alicloud ~]$suroot Password:# root 切到普通用户[root@bite-alicloud ~]# su whb

6.2 文件访问者分类

对于任何一个文件,Linux 把人分成三类:

分类缩写通俗理解
所有者u (User)这文件的亲爹
所属组g (Group)亲爹的家人
其他人o (Others)路人甲乙丙

6.3 权限位解读

还记得ls -l输出的那一串字母吗?

drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir -rw-rw-r-- 1 whb whb 0 Jan 11 14:22 file.txt

第一个字符是文件类型:

字符含义
d目录
-普通文件
l软链接(类似 Windows 快捷方式)
b块设备(硬盘、光驱)
c字符设备(屏幕等)
p管道文件
s套接字文件

后面 9 个字符是权限位,每 3 个一组,分别对应 u、g、o:

rwx rwx r-x ↑ ↑ ↑ 所有者 所属组 其他人

r、w、x 分别代表什么?

权限对文件的意义对目录的意义
r (read)可以读文件内容可以浏览目录里有什么(ls)
w (write)可以修改文件内容可以在目录里创建/删除文件
x (execute)可以执行这个文件可以 cd 进入这个目录

特别注意:目录的x权限和文件的不一样!对目录来说,没有x你连cd都进不去,就算有r也不行。这是新手最容易踩的坑。

6.4 数字表示法:r=4, w=2, x=1

每个权限对应一个数字:

  • r = 4
  • w = 2
  • x = 1

把三个数字加起来就是一组权限。比如rwx= 4+2+1 =7,rw-= 4+2 =6,r-x= 4+1 =5。

三组拼在一起就是三位数,比如755=rwxr-xr-x,644=rw-r--r--。

6.5 chmod —— 修改权限

字母法(加减权限):

# 给所有者增加写权限[whb@bite-alicloud ~]$chmodu+w /home/abc.txt# 去掉其他人的执行权限[whb@bite-alicloud ~]$chmodo-x /home/abc.txt# 所有人都只给执行权限[whb@bite-alicloud ~]$chmoda=x /home/abc.txt

数字法(直接设权限):

# 设置权限为 rw-rw-r-- (664)[whb@bite-alicloud ~]$chmod664/home/abc.txt# 递归修改目录下所有文件权限[whb@bite-alicloud ~]$chmod-R755/home/mydir

规则:只有文件的拥有者和 root 才能修改文件权限。字母法适合微调,数字法适合一把梭。

6.6 chown / chgrp —— 改所有者 / 改所属组

# 把文件所有者改成 user1[root@bite-alicloud ~]# chown user1 f1# 递归修改整个目录的所有者[root@bite-alicloud ~]# chown -R user1 filegroup1# 修改所属组[root@bite-alicloud ~]# chgrp users /abc/f2

6.7 umask —— 默认权限掩码

你创建文件时,默认权限不是随机的,而是受umask控制:

  • 新建文件默认权限 = 0666
  • 新建目录默认权限 = 0777
  • 实际权限 = 默认权限 & ~umask
# 查看当前 umask[whb@bite-alicloud ~]$umask0002# 设置 umask[whb@bite-alicloud ~]$umask044

普通用户默认 umask 是0002,root 是0022。所以普通用户新建文件实际权限是664(rw-rw-r–),新建目录是775(rwxrwxr-x)。

6.8 file —— 辨识文件类型

在讲权限之前,先介绍一个辅助命令。Linux 不看后缀名判断文件类型,那怎么看?用file:

[whb@bite-alicloud test]$filetemp.txt temp.txt: ASCII text[whb@bite-alicloud test]$filedir/ dir/: directory

ls -l看到的是权限位里的类型标记,file给你的是更详细的描述。两个配合用,判断文件类型不会出错。

6.9 粘滞位(Sticky Bit)——"公共宿舍"的故事

这是个很有意思的设计。先看一个问题:

张三在公共目录/home里创建了一个文件,李四能删掉它吗?

答案取决于/home目录的权限。如果/home对所有人可写(777),那李四就能删掉张三的文件——即使张三的文件本身只有张三能写。

因为删除文件看的是目录的写权限,不是文件本身的写权限。这就像公共宿舍里,你锁了自己柜子的门,但只要别人有宿舍钥匙,他可以把整个柜子搬走。

来验证一下:

# root 给 /home 目录开 777 权限[root@localhost ~]# chmod 0777 /home/[root@localhost ~]# ls -ld /home/drwxrwxrwx3root root40969月1915:58 /home/# root 在 /home 下创建文件[root@localhost ~]# touch /home/root.c# 切换到普通用户 litao[root@localhost ~]# su - litao# litao 可以删除 root 创建的文件![litao@localhost ~]$rm/home/root.c rm:是否删除有写保护的普通空文件"/home/root.c"? y

这显然不合理。为了解决这个问题,Linux 引入了粘滞位:

# root 给 /home 加上粘滞位[root@localhost ~]# chmod +t /home/[root@localhost ~]# ls -ld /home/drwxrwxrwt3root root40969月1916:00 /home/# ↑ 注意最后的 t,就是粘滞位# 切换到 litao,再试试删别人的文件[root@localhost ~]# su - litao[litao@localhost ~]$rm/home/abc.c rm: 无法删除"/home/abc.c":不允许的操作

加了粘滞位后,该目录下的文件只能被三类人删除:

  1. 超级管理员(root)
  2. 该目录的所有者
  3. 该文件的所有者

比喻:粘滞位就像公共宿舍装了个门禁——大家都能进宿舍放东西,但只有宿管、宿舍主人、和东西的主人才能把东西拿走。别人想动你的东西?没门。

/tmp目录就自带粘滞位,所以它才能安全地给所有用户当临时文件存放点。


七、热键 & 关机

三个必记热键

热键功能使用场景
Tab自动补全敲到一半按 Tab,命令名/文件名自动补上,少敲好多字
Ctrl + C终止当前程序程序卡死了或者跑飞了,一按就停
Ctrl + D结束输入 / 退出等同于exit,快速退出当前 Shell

Tab是你最好的朋友。养成习惯:文件名只敲前几个字母就按 Tab,又快又不会打错。

关机命令

# 立即关机[root@bite-alicloud ~]# shutdown -h now# 重启[root@bite-alicloud ~]# shutdown -r now# 30 秒后关机[root@bite-alicloud ~]# shutdown -t 30

在服务器上,shutdown要慎用。你关了一台线上服务器,全公司都得陪你加班。

6.10 目录权限的特殊性

最后强调一下目录权限和文件权限的区别,这块容易搞混:

  • 没有x:连cd都进不去。即使有r,也只能看到文件名列表,但进不了目录。
  • 没有r:能cd进去,能执行命令,但ls看不到文件名。你知道文件名的话可以直接操作。
  • 没有w:不能在里面创建新文件,也不能删除已有文件。

记住这个反直觉的点:删除文件看的是目录的w权限,不是文件本身的w权限。你即使不能修改一个文件的内容,但只要对它所在的目录有w权限,就能把它删了。这就是为什么需要粘滞位。


课后小练习

光看不练假把式,打开终端试试这些题:

第 1 题(热身):用pwd查看当前目录,然后用cd回到你的家目录。

第 2 题(基础):创建一个目录practice,在里面创建 3 个文件a.txt、b.txt、c.txt。

第 3 题(路径练习):用绝对路径和相对路径两种方式,分别进入/tmp目录。

第 4 题(文件操作):把practice目录里的所有.txt文件复制到/tmp下,然后把原目录里的a.txt重命名为a_backup.txt。

第 5 题(管道练习):创建一个包含 100 行内容的文件,用head和tail管道组合,只显示第 50 到 60 行。

第 6 题(权限练习):创建一个文件,用chmod把它的权限设置为rwxr-xr--,分别用字母法和数字法各做一次。

第 7 题(思考题):一个目录的权限是drwxr-x---,请问:其他人能进入这个目录吗?能看到目录里的文件名吗?能在里面创建文件吗?答案是:都不能!因为其他人对应权限是---,没有x进不去,没有r看不到,没有w不能创建。

第 8 题(进阶):在/tmp目录下创建一个文件,然后切换到另一个普通用户,尝试删除它。再让 root 给/tmp去掉粘滞位,再试一次,观察有什么不同。(做完记得把粘滞位加回去:chmod +t /tmp)


下节预告

今天我们学会了 40+ 个基础命令,搞懂了权限系统。但这些命令就像是工具箱里的锤子和螺丝刀,下一节课我们要学的是更强大的工具:

  • Linux 编辑器三剑客:vim 的基本操作(别怕,比你想象的简单)
  • Linux 软件包管理:yum / apt 怎么装软件
  • 更多进阶指令:进程管理、网络配置等

下节课见!


如果这篇文章对你有帮助,点个赞再走吧!有问题欢迎评论区交流,我也会不定期更新 Linux 系列的后续文章,关注不迷路~

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询