当前位置: 首页 > news >正文

从零开始学Linux(三)

完成了虚拟机的安装和远程连接配置之后,我的Linux学习之旅终于进入了最核心的操作环节。前两天的实践中,我已经通过Xshell成功连接到了虚拟机,看着终端里那个不断闪烁的光标,说实话既兴奋又有些不知所措。图形界面的鼠标点按在这里完全失效了,一切操作都要靠敲击键盘输入命令来完成。但我知道这正是Linux的精髓所在,几乎所有的服务器管理、开发部署都要在命令行环境下进行,早一天熟悉就早一天掌握主动权。于是借着课程进度,我翻开了Linux基础命令这一章,从最基础的文件系统结构开始,逐步把日常操作需要用到的命令都过了一遍。这篇文章就是我整个学习过程的完整记录,既包含了每个命令的用法和参数,也记录了我在操作中遇到的错误和排查思路。

在开始敲命令之前,我觉得有必要先理解Linux是怎么组织文件的。这和Windows有本质的区别,Windows为每个物理磁盘分配一个盘符,比如C盘、D盘,每个盘符都有自己的根目录,访问文件的时候要先指定盘符再指定路径。而Linux采用了一套完全不同的虚拟目录结构,整个系统只有一个根目录,用正斜线/表示,所有的文件和目录都从这根目录开始层层展开。不管物理硬盘有多少块,它们都会通过挂载点的方式整合到这一个统一的目录树中,比如第一块硬盘可能挂载在/根目录下,第二块硬盘挂载在/home下,用户访问/home目录时实际上是在访问第二块硬盘的数据,但从路径上看完全察觉不到底层的物理差异。这种设计让文件路径变得非常清晰和一致,不管系统里接了多少存储设备,路径的写法永远是从根目录开始的绝对路径,或者相对于当前所在位置的相对路径。登录系统之后,每个用户都会被分配一个主目录,通常位于/home/用户名,用波浪号~来简写表示,这就是我们每次打开终端默认停留的地方。

理解了文件系统的结构之后,第一个要掌握的就是如何在目录之间切换,这要用到cd命令。cd的全称是change directory,它接受一个路径参数,可以是绝对路径也可以相对路径。绝对路径是从根目录/写起的完整路径,比如cd /etc/nginx就是直接跳转到nginx的配置目录,无论当前在什么位置都能准确到达。相对路径则是相对于当前目录的写法,比如当前在/home/user,执行cd Documents就会进入/home/user/Documents,这里隐含了一个前提就是Documents是当前目录下的子目录。相对路径中有几个特殊符号需要牢牢记住,单点符.代表当前目录本身,双点符..代表父目录也就是上一级目录,波浪号~代表自己的主目录,减号-代表上一次所在的目录。使用cd ..返回上一级是最常用的操作之一,而cd -则在两个目录之间来回切换时特别方便,比如从/var/log切换到/etc后想再回到/var/log,输入cd -就可以了,shell会记住你从哪里来的。掌握了这些,在目录树里穿梭基本上就没有什么障碍了。

知道了怎么切换目录,接下来自然需要知道当前目录下到底有什么东西,这就是ls命令做的事情。ls是list的缩写,不加任何参数的时候它会列出当前目录下的所有非隐藏文件和目录,默认按字母顺序排列。但这个输出太简略了,实际使用中几乎总是会搭配各种参数来获得更详细的信息。-l参数是我用得最多的一个,它会产生长列表格式的输出,每一行代表一个文件或目录,从左到右依次显示文件类型、权限字符串、硬链接数量、所有者用户名、所属组名、文件大小(以字节为单位)、最后修改时间以及文件或目录的名称。文件类型的标识位在第一列的第一个字符,如果是-表示普通文件,d表示目录,l表示符号链接文件,cb分别表示字符设备和块设备。权限字符串由九位字符组成,每三位一组分别代表所有者、所属组和其他用户的读、写、执行权限,r表示可读,w表示可写,x表示可执行,如果某个权限被禁止则显示为-。除了-l-a参数也非常有用,它会把所有以点号开头的隐藏文件也显示出来,Linux中大量配置文件都以隐藏形式存放在用户主目录下,比如.bashrc.profile等,不加-a根本看不到它们。把这两个参数组合起来写成ls -al就能一次性获得最完整的目录信息。如果要查看子目录里的内容,可以使用-R参数进行递归列出,它会逐层深入地展示整个目录树下的所有文件和目录,对于了解一个陌生项目的结构非常有帮助。当目录里的文件特别多而我只想找特定的一部分时,可以用通配符来构建过滤器,问号?匹配任意单个字符,星号*匹配零个或多个字符,方括号[]用于指定字符范围,感叹号!用来排除匹配项。比如ls *.txt列出所有文本文件,ls file?.log匹配file1.log、file2.log等,ls [a-c]*列出所有以a、b或c开头的文件和目录,这些通配符极大提升了文件筛选的效率。

能够看到文件之后,接下来就要学习如何对文件进行各种操作了。创建新文件最简单的方式是touch命令,它后面跟一个文件名,如果该文件不存在就会创建一个大小为零的空文件,如果文件已经存在则只会更新它的访问时间和修改时间而不会改变内容。复制文件用cp命令,格式是cp 源文件 目标文件,如果目标文件已经存在,cp会直接覆盖而没有任何提示,这是非常危险的。所以我在实际操作中几乎都会加上-i参数,这样当目标文件已存在时shell会询问是否覆盖,输入y确认或输入n取消,可以有效防止误覆盖重要文件。cp命令也可以复制整个目录,但需要加上-r-R递归参数,否则会报错跳过目录。移动文件和重命名文件使用的是同一个命令mv,它本质上做的事情是把文件从一个位置挪到另一个位置,如果目标和源在同一个目录下只是名字不同,那就实现了重命名的效果。mv命令同样支持-i参数来进行覆盖前的确认,而且它在移动整个目录时不需要像cp那样加递归参数,直接就能处理。删除文件用rm命令,我必须要提醒自己和其他初学者的是,Linux的shell里没有回收站的概念,被rm删除的文件不会像Windows那样被临时存放,而是直接从文件系统中移除,数据恢复的难度极大。因此我在执行删除操作时总是先加上-i参数确认一遍,确认无误之后再删。如果要删除的是目录,rm默认是不允许直接操作的,需要加上-r-rf参数递归删除目录及其所有子内容,其中-f表示强制删除且不给出任何确认提示,这是一个非常强大的参数,使用前必须三思而后行,我曾经在练习中不小心用rm -rf *删除了当前目录下的所有文件,那种瞬间消失的感觉让人记忆犹新,从那以后我对这个命令始终保持着敬畏之心。

创建和删除目录也有专门的命令。mkdir用来创建新目录,最基本的用法就是mkdir 目录名,但如果要创建的多级目录中某些父目录并不存在,直接mkdir会报错。这时候需要加上-p参数,它会自动创建路径中缺失的所有中间目录,比如mkdir -p project/src/main/java一下子就能把整个嵌套目录结构建好,省去了逐层创建的繁琐。删除空目录用rmdir命令,这个命令比较挑,如果目录里面还有任何文件或子目录,它会拒绝执行并报错提示目录非空。要删除非空目录,要么先用rm把里面的文件清理干净再用rmdir,要么直接用rm -r一步到位,我个人的习惯是优先采用前一种方式,因为分步操作给了自己多一次检查的机会。

Linux里还有一种特殊的文件操作叫做链接,分为硬链接和软链接(也叫符号链接)。硬链接通过ln 源文件 硬链接名来创建,它的本质是在文件系统中为同一个数据块再增加一个入口,执行ls -li查看inode编号时会发现源文件和硬链接文件拥有完全相同的编号,这意味着它们指向的是同一份物理数据。硬链接的一个显著好处是删除源文件或删除任意一个硬链接都不会影响数据的完整性,只有当所有的硬链接和源文件都被删除后,数据块才会被真正释放。但硬链接有限制,它不能跨文件系统创建,也不能为目录创建硬链接。软链接则通过ln -s 源文件 软链接名创建,它存储的是源文件的路径信息,类似于Windows下的快捷方式,因此它的inode编号和源文件不同,文件类型标识为l。软链接可以跨文件系统,也可以指向目录,灵活性更高。但它的缺点是如果源文件被移动或删除,软链接就会失效,在终端中显示为红底白字的闪烁样式,这时候需要用ls -l查看它的指向路径,根据情况决定是恢复源文件还是删除这个失效的链接。

查看文件内容有好几种工具可选,根据文件大小和查看需求来选择。cat命令是最直接的,它把整个文件内容一次性全部输出到屏幕上,适合查看内容较短的配置文件或文本文件,加上-n参数可以为每行显示行号,-b参数则只给有实际文本的行编号而跳过空白行。对于内容较多的日志文件或数据文件,cat会让内容像流水一样哗哗地滚过屏幕,根本来不及看,这时候就要用分页工具了。more命令会一页一页地显示内容,每显示满一屏就暂停下来,屏幕底部会显示当前的进度百分比,按空格键翻到下一页,按回车键逐行向下滚动,按q键随时退出。less命令是more的增强版,它的设计理念甚至被称为"less is more",因为它比more提供了更多的功能。less允许按上下箭头逐行滚动,按PageUp和PageDown翻页,按斜杠/加上关键字可以在文件中向前搜索,按问号?加上关键字则向后搜索,这些功能让less成为了我查看大型文件时的首选。如果只关心文件的开头或结尾部分,headtail命令就派上了用场。head默认显示文件的前十行,tail默认显示末尾十行,通过-n参数可以指定显示的行数,比如head -n 20 access.log显示前20行,tail -n 50 error.log显示最后50行。tail还有一个非常实用的-f参数,它会持续监视文件末尾并实时输出新增的内容,这在排查系统问题时特别有用,比如在另一个终端启动一个服务程序,让日志不断写入某个文件,然后用tail -f实时观察日志输出,服务崩溃或者报错都能第一时间看到。

在实操过程中当然免不了碰到各种错误,我把遇到的典型问题都记录了下来。第一个是权限不够的报错,当尝试用cd进入/root目录或者用cat查看系统日志时,经常会看到Permission denied的提示,这是因为普通用户对系统核心目录没有读取权限。解决方法有两种,要么切换成root用户执行su -,要么在命令前加上sudo临时提权,但这需要当前用户具有sudo权限。第二个是路径写错的问题,Linux的命令行对大小写敏感,Documentsdocuments是完全不同的两个目录,新手很容易在这里栽跟头。养成良好的Tab补全习惯可以大幅降低这类错误,输入路径或文件名的前几个字符后按一下Tab键,shell会自动补全剩余部分,如果匹配项不止一个,再按一次Tab就会列出所有候选,这个功能不但能避免拼写错误,还能加快输入速度。第三个是误删文件的惨痛教训,有一次我本来想删除test.txt,但因为手快输入了rm -rf test/,结果把整个test目录都删掉了。从那以后我对任何删除操作都改用带-i的交互模式,虽然每次多按一个y确实麻烦了一点,但多出来的安全性完全值回这点时间成本。第四个是在创建硬链接时碰到了Invalid cross-device link错误,查阅资料之后才知道硬链接不能跨越不同的文件系统分区,这时改用了软链接就解决了问题。

这次Linux基础命令的学习和实践花了我一整天的时间,从刚开始对着终端发呆不知道从何下手,到后来能够熟练地在目录之间切换、查看文件、进行复制移动和删除操作,进步是肉眼可见的。我把这些命令按照功能分成了几个类别在脑海中形成了自己的知识框架,导航类的有cdpwd,查看类的有lscatmorelessheadtail,文件操作类的有touchcpmvrm,目录管理类的有mkdirrmdir,链接类的有lnln -s,帮助类的有man--help。在后续的学习中,我还会接触到权限管理、进程控制、网络配置和Shell脚本等更深入的内容,但至少现在我已经有了一个稳固的起点,以后每次进入终端看到那个美元符号$提示符的时候,心里是踏实的,因为我知道它背后是可控的、可操作的一个完整世界。希望我记录的这些命令用法和错误排查过程能给同样在入门阶段的同学一些帮助,如果有哪里写得不准确或者有更好的操作方式,也欢迎一起来讨论,共同进步。

http://www.cnnetsun.cn/news/3102024.html

相关文章:

  • 板球击球手50分节点破百概率预测模型
  • 中兴光猫工厂模式破解:5分钟开启永久Telnet访问权限
  • 【webview】原生 App 与 H5 双向通信完全指南:JSBridge 原理与实战
  • Linux 【05- scp命令超详细教程】
  • Sunshine游戏串流主机:三步打造你的私人游戏云,彻底告别延迟困扰
  • Sunshine游戏串流终极指南:三步打造你的私人云游戏服务器
  • claude code 开发实践 - 生产级别的项目规范
  • 东芝TC78H653FTG与PIC18LF46K22的直流电机驱动方案
  • 科普漫画:散热器的临终独白:我不是被热死的,我是被闷死的
  • AI 生成中文海报为何频现“乱码”:文字渲染的技术瓶颈与优化路径
  • 从vNIC到物理网卡的完整链路追踪:VMware网络不通的8层协议栈穿透式排查法(含Wireshark过滤模板下载)
  • Kali Linux实战:用iptables构建动态防火墙防御SSH爆破与Ping洪水
  • 抖音无水印下载终极指南:从原理到实践的完整技术实现
  • 空洞骑士模组管理终极指南:使用Scarab轻松管理100+游戏模组
  • 交通行业健康风控新路径:手环体征监测落地动态健康管理体系
  • 抖音下载终极指南:5分钟搞定无水印视频批量下载的免费神器
  • 嵌入式系统硬件去抖动矩阵键盘设计与实现
  • 新闻编辑室AI调度系统:人机协同的动态内容轮播架构
  • TDLAS 激光气体检测设备高低温、震动可靠性测试方案与国产化硬件验证
  • 接口自动化测试进阶:从脚本到架构的用例设计思维与实践
  • PotPlayer字幕翻译插件:打破语言壁垒的智能观影解决方案
  • Classifier-Free Guidance(CFG)全面解读:从 Classifier Guidance 到现代扩散模型的核心技术
  • 使用JMeter进行LDAP认证性能压测的完整实践指南
  • 两节/三节串联锂电池保护芯片全系列方案,电路图BOM表免费公开下载
  • Linux远程连接实操:Xshell、Xftp连接Ubuntu完整教程(附报错解决方案)
  • 收藏!小白程序员必看:AI大模型时代,如何抓住职业新风口?
  • VMware Workstation/ESXi打印机映射失效全解:从USB重定向到网络打印协议栈深度剖析(含PowerShell自动化脚本)
  • BetterNCM Installer:网易云音乐插件生态的智能入口
  • React进阶:React Hooks的使命是分离规整,不是杂糅
  • 2026大厂薪资揭秘:AI涨薪翻倍,传统岗位或被冻结!速收藏,助你跳槽选Offer!