核心内容摘要
如何通过爱美剧Mac客户端打造高效追剧体验:完整指南
Linux基础指令完结与Linux权限初识 Doro在努力个人主页 个人专栏: 《MySQL数据库基础语法》《数据结构》⛺️严于律己宽以待人从命令行到操作系统内核一文打通Linux基础指令的任督二脉引言在Linux学习的道路上基础指令就像是武林高手的内功心法看似平淡无奇实则是后续一切高深技艺的根基。
经过前面几节课的积累我们已经掌握了大约40多个常用指令但这仅仅是开始。
今天这节课我们将完成基础指令部分的收官之作同时揭开Linux权限系统的神秘面纱理解操作系统内核与Shell外壳之间那层微妙的关系。
本文将以课堂实录的形式结合大量实战案例和生动比喻带你深入理解tar打包压缩、SCP远程传输、Shell外壳原理以及Linux用户权限等核心概念。
无论你是刚入门的新手还是希望系统梳理知识体系的老手相信都能从中有所收获。
目录
tar命令打包压缩的艺术
file命令洞察文件本质
SCP命令跨主机的文件传输
BC命令命令行下的计算器
系统信息查看uname的妙用
效率倍增的快捷键
关机命令与服务器哲学
Shell外壳王婆说媒的故事
Linux权限初识root与普通用户
十、
总结与展望
tar命令打包压缩的艺术
1 为什么需要tar在Linux系统中我们经常需要将多个文件或整个目录打包成一个文件方便传输或备份。
想象一下你要搬家是把所有东西一股脑塞进箱子方便还是一件件搬运方便tar命令就是那个箱子它可以把分散的文件打包在一起再配合压缩算法让体积更小、传输更快。
tar的名字来源于Tape Archive磁带归档虽然现在磁带已经很少见了但这个命令依然延续着它的使命——将文件归档打包。
2 打包压缩的黄金公式经过反复演示
总结出了一套黄金公式记住这个就够了# 打包压缩记住这个公式tar-czf 压缩包名.tgz 要打包的目录或文件# 解压解包一字之差tar-xzf 压缩包名.tgz这里的选项含义如下-ccreate创建新的压缩包-xextract解压解包和-c正好相反-z使用gzip算法进行压缩-f指定压缩包的文件名必须放在选项最后
3 实战演示假设我们有一个项目目录lesson5里面包含代码文件和资源目录我们想把它打包压缩# 创建测试目录结构mkdir-p lesson5/src lesson5/docsechohello worldlesson5/hello.cechoREADME contentlesson5/README.md# 打包压缩黄金公式tar-czf lesson
tgz lesson5# 查看生成的压缩包ls-lh lesson
tgz解压时同样简单# 创建测试目录并解压mkdirtestcdtesttar-xzf../lesson
tgz# 查看解压后的内容ls-la lesson5/
4 显示打包/解压过程有时候我们想看看打包或解压的过程中都处理了哪些文件可以加上-v选项verbose详细模式# 带详细输出的打包tar-cvzf lesson
tgz lesson5# 带详细输出的解压tar-xvzf lesson
tgz输出会显示类似这样的内容lesson5/ lesson5/src/ lesson5/docs/ lesson5/hello.c lesson5/README.md不过要注意-v选项虽然方便查看进度但在处理大量文件时会刷屏。
老师提到一个有趣的场景如果你解压一个需要一小时的超大压缩包加上-v会让输出疯狂滚动反而影响其他操作。
这时候可以考虑静默解压或者把任务放到后台执行。
5 解压到指定目录默认情况下tar会把文件解压到当前目录。
如果想解压到指定位置可以使用-C选项# 解压到/home/user/backup目录tar-xzf lesson
tgz -C /home/user/backup这个选项在实际工作中非常实用比如你想把压缩包解压到备份目录而不是当前工作目录。
6 常见压缩格式
总结Linux世界中存在多种压缩格式课堂上老师提到了几种常见的后缀名说明解压命令.tgz / .tar.gztargzip压缩tar -xzf.zipzip格式unzip.bz2bzip2压缩tar -xjf给一个重要的建议遇到不认识的压缩格式不要害怕直接把后缀贴出来搜索网上都有对应的解压方法。
大部分情况下tar命令配合不同选项都能搞定。
file命令洞察文件本质
1 为什么需要file命令在Linux中文件的后缀名只是一个建议并没有强制约束力。
你可以把一个文本文件命名为file.exe也可以把一个可执行程序命名为document.txt。
那么如何知道一个文件的真实类型呢这就是file命令的用武之地。
2 file命令实战# 创建一个空文件touchhello.c# 查看文件类型filehello.c# 输出: hello.c: empty# 创建一个目录mkdirmydirfilemydir# 输出: mydir: directory# 查看系统命令的文件类型file/usr/bin/ls# 输出: /usr/bin/ls: ELF 64-bit LSB executable, x
, version 1 (SYSV)从上面的输出可以看到file命令不仅能识别普通文件和目录还能告诉我们可执行程序的系统架构这里是x
位。
3 一个重要的认知课堂上强调了一个重要观点Linux中85%以上的命令都是用C语言编写的二进制可执行程序。
file命令可以帮助我们验证这一点# 查看常用命令的本质file/usr/bin/cpfile/usr/bin/mvfile/usr/bin/gcc这些命令本质上都是/usr/bin目录下的二进制文件当我们输入命令时系统实际上就是执行这些程序。
SCP命令跨主机的文件传输
1 从本地拷贝到远程拷贝前面的cp命令只能在本地文件系统中复制文件但在实际工作中我们经常需要把文件从一台Linux服务器传输到另一台。
比如你有两台云服务器想把A服务器上的配置文件复制到B服务器怎么办SCPSecure Copy Protocol就是解决这个问题的利器。
它基于SSH协议可以在两台Linux主机之间安全地传输文件。
2 SCP基本语法scp源文件 用户名目标主机:目标路径
3 实战演示假设我们有两台机器本地机器CentOS 7远程机器UbuntuIP地址为
192.
168.
100用户名whb要把本地的lesson
tgz复制到远程机器的/home/whb/目录scplesson
tgz whb
192.
168.
100:/home/whb/执行后会提示输入密码whb
192.
168.
100s password:重要细节输入密码时终端不会回显任何字符连星号都没有这是为了安全考虑。
你只管输入输完按回车即可。
4 几个关键细节课堂上老师强调了几个容易踩坑的细节密码不回显输入密码时屏幕没有任何反馈这是正常现象不是卡住了。
身份认证SCP需要目标机器的用户名和密码进行认证。
就像你去朋友家送东西需要朋友给你钥匙密码才能进门。
首次连接确认如果是第一次连接某台机器SCP会询问是否确认连接Are you sure you want to continue connecting (yes/no)?输入yes即可。
指定端口如果远程SSH服务不是默认的22端口可以用-P选项指定scp-P2222lesson
tgz whb
192.
168.
100:/home/whb/
5 SCP与cp的关系老师用一句话
总结了二者的关系cp是本地拷贝SCP是远程拷贝。
cp能干的SCP都能干只是SCP多了网络传输的能力。
记住这一点以后遇到跨主机传输文件的场景就能想到SCP这个工具。
BC命令命令行下的计算器
1 为什么需要BC在Linux命令行中有时候我们需要做一些简单的数学计算。
虽然可以用Python或者expr但BCBasic Calculator是更轻量、更专业的选择。
2 BC的基本用法直接输入bc进入交互模式$bcbc
1.
0
1 Copyright
,1997,1998,2000,2004,2006,2008,
Free Software Foundation, Inc. This isfreesoftware with ABSOLUTELY NO WARRANTY. For detailstypewarranty.11210*90900100*100/2/31666按CtrlD或输入quit退出。
3 配合管道使用BC最强大的地方在于可以配合管道接收其他命令的输出作为输入# 计算1到100的和echo12345678910|bc# 输出: 55# 更复杂的计算echoscale2; 10/3|bc# 输出:
33scale2表示保留两位小数这在需要精确计算的场景非常有用。
4 课堂小结老师说得很实在“Linux下有计算器知道就行了。
真正需要复杂计算的时候我们可能会用Python或者其他工具。
但BC作为一个轻量级的命令行计算器在某些场景下还是很方便的。
”
系统信息查看uname的妙用
1 面试常问的系统信息在面试中面试官经常会问一些系统相关的问题“你的计算机体系结构是什么”“如何查看Linux内核版本”“怎么确定你的Linux发行版”这些问题都可以用uname命令来回答。
2 uname常用选项# 查看内核版本uname-r# 输出:
3.
1
0-
el
x86_64# 查看所有信息uname-a# 输出: Linux localhost
3.
1
0-
el
x86_64 #1 SMP ... x86_64 GNU/Linux# 查看体系结构uname-m# 输出: x86_
6
3 解读版本号以
3.
1
0-
el
x86_64为例3主版本号10次版本号0修订号1160构建号el7Enterprise Linux 7表示CentOS/RHEL 7x86_6464位x86架构
4 查看发行版信息如果想查看具体的Linux发行版如CentOS、Ubuntu等可以查看/etc/os-release文件cat/etc/os-release输出示例CentOS 7NAMECentOS Linux VERSION7 (Core) IDcentos ID_LIKErhel fedora VERSION_ID7 PRETTY_NAMECentOS Linux 7 (Core)
5 体系结构的概念课堂上老师花了不少时间讲解体系结构这个概念。
简单来说体系结构就是CPU的架构类型。
x86Intel和AMD的32位处理器架构x86_64或amd6464位扩展版本现在最主流ARM移动设备常用架构手机、平板老师举了一个生动的例子“2020年之前世界上最牛的硬件公司是英特尔。
你们学的计算机组成原理里的8086架构就是英特尔的经典产品。
后来智能手机时代ARM架构崛起现在手机99%都是ARM处理器。
”理解体系结构很重要因为不同架构的软件是不兼容的。
32位程序可以在64位系统上运行但反过来不行。
效率倍增的快捷键
1 什么是热键热键Hotkey就是键盘快捷键。
老师开玩笑说“去你们宿舍看一眼键盘我就知道你喜欢打什么游戏。
WASD磨损严重的是FPS玩家QWER磨损的是LOL玩家。
”在Linux命令行中掌握快捷键同样能大幅提升效率。
2 必会的快捷键
Ctrl C终止当前程序当程序卡住或运行异常时无脑按CtrlC即可终止。
# 比如运行一个死循环$whiletrue;doechohaha;donehaha haha haha ^C# 按CtrlC终止
Ctrl R历史命令搜索Linux会自动记录你输入过的命令默认最近1000条。
当想不起某个命令时按CtrlR搜索# 按CtrlR然后输入关键字(reverse-i-search)tar:tar-czf lesson
tgz lesson5继续按CtrlR会匹配更早的历史命令。
Ctrl D退出登录在命令行中按CtrlD相当于输入exit会退出当前登录会话。
Tab键命令补全这是提高效率的神器# 输入wh按两次Tab$ whTabTabwhatiswhereiswhichwhowhoami# 输入whoami的前几个字母按Tab自动补全$ whoTab$whoami老师透露“你们看我打字这么快其实很多时候就是按Tab补全的。
输入长文件名时Tab能帮你省下大量时间。
”
3 历史命令的存储Linux默认保存最近1000条历史命令存储在内存中。
可以通过history命令查看history|wc-l# 输出: 1000这个数量是可以配置的但老师建议“记住多少条不重要重要的是用。
经常用的命令你一辈子都忘不掉不用的命令记了也没用。
”
关机命令与服务器哲学
1 关机命令Linux下的关机命令主要有# 立即关机shutdown-h now# 立即重启shutdown-r now# 10分钟后关机并广播消息shutdown-h 10System will shutdown in 10 minutes# 取消关机计划shutdown-c
2 服务器永不关机课堂上老师讲了一个重要的概念服务器通常是7×24小时运行的。
“你们半夜三更刷抖音、逛淘宝为什么随时都能访问因为互联网公司的服务器几乎永不关机。
一台服务器从采购回来上电开始直到报废中间可能只重启过几次。
”这种设计理念叫做高可用性。
对于生产环境的服务器随意关机是严重事故。
所以关机命令一般需要root权限普通用户无法执行。
3 云服务器如何开机有同学问了一个有趣的问题“有关机命令那有没有开机命令”老师的回答很精辟“开机命令没有。
命令需要在操作系统上运行而操作系统需要先开机才能运行命令。
这是一个先有鸡还是先有蛋的问题。
”对于云服务器开机需要在云服务商的管理控制台操作网页上点击开机按钮或者通过物理电源按钮。
这不是命令行能解决的问题。
Shell外壳王婆说媒的故事
1 从命令到内核的距离前面我们学了那么多命令但有没有想过当我们输入ls并回车后到底发生了什么要理解这个问题需要先了解Linux系统的层次结构。
2 广义与狭义的操作系统课堂上老师区分了两个概念广义操作系统 操作系统内核 应用软件包括Windows系统、Office、浏览器、游戏等这是普通用户的认知狭义操作系统 操作系统内核Kernel只包括最核心的部分这是程序员需要深入理解的概念
3 王婆说媒的故事为了解释Shell的作用老师讲了一个生动的故事故事开始在一个村子里小王是个程序员天天和电脑打交道不擅长和女生交流。
到了适婚年龄他看上了隔壁的如花姑娘但不好意思直接表白。
于是小王找来了村里的媒婆——王婆。
小王对王婆说“我喜欢隔壁的如花您能帮我说说吗”王婆听完跑到如花家说“如花啊隔壁小王喜欢你他爹是村长他自己年薪几十万要不要考虑交往一下”如花想了想回复道“王婆对不起我不喜欢小王小时候他上课总说话太吵了。
”王婆回来告诉小王“如花说她配不上你要不我给你介绍别人”故事分析在这个故事中小王 Linux用户你和我王婆 Shell外壳程序如花 操作系统内核说媒的过程 命令执行的过程为什么需要王婆Shell因为小王用户不擅长直接和如花内核打交道。
Shell作为中间层负责接收用户的命令解析命令的含义将命令传递给内核执行把执行结果返回给用户
4 Shell的第二个作用保护内核故事继续小王不死心过了几天又找王婆“王婆能不能再帮我去说说”王婆这次去如花家发现如花已经有了男朋友小帅两人正在吃饭。
王婆连门都没进直接回来告诉小王“人家名花有主了你别去了。
”这里体现了Shell的第二个重要作用——拦截非法请求保护操作系统内核。
如果用户的命令会损害系统Shell可以直接拒绝而不需要麻烦内核。
5 Shell的第三个作用创建子进程故事还没完小王又找到王婆“王婆我爹是村长您就再帮我去一次吧。
”王婆心想“这小子怎么这么执着但我已经去过两次了再去万一被拒绝我王婆的面子往哪搁”于是王婆想了个办法——她成立了一家王婆婚介公司招了个实习生小张。
王婆对小王说“我现在年纪大了嘴笨了让我徒弟小张帮你去说吧。
”实习生小张去了如花家结果…如果成功了功劳算王婆的“我培养的人才”如果失败了责任推给小张“年轻人没经验”如果小张被打了王婆毫发无损这就是Shell的第三个作用——创建子进程来执行命令。
Shell本身不会亲自执行命令而是创建子进程实习生去执行。
这样即使命令执行出错导致进程崩溃Shell本身也不会受影响可以继续接收新的命令。
6 Shell与bash的关系最后澄清一个概念Shell 外壳程序的统称所有命令行解释器的总称bash Shell的一种具体实现Bourne Again Shell就像汽车是一个统称而宝马、奔驰是具体的品牌。
Linux中常见的Shell有bash最常用CentOS/Ubuntu默认sh原始的Bourne Shellzsh功能强大的新贵查看当前使用的Shellecho$SHELL# 输出: /bin/bash
Linux权限初识root与普通用户
1 两类用户Linux系统中的用户分为两大类root用户超级管理员系统中只有一个几乎不受权限约束类似于Windows的Administrator普通用户可以有多个权限受限只能操作自己的文件和目录
2 权限不足的亲身体验# 切换到普通用户suwhb# 尝试往系统目录拷贝文件cphello.txt /usr/bin/# 报错: cp: cannot create regular file /usr/bin/hello.txt: Permission denied同样的操作用root用户就能成功用普通用户就会失败。
这就是权限的力量。
3 切换到root用户当普通用户需要执行高权限操作时可以临时切换到root用户# 切换到root需要输入root密码su-# 或者保留当前环境变量suroot输入密码后命令行提示符会从$变成#表示当前是root用户[whblocalhost ~]$su- Password:[rootlocalhost ~]#重要提醒输入密码时不会有任何回显直接输入后按回车即可。
4 为什么需要权限控制权限控制是操作系统安全的核心机制。
想象一下如果所有用户都能随意修改系统文件普通用户可以删除系统关键文件恶意程序可以破坏系统配置多用户环境下无法保护个人隐私权限系统就像一道防火墙确保每个用户只能做分内的事。
5 实际工作中的建议“学习阶段建议先用root账号因为root不受权限限制不会因为权限问题卡壳。
等掌握了基础知识再切换到普通用户学习权限管理。
”
十、
总结与展望
1
1 本节课的知识地图通过这节课我们完成了以下内容基础指令部分✅ tar命令打包压缩的黄金公式czf/xzf✅ file命令识别文件真实类型✅ SCP命令跨主机安全传输文件✅ BC命令命令行计算器✅ uname命令查看系统和内核信息✅ 快捷键CtrlC/R/D、Tab补全✅ shutdown命令关机和重启系统原理部分✅ Shell外壳用户与内核之间的桥梁✅ 进程创建子进程执行机制✅ 用户权限root与普通用户的区别
1
2 学习方法论“如果一个知识被你忘记了说明这个知识不属于你你也不需要它。
真正重要的知识你会天天用到一辈子都忘不掉。
”所以不要死记硬背命令而是要在实际工作中多用。
用得多了自然就记住了。
1
3 后续学习路线基础指令部分到此告一段落。
接下来我们将进入开发工具篇yum、vim、gcc/g、Makefile、gdb系统编程篇进程、线程、文件IO、网络编程项目实战用所学知识完成真实项目
1
4 写在最后Linux学习是一个循序渐进的过程。
前面的40多个基础指令就像是学武的基本功看似枯燥却是后续一切高级技巧的根基。
当你熟练掌握了这些指令你会发现命令行操作比图形界面更高效、更强大。
“命令行是程序员的母语。
当你能流畅地使用命令行时你就真正入门了Linux。
”希望这篇文章能帮助你巩固课堂所学在Linux学习的道路上更进一步。
附录常用命令速查表命令用途常用示例tar打包压缩tar -czf file.tgz dir/tar解压解包tar -xzf file.tgzfile查看文件类型file filenamescp远程拷贝scp file userhost:/pathbc计算器echo 11 | bcuname系统信息uname -r,uname -ashutdown关机/重启shutdown -h nowsu切换用户su -history历史命令history | grep keyword