资讯详情

资讯详情

Unix/Linux核心概念入门:操作系统、文件系统与权限

简介这份《Unix/Linux基础讲义.doc》面向操作系统入门学习者、计算机专业低年级学生以及需要梳理知识脉络的开发者。它围绕Unix/Linux的由来、体系结构与核心概念展开帮助读者建立从操作系统定位到发行版生态的整体认知。讲义从操作系统的目标以及它在计算机系统中承上启下的地位讲起串联Unix家族演进、Linux诞生过程以及Unix、Minix、GNU计划、POSIX标准和互联网这五大支柱再延伸到内核与发行版、X Window图形系统、服务器与嵌入式等应用领域兼顾概念解释与知识框架搭建。资源包内共1个doc文档压缩包约13.46MB适合课程预习复习、面试前查漏补缺或自学时按章节对照阅读。目前已有325人学习可作为入门阶段快速了解Unix/Linux全貌的参考材料。1. 到底什么是 Unix/Linux从一块只会闪光标的黑屏说起很多人对 Unix/Linux 的第一印象来自影视剧里那块发亮的黑屏没有图标、没有鼠标指针只有一行行字符往上翻。这块黑屏背后站着的东西就是 Unix/Linux 这类操作系统。通俗地说操作系统是夹在硬件和应用程序之间的一层软件往下一个方向它把处理器、内存、硬盘、打印机这些零部件管起来往上一个方向它给各种程序提供一套统一的调用方式。Unix/Linux 是这套东西里的一条技术血脉特点是多用户、多任务、可裁剪、能长时间稳定运行今天大量服务器、嵌入式设备和开发机跑的都是它。搞懂它不是为了背下几百条命令而是为了弄明白一台机器凭什么能同时伺候很多人、凭什么插上新设备就能用。2. 操作系统的位置为什么它必须“夹”在硬件和应用之间一台只有硬件的计算机本质上就是一堆能通电的沙子。它不会自己读文件不会自己决定该把处理器时间给谁更不会主动告诉你磁盘满了。把这些“不会”变成“会”的就是操作系统。理解 Unix/Linux第一步不是记命令而是先看清它在整台机器里站在哪一格。2.1 三个目标方便、有效、扩展操作系统的设计目标可以压缩成三个词方便、有效、扩展。方便指的是让计算机系统易于使用。用户按下回车程序就能跑起来中间那一大串电压、扇区、中断的细节都被藏起来了。有效指的是以更有效的方式使用计算机系统资源。处理器只有那么几颗内存只有那么多硬盘读写速度有限操作系统要在这些有限条件里做调度和分配尽量不浪费。扩展指的是方便用户有效地开发、测试和引进新功能。一个新程序写出来不用改动硬件、不用重写底层驱动直接就能跑这才叫可扩展。打个比方操作系统像一家餐厅的前厅经理。后厨是硬件锅碗瓢盆、灶台、冰箱都在那儿顾客是应用程序和用户只关心菜好不好吃。前厅经理干的事把后厨的能力包装成一份菜单方便根据客流安排出菜顺序、不让某道菜把灶台占死有效还要留出余地接新菜品、加新桌位扩展。没有这层经理顾客得自己进后厨抢灶台。目标通俗解释缺了它会怎样方便把硬件细节包装成人能操作的接口每换一台机器程序都得重写一遍有效在有限资源里做调度和分配处理器空转内存互相打架硬盘被抢成瓶颈扩展让新功能能被开发、测试、引进来系统僵死加一个功能要动全身这三个目标之间是有张力的。过度追求“方便”接口做得花哨效率就掉过度追求“有效”调度策略激进普通用户用起来就难受。Unix/Linux 这条血脉的取舍是接口尽量少而稳定把复杂性压到少数几个概念里剩下的交给使用者自己组合。这也是它后来能长成一片森林的根本原因。2.2 承上启下向下封装硬件向上提供接口操作系统在计算机系统里处于承上启下的位置向下封装硬件向上提供操作接口。这句话听起来抽象落到具体场景就很好懂。你在程序里写一句“把这段文字存到文件里”底层实际发生的事可能包括找到这个文件在磁盘上的位置、判断磁盘是机械盘还是固态盘、决定是直接写还是先放进缓存、处理写入过程中可能出现的错误、最后更新文件的元信息。这中间的每一步都和具体硬件强相关。如果每个程序都要自己处理这些那写程序就不用干别的了。操作系统做的事就是把这些差异统一掉只对外暴露一个“写文件”的动作。程序调用这个动作不用管底下是哪种盘、哪种接口、哪个品牌的设备。这个“统一掉差异”的过程就是封装。封装的上方是接口接口的下方是驱动和硬件。这也是为什么同一个程序换一台机器、换一块硬盘往往还能直接跑。它依赖的不是某块具体的硬件而是操作系统提供的那层抽象。理解这一点后面很多设计就顺了为什么 Linux 把设备也当成文件为什么目录结构要标准化为什么权限要单独设计一套——它们都是在维护同一件事也就是让上层看到的世界足够简单、足够一致。2.3 多用户多任务一台机器怎么同时伺候很多人Unix 系统从一开始就带着两个标签多用户、多任务。允许多人同时访问计算机并同时运行多个任务。这两个词在今天听起来平平无奇但放回它诞生的年代是很奢侈的能力。那时候一台小型机价格昂贵普通用户根本买不起只能几十个人共用一台机器每个人面前摆一台终端通过线路连到主机上。主机要做的是在几十个用户之间来回切换让每个人都不觉得自己在排队。做法是分时。处理器把时间切成很短的片段一个片段给这个用户的任务下一个片段给另一个用户的任务切换速度足够快每个人就都觉得自己独占了一台机器。这跟餐厅服务员轮流照顾多桌是一个道理服务员只有一个人但通过快速轮转每桌客人都不至于干等太久。多任务则是在单个用户内部再切一层。一个人可以一边编辑文档、一边编译程序、一边挂着下载三件事交替推进。代价是调度变得更复杂谁先跑、跑多久、内存不够时先牺牲谁都需要策略。Unix 系统在这些方面积累了口碑稳定、高效、安全、方便、功能强大从二十世纪七十年代开始便运行在许多大型和小型计算机上。但它的短板也同样明显——它是一种对运行平台要求很高的操作系统往往只能在 workstation 或小型机上才能发挥全部功能价格昂贵对普通用户来说可望而不可及。这个落差正是后来 Linux 崛起的机会窗口。3. 一条血脉两种命运Unix 家族与 Linux 家族到底怎么来的很多人第一次看到“Unix/Linux”这个写法会以为是同一个东西的两种叫法。其实不是。它们是两条血脉一条更早、更贵、更封闭一条更晚、更便宜、更开放。搞清楚这两条线的来龙去脉比背十个命令有用得多因为它解释了今天这个生态为什么长成这个样子。3.1 Unix 的诞生与分叉从一次失败的项目开始故事的开头其实是一次失败。1965 年某实验室加入了一项由多家机构合作的计划目标是建立一套多使用者、多任务、多层次的操作系统。想法很宏大但项目本身太复杂最终没能做成。失败的项目留下了人和经验。1969 年该项目的一位主要开发者带着一组人做了一个新的多任务操作系统最初叫 UNICS后来改名为 Unix。最初的 Unix 是用 B 语言和汇编语言混合编写的。1971 年这个小组又发明了 C 语言并在 1973 年用 C 语言把 Unix 重写了一遍。这次重写是整个故事的转折点。用汇编写的系统换一种机器就得重写一遍用 C 写的系统只要目标机器上有 C 编译器代码搬过去重新编译就能跑。这一步把 Unix 从“某台机器上的系统”变成了“可以到处搬的系统”。打个比方原来的菜谱是用只有本店厨师看得懂的暗号写的换个厨房就废了改成通用文字以后谁都能照着做。1974 年Unix 第一次出现在实验室以外。此后它被研究机构、企业和高校注意到并逐渐流行开来。1980 年市面上形成了两条主要的版本线一条来自高校一条来自公司。两者的竞争后来被称作“Unix 战争”结果是 Unix 出现了各种各样的变种——同一个名字底下各家实现互不相同。1982 年那家公司基于版本 7 开发了第一个商业版本并且不再开源。这一步直接改变了游戏的走向。此后近十年里由于版权问题公司与高校那条版本线的开发组打了一场旷日持久的官司从 1992 年一直拖到 2001 年前后。这场官司的后果是双输Unix 因为费用昂贵只局限于大型机上的应用高校那条线则因为版权纠纷失去了宝贵的发展时期。留个心眼记住这个结局一个技术能不能普及从来不只取决于它好不好还取决于它贵不贵、能不能自由使用。后面 Linux 的整段历史都是在这个结论上长出来的。3.2 Linux 的补位一个学生内核和它背后的五根支柱在 Unix 各分支互相消耗的那些年里教学领域出现了一个小东西。某位教授仿照高校那条版本线的源代码白手起家用 12000 行 C 语言写了一个小型系统取名 Minix。它的定位很明确教学工具。让学生能在课上读懂一个操作系统的骨架。也正因为是教学工具它没有什么实际应用价值功能有限也不打算做成生产系统。真正的转折发生在 1990 年。一位学生开发者决定编写一个自己的内核最初的命名带着“这是我自己那份 Minix”的意思后来改名为 Linux。这个内核在 1991 年正式发布并逐渐引起人们的注意。一个人写一个内核听起来像孤胆英雄的故事但实际上完全不是。Linux 的诞生、发展和成长依赖五个重要支柱Unix 操作系统、Minix 操作系统、GNU 计划、POSIX 标准和互联网。Unix 提供了设计范式和几十年的经验积累Minix 提供了一个可以读、可以学的骨架GNU 计划提供了绝大多数外围工具POSIX 标准保证了接口的一致性互联网让全世界的修改能够汇总到一处由开源社区甄别、修改再决定是否进入主线。GNU 计划值得单独说一句。GNU 是“GNU is Not Unix”的递归缩写1984 年由一位开发者创办目标是开发一个免费、类 Unix 的操作系统及其开发工具。Emacs 编辑系统、BASH shell 程序、GCC、GDB 这些开发工具都是这个组织的产品。注意这里的措辞GNU 计划造出了操作系统缺的那一大堆零件唯独自己的内核没做出来Linux 造出了内核但外围工具不够。1992 年Linux 与其他 GNU 软件结合一个完全自由的操作系统正式诞生通常被称为“GNU/Linux”或者简称 Linux。POSIX 标准则是那个把所有人拉到同一张桌子上的东西。它定义了操作系统应该为应用程序提供的接口标准用来统一 Unix、Linux 各分支的编程接口提高通用性和可移植性。通俗地说它规定的是“不管你是哪家的系统这个函数得叫这个名字、收这几个参数、返回这个意思”。有了它一份代码在这些系统之间搬家改动量才可控。3.3 内核与发行版心脏和外衣很多人第一次装 Linux 会懵搜出来一堆名字长的短的都有到底该下哪个这个问题之所以让人困惑是因为“Linux”这个词被用在两个层级上。第一个层级是内核。内核是系统的心脏是运行程序和管理磁盘、打印机等硬件设备的核心程序它提供了一个在裸设备与应用程序之间的抽象层。内核版本又分为稳定版和开发版两种版本相互关联、相互循环。稳定版具有工业级强度可以广泛地应用和部署新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序开发版要试验各种解决方案所以变化很快。全世界对内核源码的修改最终都会汇总到一个统一的源码站点由开源社区甄别和修改最终决定是否进入主线。第二个层级是发行版也叫 GNU/Linux 发行版。它通常包含桌面环境、办公套件、媒体播放器、数据库等应用软件由 Linux 内核、来自 GNU 计划的大量函数库、以及基于 X Window 的图形界面组合而成。X Window 值得多讲一句因为它常被误解。它是一个图形窗口系统是类 Unix 系统的图形用户界面的工业标准最重要的特征之一是结构与设备无关。它是客户机/服务器结构的主要由 X Server 和 X Client 两部分组成它的实现与操作系统内核分开并且它不是 Unix/Linux 操作系统必须的构成部分只是一个可选的应用程序组件。“可选”两个字很关键——服务器上不装图形界面照样跑得很好这正是 Linux 能在服务器领域站稳的原因之一。对比项内核发行版是什么系统的心脏管理硬件、调度进程、提供抽象层内核 函数库 图形界面 应用软件的整包谁在做全球开发者提交社区甄别后进入主线各家厂商或社区团队各自打包维护版本节奏稳定版与开发版交替循环随打包的上游组件更新而变与内核版本不同步能不能直接用单独一个内核基本没法日常使用装上就能用含桌面、办公、播放器等3.4 免费不是唯一理由Linux 的九个特点Linux 是免费的、不受版权制约、与 Unix 兼容的操作系统。它在 x86 架构上实现了 Unix 系统的全部特性具有多用户多任务的能力同时保持了高效性和稳定性。原文列了九条开放性、完全免费、多用户、多任务、良好的用户界面、设备独立性、丰富的网络功能、可靠的系统安全性、良好的可移植性。这九条里真正撑起它地位的是三条。设备独立性让同一份系统能跑在千差万别的硬件上从机架服务器到只有几兆内存的嵌入式板子丰富的网络功能让它在服务器领域几乎无对手Web、FTP、邮件、DNS、缓存这些服务都能直接架起来还支持集群与虚拟主机良好的可移植性则继承自 C 语言重写 Unix 那一脉的老传统。至于“完全免费”它的意义不只是省钱。免费意味着任何人都能拿到源码、读它、改它、在自己的设备上试它这直接把学习和试错的成本压到了接近于零。一个学生可以在自己的旧电脑上装一套完整系统把内核、目录、权限、命令一条条摸清楚这在 Unix 昂贵的年代是不可想象的。4. 一切皆文件为什么 Linux 里找不到 C 盘 D 盘从 Windows 转过来的人第一个卡住的地方几乎都是这个盘符去哪了打开“计算机”看到的是一个个驱动器盘符每个驱动器都有自己的根目录结构打开 Linux看到的只是一堆文件夹没有 C 盘、没有 D 盘。这不是界面设计偷懒而是两种文件系统思路的根本差别。4.1 一棵树 vs 多棵树单一根目录与挂载Windows 的做法是多个树并列每个驱动器各自是一棵树树与树之间靠盘符区分。Linux 的做法是单一根目录结构所有的分区都挂载到单一的“/”目录上有且只有一个根。打个比方。Windows 像几个独立的仓库各自挂各自的门牌你要找东西得先想清楚在哪个仓库。Linux 像一栋大楼只有一个大门所有分区都是接进来的侧楼——二楼是某个分区三楼是另一个分区但从大门进去以后你不用关心哪层楼是独立结构只要知道门牌号就行。这种统一带来一个直接好处路径是全局唯一的。在 Windows 里同一个文件在不同盘符下可能有相同的相对路径容易混淆在 Linux 里一个路径指向一个位置没有歧义。这套结构也不是一开始就整齐。早期的 Unix 系统里各个厂家各自定义自己的文件目录比较混乱。Linux 面世不久后对文件目录进行了标准化于 1994 年对根文件目录做了统一规范推出了 FHSFilesystem Hierarchy Standard文件系统层次结构标准规定了根目录下各文件夹的名称及作用统一了命名混乱的局面。有句话说得挺准无论何种版本的发行版桌面、应用是外衣文件组织、目录结构才是内心。换一套桌面外表全变但 /etc 还是放配置/var 还是放变化的数据。4.2 绝对路径与相对路径/ 与 . 和 ..在确定文件、目录位置时Unix/Linux 采用“路径名 文件名”的方式路径反映的是目录与目录之间的关系。组成路径的目录分隔符是斜杠“/”而 DOS 用的是反斜杠“\”。这个差别让无数人在第一次写路径时翻车。路径分两种。绝对路径是从目录树的树根“/”开始往下直至到达文件所经过的所有节点目录下级目录接在上级目录后面用“/”隔开。因为绝对路径都从“/”开始所以第一个字符一定是“/”。相对路径则是指目标目录相对于当前目录的位置。如果目标不在当前目录下就要用到两个特殊目录“.”指向当前目录“..”指向上一级目录。写法类型从哪儿开始算说明/home/edu/note.txt绝对路径根目录/无论当前在哪指向都一样edu/note.txt相对路径当前目录当前目录变了指向就变了./note.txt相对路径当前目录.显式写出当前目录../note.txt相对路径上一级目录..代表父目录这两个特殊目录不是花架子。目录文件至少包括两个条目“..”表示上一级目录“.”表示该目录本身。也就是说每个目录里天然就躺着这两个入口供你在路径里引用。判断用哪种很简单这个位置会不会在别的目录下被引用会就用绝对路径只在当前目录附近活动用相对路径更省事。写脚本时尤其要注意脚本执行时的当前目录未必是你敲命令时的那个目录这时候老老实实写绝对路径能省掉一大堆“为什么本地能跑、定时任务里就报错”的玄学问题。4.3 FHS 目录速查/etc 放配置、/var 放变化的东西根目录下这些文件夹各有各的职责。不用背但至少要认得常用的那几个。目录放什么记忆点/根目录一般只存放目录一切从这里开始/bin、/usr/bin可执行二进制文件如 ls、tar、mv、cat普通用户能用的命令/sbin、/usr/sbin、/usr/local/sbin系统管理员使用的可执行命令如 fdisk、shutdown、mount给 root 用的命令普通用户一般只能查看/boot系统启动时用到的文件如内核文件、引导管理器开机相关别乱动/dev设备文件访问其中某个文件相当于访问某个设备设备被映射成文件的地方/etc系统配置文件改配置来这里不建议放可执行文件/home默认的用户家目录~表示当前用户家目录你的东西基本都在这/root系统管理员的家目录和/不是一回事/lib、/usr/lib、/usr/local/lib系统使用的函数库程序运行时需要调用的额外支持/mnt、/media挂载点光盘等常挂在这里临时接入的外部存储/opt给主机额外安装软件所摆放的目录第三方大件软件/proc数据都在内存中如系统核心、外部设备、网络状态不占磁盘空间/tmp临时文件目录任何人都可以访问重要数据别放这/srv服务启动之后需要访问的数据目录服务型数据/usr应用程序存放目录含 bin、share、lib、local 等子目录体量最大的一个/var系统执行过程中经常变化的文件如日志会一直长大的目录/lostfound系统异常产生错误时遗失的片段放这里出现异常后才会用上这张表里最该先记住的是三个/etc改配置、/var看日志、/home找自己的文件。剩下的大部分等你真的碰到时再查也不迟。4.4 五种文件类型与九位权限“一切皆文件”是 Unix/Linux 最有名的一句话。它的实际含义是对数据文件、程序文件、设备文件显示器、触摸屏、鼠标、网络文件socket等的管理都抽象为文件使用统一的方式方法管理。好处是一套接口通吃读文件、读设备、读网络连接用的是同一类操作。但“一切皆文件”不等于“所有东西都是文本文件”。系统仍然要区分文件类型通过类型可以判断这个文件属于可执行文件、文本文件还是数据文件。常用的类型有五种普通文件、目录文件、设备文件、管道文件、链接文件。普通文件用于存放数据、程序等信息一般长期存放在外存储器中包括文本文件、数据文件、可执行的二进制程序文件。目录文件是把目录看成一种特殊文件用它构成树型结构只允许系统管理员修改用户进程可以读取但不能修改。设备文件把每个设备都映射成一个文件用于向 I/O 设备提供连接分为字符设备和块设备字符设备以字符为单位存取块设备以字符块为单位存取每一种 I/O 设备对应一个设备文件放在/dev下。管道文件多用于进程间的通信。链接文件类似于 Windows 下的快捷方式又分为软链接符号链接和硬链接。权限则是另一套并行的机制。Unix/Linux 是典型的多用户系统不同用户处于不同地位对文件和目录有不同的访问权限。每个文件或目录都包含访问权限决定了谁能访问、如何访问。访问者分三类所有者创建文件的用户、用户组被归为一组的用户比如某个项目的全部成员、其他用户系统内剩下的所有人。这个模型很像空间权限这个空间是我的我相当于管理者想怎么访问就怎么访问我可以设置允许好友访问好友类似于用户组也可以允许所有人访问所有人就是其他用户。权限本身有三种读r、写w、执行x。对文件而言读是读取内容写是新增修改内容执行是能把它跑起来。对目录而言含义略有不同读是浏览目录写是删除、移动目录内的文件执行是进入目录。这个差别是初学阶段最容易踩的坑之一——一个目录如果没有 x 权限你哪怕知道里面有什么也进不去。# -l 表示以长列表格式显示能看到类型位和九位权限 ls -l /etc/passwd /home # 输出大致如下不同发行版在细节上略有差异 # -rw-r--r-- 1 root root 2410 5月 12 09:31 /etc/passwd # drwxr-xr-x 5 edu edu 4096 5月 12 09:20 /home看懂这两行权限就算入门了。每行第一个字母代表文件类型“d”代表文件夹“-”代表普通文件“c”代表硬件字符设备“b”代表硬件块设备“s”表示管道文件“l”代表软链接文件。后面九个字母分三组依次是所有者、用户组、其他用户的权限每组三位对应读、写、执行。以-rw-r--r--为例这是一个普通文件所有者可读可写不可执行同组用户只读其他人也只读。drwxr-xr-x则是一个目录所有者可读写并进入其他两组可读可进入但不可写。注意通常只有文件的属主所有者或超级用户才能改变文件的读写权限。这不是限制是保护——否则任何人都能改别人文件的权限多用户的意义就没了。5. 五个最容易踩的易混点Linux 与 Unix、内核与发行版、路径与目录概念讲完接下来是最容易出错的部分。下面这五组东西名字看着像、用起来也像但混淆之后的后果差别很大有的只是说不清楚有的会直接让你在机器上敲错命令。5.1 易混点一Linux 和 Unix 是不是一回事易混点看到“类 Unix”“Unix/Linux”这种写法很容易以为 Linux 就是 Unix 的一个新版本。为什么混两者在接口层面高度相似命令长得几乎一样目录结构也一脉相承。Linux 在设计上确实大量借鉴了 Unix甚至可以说就是照着它的样子做的。加上“Unix/Linux”常常被连在一起写更像同一个东西的两种称呼。怎么区分抓住所有权和代码来源。Unix 是早期那套系统的名字后来分叉出多个变种其中一支走向商业闭源价格昂贵主要跑在大型机和小型机上。Linux 是另一套独立编写的内核是免费的、不受版权制约的、与 Unix 兼容的操作系统。它没有拿 Unix 的代码来改而是重新实现了一套行为兼容的东西。“兼容”和“是同一个”完全是两码事。就像两种品牌的插座都能插同一个插头但它们是两家厂做的。5.2 易混点二内核版本号和发行版版本号易混点看到系统信息里一串版本数字以为那就是“Linux 的版本”。为什么混都叫版本号都长得像数字加小数点报问题的时候又常常只说“我这是几点几版”。怎么区分看这个号属于谁。内核版本跟的是内核主线稳定版和开发版相互循环稳定版相对旧版主要是修 bug 和加新驱动开发版变化快。发行版版本跟的是打包方它把某个时间点的内核、函数库、桌面环境、办公套件、播放器等等凑成一整包自己编个号。所以同一个发行版版本里内核可能是这个号也可能是那个号同一个内核也能被不同发行版打进去。报问题时把两个号都带上别人才判断得了。5.3 易混点三/bin 和 /sbin/usr/bin 和 /usr/sbin易混点四个目录里放的都是可执行文件看起来完全重复。为什么混都是命令敲下去都能跑初学者很难理解为什么要分成四份。怎么区分看给谁用。/bin和/usr/bin放的是常用命令比如 ls、tar、mv、cat普通用户就能用。/sbin、/usr/sbin、/usr/local/sbin放的是系统管理员使用的可执行命令比如 fdisk、shutdown、mount一般用户只能“查看”而不能设置和使用。记法很简单s 是 system 或 superuser 的意思带 s 的偏管理。/usr/local那一层则通常留给本地额外安装的软件和系统自带的区分开。5.4 易混点四绝对路径和相对路径混着用易混点cd /home和cd home看起来只差一个斜杠效果可能天差地别。为什么混手敲的时候少打一个字符太常见了而且在某些当前目录下两种写法碰巧都能到达类似的地方于是错误被掩盖直到换个目录才爆出来。怎么区分绝对路径一定以“/”开头从根目录往下走跟你在哪无关相对路径不以“/”开头从当前目录算起你在哪它就从哪开始。cd /home是去根目录下的 homecd home是去当前目录下那个叫 home 的子目录当前目录如果没有这个名字直接报错。另外别忘了.是当前目录、..是上一级写cd ..是往上退一层写cd .是原地不动——后者看起来没意义但在脚本里用来显式表达“就在当前目录”很常见。5.5 易混点五软链接和硬链接易混点两者都叫链接都能让你通过一个名字访问到另一处内容。为什么混日常用起来感觉差不多点进去都能打开文件删掉一个另一个有时还在、有时就废了规律不明显。怎么区分软链接符号链接更像 Windows 下的快捷方式它本身是一个独立的小文件里面存的是目标路径目标没了它就悬空。硬链接则是同一个文件内容多挂了一个名字两个名字地位平等删掉其中任何一个内容都还在直到所有名字都被删掉才真正释放。判断方法很直接用ls -l看类型位l开头的是软链接后面还会用箭头指出它指向哪里硬链接在类型位上没有特殊标记只能靠对比链接计数看出来。6. 什么时候该敲命令一份边界清单命令行的样子确实劝退黑底白字没有按钮敲错一个字符就报一串看不懂的提示。但它存在的理由很实在——许多功能在命令行界面下比在图形界面下运行得更快而且能组合、能写进脚本、能在没有图形界面的机器上跑。先看基本格式command [-options] [parameter1] ...。command 是命令名通常是相应功能的英文单词或缩写[-options] 是选项用来对命令进行控制也可以省略方括号代表可选parameter 是传给命令的参数可以零个、一个或多个。# 查看 ls 自带的简要帮助并非所有命令都有这个选项 ls --help # 查 man 手册第 1 章标准命令里的 ls指定章节号更保险 man 1 ls # 把当前目录的详细列表写进 list.txt 会覆盖同名文件的内容 ls -l list.txtman是系统提供的手册包含绝大部分命令和函数的使用说明分成多个章节标准命令、系统调用、库函数、设备文件说明、文件格式、游戏和娱乐、杂项、管理员命令。不指定章节号时man 按章节顺序搜索所以遇到命令名和函数名重名的情况比如 printf最好显式写上章节号否则你查到的可能不是你想要的那份。翻页用空格键下一屏、回车滚一行、b 回滚一屏、q 退出、h 列出功能键、/word搜索字符串。再记两个提效技巧敲命令前几个字母时按 Tab 键自动补全能省掉大量拼写错误按上下键可以翻看历史命令history会把执行过的命令列出来翻旧账的时候很有用。那什么时候别用命令行给个简单的判断表场景建议原因批量重命名几百个文件、按规则筛选用命令行图形界面点几百次不现实一条通配符加一条命令搞定要重复执行的日常操作用命令行可以写进脚本下次直接跑不用重来一遍远程连一台没有图形界面的服务器用命令行那是唯一选择只是给三五个文件改个名图形界面更省事敲命令的时间够点完了需要预览图片、调排版图形界面命令行看不到效果自己不熟悉的破坏性操作先查 man 再动手命令没有回收站一敲就把原文件覆盖了我自己就栽过一次想清一个临时目录手快敲了个带通配符的删除当时以为当前目录是/tmp实际上还停在项目目录里回车之后才发现删的是源码而且命令行没有后悔药。从那以后我每次敲带通配符的删除或者重定向之前都强制先跑一遍pwd和ls确认自己在哪、要动的是哪些文件两步不到十秒钟能省掉一整晚。这份讲义把目录结构、路径、权限、文件类型这些基本概念串起来讲了一遍配着上面的示例敲一遍会发现这套东西其实有清晰的逻辑。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →