ls -l /home

2.1 目录操作命令(cd, pwd, ls)

在 Linux 的文件系统中游走,就像在一个巨大的图书馆里找书。cd、pwd 和 ls 就是你的导航工具,帮你确定位置、查看周围环境并移动到想去的地方。

pwd 命令简单到令人安心——它只是告诉你当前在哪里。输入 pwd,终端就会显示完整的目录路径。有时候在复杂的目录结构中穿梭,突然忘记身在何处,pwd 就像个可靠的指南针。

cd 命令改变当前工作目录。直接输入 cd 会带你回家目录,也就是你的个人空间。cd .. 向上移动一级,cd - 返回上一个目录。这些快捷方式用熟了能省去很多输入完整路径的麻烦。

ls 可能是最常用的命令之一。它列出目录内容,但真正的威力在于它的选项。ls -l 显示详细信息,包括权限、所有者、大小和修改时间。ls -a 显示所有文件,包括那些以点开头的隐藏文件。ls -lh 结合了长格式和人类可读的文件大小显示。

我记得刚开始时总是用 ls -la 来查看目录的全部内容。这个习惯保持到现在,因为它提供了最全面的视角。文件权限、隐藏配置、目录结构一目了然。

2.2 文件操作命令(touch, cp, mv, rm)

文件操作是日常工作中最频繁的任务。touch、cp、mv、rm 这四个命令构成了文件管理的基础工具箱。

touch 主要用来创建空文件或更新文件的时间戳。有时候你需要一个占位文件,或者想标记某个文件为“刚刚访问过”,touch 就能派上用场。它的操作很轻量,不会影响文件内容。

cp 负责复制文件或目录。基本用法是 cp 源文件 目标文件,但加上 -r 选项就能复制整个目录树。我经常用 cp -i 开启交互模式,这样在覆盖现有文件前会询问确认,避免意外丢失数据。

mv 命令有两个功能:移动文件和重命名文件。在 Linux 看来,重命名其实就是把文件“移动”到同一个目录下的新名字。这个设计很优雅,减少了命令的数量。

rm 需要谨慎使用。它删除文件,而且默认不会进入回收站——删除就是真的消失了。rm -r 能够递归删除目录及其内容,威力更大。有个经典笑话:rm 是 Linux 中最危险的命令,特别是当有人开玩笑说“试试 rm -rf /”的时候。

2.3 文件查看命令(cat, more, less)

查看文件内容就像阅读不同长度的书籍——有些适合快速浏览,有些需要仔细研读。cat、more、less 提供了不同层次的阅读体验。

cat 是最简单的查看工具,它把整个文件内容输出到屏幕。适合看小文件,或者结合管道传递给其他命令。但要是用它查看大文件,内容会飞快地滚过屏幕,根本来不及阅读。

more 改进了这个问题,它一次显示一屏内容,按空格键向下翻页。不过 more 只能向前翻页,不能往回看。在只需要粗略浏览时,more 仍然很实用。

less 可以说是 more 的增强版。它允许向前和向后翻页,支持搜索、跳转等高级功能。实际上,less 的名字是个程序员的幽默——less is more,但功能更多。现在大多数系统都用 less 替代了 more,连 man 命令的底层都在使用 less。

我几乎总是用 less 来查看文件。它的搜索功能特别有用,按 / 输入关键词就能快速定位。对于日志文件或配置文件,这个功能节省了大量滚动时间。

2.4 文件权限管理命令(chmod, chown)

Linux 的权限系统就像给文件和目录配了钥匙和门禁。chmod 和 chown 就是管理这些访问控制的工具。

文件权限分为三组:所有者、所属组和其他用户。每组都有读、写、执行三种权限。用 ls -l 看到的那些 rwx 符号就是权限的直观表示。

chmod 改变文件权限。可以用符号模式(u+g+r)或数字模式(755)来设置。数字模式可能一开始不太好理解,但熟悉后会发现它更简洁。755 表示所有者有全部权限,组用户和其他用户只有读和执行权限。

chown 改变文件的所有者和所属组。通常需要 root 权限才能使用,因为它涉及所有权变更。格式是 chown 用户:组 文件名,如果只改用户或只改组,可以省略对应的部分。

有次我写了个脚本却无法执行,花了半天时间排查,最后发现是忘了用 chmod 添加执行权限。现在创建新脚本后,chmod +x 脚本名 已经成了肌肉记忆。

这些文件与目录管理命令构成了 Linux 日常使用的基础。它们可能不像系统管理命令那样强大,但使用频率最高。熟练运用它们,你在 Linux 环境中的工作效率会显著提升。

3.1 系统信息查看命令(uname, df, free)

了解系统状态就像给汽车做仪表盘检查。uname、df、free 这些命令提供了系统的实时快照,让你知道机器正在如何运行。

uname 告诉你系统的基本信息。uname -a 显示所有可用信息——内核版本、主机名、硬件架构等。有时候需要确认系统是32位还是64位,或者查看内核版本是否满足软件要求,uname 能给出确切答案。这个命令的输出通常很简洁,但包含的信息却很关键。

df 检查磁盘空间使用情况。df -h 是最常用的形式,-h 选项让输出以人类可读的格式显示(GB、MB而不是字节)。它能快速告诉你哪个分区快满了,哪个还有充足空间。我记得有次服务器突然报错,用 df 一查发现根分区使用率达到了98%,及时清理了日志文件避免了系统崩溃。

free 显示内存使用状态。同样地,free -h 提供更友好的显示方式。它会列出总内存、已用内存、空闲内存,以及交换空间的使用情况。当系统变慢时,free 能帮你判断是内存不足还是其他问题。

这些命令组合使用,几分钟内就能对系统健康状况有个基本了解。它们就像系统的体温计和血压计,定期检查能预防很多潜在问题。

3.2 进程管理命令(ps, top, kill)

进程是系统中正在运行的程序实例。ps、top、kill 让你能够监视和控制这些“活着的”程序。

ps 显示当前进程的快照。ps aux 是最全面的用法,显示所有用户的所有进程,包括CPU和内存使用率、启动时间等详细信息。当你需要找到某个特定进程的PID(进程ID),或者查看哪个进程占用了过多资源时,ps 是首选工具。

top 提供动态的实时进程视图。它不断更新,显示最消耗资源的进程排在顶部——这也是它名字的由来。top 界面还显示系统负载、运行时间、总体内存使用等摘要信息。按 q 退出,按 k 可以杀死选中的进程。

kill 用来终止进程。它实际上向进程发送信号,最常用的是 kill -9 PID,这是强制终止信号。但更好的做法是先尝试 kill PID 发送正常终止信号,给进程清理资源的机会。只有在进程无响应时,才使用 -9 选项。

有一次我的某个程序陷入死循环,CPU使用率飙升到100%。用 top 找到罪魁祸首,记下PID,然后用 kill 结束了它。整个过程不到30秒,系统就恢复了正常。

3.3 用户管理命令(whoami, su, sudo)

在多用户系统中,清楚自己的身份和权限至关重要。whoami、su、sudo 帮助你在不同身份间切换和管理权限。

whoami 简单到几乎不需要解释——它告诉你当前登录的是哪个用户。在复杂的权限环境中,或者当你在多个终端窗口间切换时,这个命令能避免很多混淆。

su 切换用户身份。su - 用户名 会完全切换到目标用户的环境,包括工作目录和环境变量。如果不指定用户名,默认切换到 root。从安全角度考虑,直接使用 root 权限应该谨慎,只在必要时使用。

sudo 以超级用户权限执行单条命令。这是更安全的选择,因为它只授予单次权限,而且所有操作都会被记录。配置良好的系统中,普通用户通过 sudo 执行特定管理任务,而不是直接获得 root 密码。

现代 Linux 发行版通常默认禁用 root 登录,鼓励使用 sudo。这种设计确实提高了安全性——毕竟,需要思考一下为什么要用高级权限,这个短暂的停顿就能阻止很多误操作。

3.4 网络相关命令(ping, ifconfig, netstat)

网络连接是系统的生命线。ping、ifconfig、netstat 这些工具帮你诊断网络问题,监控连接状态。

ping 测试到另一台主机的连通性。它发送ICMP包并等待回应,输出显示往返时间和丢包率。当网站打不开时,先 ping 一下能快速判断是网络问题还是服务本身的问题。不过现在有些服务器会屏蔽 ping 请求,所以收不到回复不一定意味着网络不通。

ifconfig 显示和配置网络接口。它能告诉你IP地址、MAC地址、网络掩码等详细信息。虽然在一些新系统中被 ip 命令取代,但 ifconfig 仍然广泛使用且更易理解。查看所有网络接口的状态,快速确认网卡是否正常工作。

netstat 显示网络连接、路由表、接口统计等信息。netstat -tulpn 显示所有监听中的端口和对应的进程,这对排查“端口被占用”问题特别有用。当需要知道哪个程序在使用某个端口时,netstat 能提供准确答案。

这些系统管理命令让你从普通用户升级为系统管理员。它们提供了深入系统内部的视角,不仅仅是使用系统,而是真正理解和控制它。掌握这些工具,你就能自信地应对大多数日常管理任务。

4.1 管道与重定向操作

Linux真正的威力在于命令之间的协作。管道和重定向让简单的命令组合成强大的工具链,就像乐高积木一样可以无限组合。

管道符号 | 将一个命令的输出作为另一个命令的输入。比如 ps aux | grep nginx 从所有进程中筛选出与nginx相关的行。这种数据流动的方式创造了无限可能——你可以用多个管道连接多个命令,每个命令只做一件事,但组合起来就能解决复杂问题。

重定向操作符 >>> 控制输出的去向。ls > filelist.txt 将ls的结果保存到文件,覆盖原有内容;ls >> filelist.txt 则是追加到文件末尾。我经常用这种方式保存命令输出供后续分析,或者创建简单的配置文件。

输入重定向 < 从文件读取数据作为命令输入。sort < unsorted.txt 对文件内容排序。虽然很多命令可以直接接受文件名参数,但理解输入重定向有助于理解数据流的概念。

错误重定向 2> 专门处理错误信息。Linux中标准输出和错误输出是分开的,command 2> error.log 把错误信息重定向到文件,保持标准输出的纯净。这个技巧在写脚本时特别有用,可以分别处理正常输出和错误信息。

管道和重定向改变了使用命令的思维方式——从单个工具的使用转向构建解决方案。它们让命令行从简单的指令执行环境变成了强大的数据处理平台。

4.2 文本处理三剑客(grep, sed, awk)

在Linux世界里,文本处理是日常工作的核心。grep、sed、awk这三个工具各有所长,组合使用几乎能解决所有文本处理需求。

grep 是文本搜索的瑞士军刀。grep "pattern" filename 在文件中搜索匹配模式的行。支持正则表达式让它的搜索能力异常强大。grep -r "error" /var/log/ 递归搜索目录中的所有文件,快速定位错误信息。我习惯用 grep -v 反向搜索,排除不需要的行,这在分析日志时特别实用。

sed 是流编辑器,专门处理文本转换。它按行读取输入,执行指定操作后输出。sed 's/old/new/g' file 进行全局替换,这是最常用的功能。sed的强大在于它可以编辑文件而不打开文件,适合在脚本中批量处理。记得有次需要修改几百个配置文件中的IP地址,一行sed命令就搞定了。

awk 更像是完整的编程语言,专门处理结构化文本。它自动按字段分割输入行,awk '{print $1}' 打印每行的第一个字段。awk可以执行数学运算、条件判断、循环等复杂操作。处理CSV文件或日志分析时,awk的表现令人印象深刻——它能把繁琐的文本处理变成简单的字段操作。

这三个工具经常一起使用。grep过滤 | sed转换 | awk分析 这样的流水线可以解决大多数文本处理任务。它们的学习曲线可能有点陡峭,但投入的时间绝对物超所值。

4.3 压缩与解压命令(tar, gzip)

文件压缩在数据传输和存储中无处不在。tar和gzip是Linux环境中最经典的压缩组合,虽然现在有更高效的压缩工具,但这个组合仍然是最通用的。

tar 最初代表"tape archive",用于磁带备份,现在主要用于打包多个文件。tar -cvf archive.tar dir/ 创建打包文件,-c表示创建,-v显示详细过程,-f指定文件名。tar本身不压缩,只是把多个文件合并成一个。

gzip 提供实际的压缩功能。gzip file 压缩文件生成file.gz,原文件会被删除。压缩率相当不错,特别是对文本文件。gunzipgzip -d 用于解压。

更常见的是组合使用:tar -czvf archive.tar.gz dir/ 一次性打包并压缩。这里的-z选项告诉tar在打包过程中使用gzip压缩。解压时用 tar -xzvf archive.tar.gz,-x表示提取。

不同扩展名对应不同压缩方式:.tar.gz或.tgz使用gzip,.tar.bz2使用bzip2(压缩率更高但较慢),.tar.xz使用xz(压缩率最高)。了解这些区别有助于根据需求选择合适工具——传输小文件时用gzip快速压缩,归档大文件时用xz节省空间。

这些命令在备份、软件分发、日志归档中频繁使用。掌握它们就像学会系鞋带——看似简单,但每天都要用到。

4.4 命令组合与脚本基础

单个命令解决单个问题,命令组合解决实际问题。从简单的命令链到完整的脚本,这是从Linux用户向Linux高手进阶的关键一步。

命令分隔符 ; 让你依次执行多个命令。cd /var/log; ls -l; tail -f system.log 这样的组合很常见。即使前一个命令失败,后面的命令仍然会执行。

逻辑运算符 &&|| 提供条件执行。make && make install 只在make成功时才执行安装。command1 || command2 在第一个命令失败时执行第二个。这种逻辑控制让命令序列更智能。

命令替换 `command`$(command) 将一个命令的输出作为另一个命令的参数。比如 vim $(grep -l "TODO" *.py) 打开所有包含TODO的Python文件。这个技巧极大地扩展了命令的灵活性。

简单的脚本就是把一系列命令保存在文件中。以 #!/bin/bash 开头(shebang),设置执行权限 chmod +x script.sh,然后就可以像普通命令一样运行。脚本中可以定义变量、使用循环、条件判断,把重复性工作自动化。

我写的第一个脚本是自动备份网站文件的——打包、压缩、加上时间戳、传输到远程服务器。原本需要十分钟的手动操作,现在一行命令就完成了。这种自动化带来的成就感,是图形界面很难提供的。

这些高级技巧让Linux从工具集合变成了创造平台。你不再只是使用现有命令,而是在构建自己的工具,解决独特的问题。这种能力一旦掌握,就会成为你技术工具箱中最珍贵的部分。

你可能想看:
免责声明:本网站部分内容由用户自行上传,若侵犯了您的权益,请联系我们处理,谢谢!联系QQ:2760375052

分享:

扫一扫在手机阅读、分享本文

最近发表