零基础Linux快速上手02

news/2025/10/19 20:21:15/文章来源:https://www.cnblogs.com/oldbill/p/19151343

零基础Linux快速上手02

 

好的,各位同学,欢迎来到《零基础Linux快速上手》第二章节!

在第一章节中,我们学会了在Linux的"房子"里自由行走和整理物品。现在,我们要学习更强大的技能:如何高效地处理文本信息、如何让多个命令协同工作,以及如何管理系统中的"工作任务"(进程)

这些技能将把你从一个普通的"房客"变成一个高效的"管家"。


实验六:输入/输出重定向与管道——指挥数据的流动

实验目标: 理解标准输入、输出和错误,掌握重定向(>, >>, <)和管道(|)的使用,这是Linux哲学"小工具,大协作"的核心。

场景: 你想把命令的结果保存到文件,或者把一个命令的输出作为另一个命令的输入。

关键命令与符号:

  • >: 将标准输出重定向到文件(覆盖)

  • >>: 将标准输出重定向到文件(追加)

  • <: 将文件内容作为标准输入

  • |管道,将一个命令的标准输出传给另一个命令的标准输入

  • 2>: 将标准错误重定向到文件

实验步骤与答案:

  1. 创建测试文件

    echo "Apple 10" > fruits.txt
    echo "Banana 5" >> fruits.txt
    echo "Cherry 20" >> fruits.txt
  2. 使用 > 覆盖保存输出 将当前目录列表保存到 list.txt ls -l > list.txt 验证: cat list.txt 会显示 ls -l 的结果。

  3. 使用 >> 追加输出 将系统日期追加到 list.txt 文件的末尾。 date >> list.txt 验证: tail -n 2 list.txt 会显示新追加的日期行。

  4. 使用 < 从文件输入 使用 wc -l 统计 fruits.txt 的行数,但通过重定向输入。 wc -l < fruits.txt 对比: wc -l fruits.txt 会输出 "3 fruits.txt",而使用 < 只输出数字 "3"。

  5. 使用 | 管道连接命令(核心!) 查看 /etc/passwd 文件,但只显示包含 "bash" 的行。 cat /etc/passwd | grep bash 解析: cat 命令的输出直接成为了 grep 命令的输入,无需中间文件。

  6. 管道链:组合多个命令 统计 fruits.txt 中包含字母 "a" 的行数。 cat fruits.txt | grep "a" | wc -l 标准答案: 命令会输出 2(Apple 和 Banana 行)。


实验七:文本处理三剑客(grep, sed, awk)——文本处理大师

实验目标: 初步掌握 grep(搜索)、sed(流编辑)和 awk(文本分析)这三个最强大的文本处理工具。

场景: 你需要从日志中查找特定错误、批量修改配置文件,或提取文本中的特定字段。

7.1 grep:全局正则表达式搜索

实验步骤与答案:

  1. 基本搜索 fruits.txt 中搜索 "Banana"。 grep "Banana" fruits.txt 标准答案: 输出 Banana 5

  2. 忽略大小写搜索 grep -i "apple" fruits.txt

  3. 显示不匹配的行(反向选择) grep -v "Cherry" fruits.txt 标准答案: 输出所有不包含 "Cherry" 的行。

  4. 显示行号 grep -n "a" fruits.txt 标准答案: 输出类似 1:Apple 102:Banana 5,显示了匹配行在文件中的位置。

7.2 sed:流编辑器

实验步骤与答案:

  1. 替换文本 fruits.txt 中的所有 "a" 替换为 "@"(只输出到屏幕,不修改原文件)。 sed 's/a/@/g' fruits.txt 标准答案: 输出 Apple 10 变为 @pple 10,等等。

  2. 原地修改文件(危险但强大) sed -i 's/Cherry/Orange/g' fruits.txt 验证: cat fruits.txt 会显示 Cherry 已被替换为 Orange。

  3. 删除特定行 删除第2行。 sed '2d' fruits.txt 注意: 不加 -i 选项,原文件不会被修改。

7.3 awk:模式扫描与处理语言

实验步骤与答案:

  1. 打印特定字段 假设空格是分隔符,打印 fruits.txt 的第一列(水果名)。 awk '{print $1}' fruits.txt 标准答案: 输出:

    Apple
    Banana
    Orange
  2. 打印特定字段 打印第二列(数量)。 awk '{print $2}' fruits.txt

  3. 条件过滤 只打印数量大于5的行。 awk '$2 > 5 {print $0}' fruits.txt 标准答案: 输出 Apple 10Orange 20

  4. 结合管道使用 获取当前磁盘使用率,并只显示使用率的百分比数字。 df -h | grep '/dev/sda1' | awk '{print $5}' | sed 's/%//g' 解析: 这是一个经典的管道用例,逐步过滤出你想要的信息。


实验八:进程管理——看清和控制系统的任务

实验目标: 学会查看系统运行的进程,理解进程状态,并能够管理(暂停、恢复、终止)进程。

场景: 一个程序卡死了,或者你想查看哪个程序占用了最多的CPU资源。

关键命令:

  • ps: 查看进程快照。

  • top / htop: 动态查看进程活动(htop 更友好,可能需要安装 sudo apt install htop)。

  • jobs, bg, fg: 管理后台任务。

  • kill: 向进程发送信号(如终止信号)。

实验步骤与答案:

  1. 查看当前终端下的进程 ps 说明: 这只显示与当前终端相关的基本进程。

  2. 查看所有进程(经典用法) ps aux 解析:

    • a: 显示所有用户的进程。

    • u: 显示详细格式。

    • x: 包括不控制终端的进程(如系统守护进程)。

  3. 动态查看进程(系统任务管理器) 打开一个新终端,输入 top 观察: 你可以看到CPU、内存使用率,以及运行的进程列表。按 q 退出。

  4. 在后台运行一个任务 sleep 命令在后台睡眠100秒。 sleep 100 & 注意: 命令后的 & 符号表示在后台运行。系统会返回一个 [job号] PID

  5. 查看后台任务 jobs 标准答案: 你会看到类似 [1] Running sleep 100 & 的输出。

  6. 将后台任务调到前台 fg %1%1 对应 jobs 命令输出的 job 号 1)

  7. 暂停前台任务 sleep 在前台运行时,按 Ctrl+Z 结果: 任务被暂停,并显示 [1]+ Stopped sleep 100

  8. 让暂停的任务在后台继续运行 bg %1

  9. 终止一个进程 首先,找到 sleep 100 进程的PID(进程ID)。 ps aux | grep sleep 假设找到的PID是 1234,则终止它: kill 1234 验证: 再次运行 ps aux | grep sleep,应该找不到该进程了。如果普通 kill 无效,可以使用 kill -9 1234(强制杀死)。


实验九:环境变量与Shell配置——定制你的工作环境

实验目标: 理解环境变量的作用,学会查看和设置它们,并了解Shell的启动配置文件。

场景: 你想让一个自定义脚本在任何目录下都能直接运行。

关键命令与概念:

  • echo $VARIABLE: 打印环境变量的值。

  • export: 设置环境变量。

  • $PATH: 最重要的环境变量,定义了系统查找命令的目录。

实验步骤与答案:

  1. 查看某个环境变量 查看当前用户的命令搜索路径。 echo $PATH 标准答案: 输出一串用冒号分隔的目录路径。

  2. 查看所有环境变量 env

  3. 设置一个临时环境变量 export MY_NAME="Linux_Student" echo $MY_NAME 标准答案: 输出 Linux_Student

  4. 将一个目录添加到 PATH 假设你在家目录创建了 my_scripts 文件夹来存放自己的脚本。

    mkdir ~/my_scripts
    export PATH=$PATH:~/my_scripts

    解析: 这会将 ~/my_scripts 追加到现有的 $PATH 变量之后。现在,放在 my_scripts 里的可执行文件可以在任何地方直接运行了。

  5. 让配置永久生效(重要!) 上面的 export 命令只在当前终端会话有效。要永久生效,需要将命令写入Shell的配置文件(如 ~/.bashrc)。 echo 'export PATH=$PATH:~/my_scripts' >> ~/.bashrc 验证: 重新打开一个终端,或者执行 source ~/.bashrc,然后 echo $PATH 检查是否已包含新路径。


本章总结

恭喜!在第二章节中,你已经从一个基础用户晋升为能够高效处理复杂任务的Linux用户。你学会了:

  1. 数据流控制: 使用重定向和管道让命令协同工作。

  2. 高级文本处理: 使用 grepsedawk 过滤、编辑和分析文本。

  3. 进程管理: 查看、控制和管理系统的运行任务。

  4. 环境定制: 通过环境变量和配置文件个性化你的工作环境。

这些工具的组合使用,是Linux强大威力的体现。请务必反复练习,特别是管道和文本处理命令的组合。

作业:

  1. 使用 ps auxgrepawk 的组合,找出系统中由 root 用户运行的所有 bash 进程的PID。

  2. 创建一个日志文件,使用 sed 将其中所有的 "ERROR" 替换为 "WARNING"。

  3. 将你的 ~/linux_course 目录添加到 PATH 中,并使其永久生效。

下一章,我们将探索软件包管理和磁盘管理。继续加油!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/940581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零基础Linux快速上手-01

零基础Linux快速上手-01好的,各位同学,大家好! 欢迎来到《零基础Linux快速上手》的第一章节。作为你们的讲师,我深知第一步的重要性。我们不求高深,但求扎实和有趣。今天,我们将通过五个经典的Linux场景实验,带…

securecrt linux版本安装

1.安装官网下载scrt-9.6.4-3695.ubuntu24-64.x86_64.debsudo dpkg -i scrt-9.6.4-3695.ubuntu24-64.x86_64.deb sudo apt install -f2.激活 2.1.脚本运行报错 root@ubuntu:/home/jianhua/Downloads# ./securecrt_linu…

P1896[SCOI2005]互不侵犯 解题笔记

由于答案可能会很大,不难想到使用状压dp解决。 考虑使用二进制来表示: \[100010_{(2)} = 34_{(10)} \]这种访问方式比数组寻址更加简单快速,如 \((1 << (k - 1)) \& s\) 可以询问状态 \(s\) 的第 \(k\) 位…

habse

为什么需要它? 简单来说,HBase是一个建立在Hadoop文件系统(HDFS)之上的、分布式的、可扩展的NoSQL数据库。 它的设计灵感来源于Google的Bigtable论文,旨在提供一个能可靠地存储和处理海量结构化或半结构化数据的解…

P2214 [USACO14MAR] Mooo Moo S 解题笔记

思路: 完全背包问题。 对每个牧场做类似于差分的操作,求出每个牧场自身需要达到多少的音量。然后再对每个牧场需要达到的音量进行完全背包的操作,将答案统计进变量cnt中,最后输出cnt即可。 中途出现的错误:完全背…

P1854 花店橱窗布置 解题笔记

思路: 我们用一个二维数组 \(dp[i][j]\) 来表示第 \(i\) 束花放不放在第 \(j\) 个花瓶中的最大值,此时,我们可以进行以下两个操作:不放,状态可以描述为:\(dp[i][j] = dp[i][j - 1]\)。 放,状态可以描述为:\(dp…

什么是 DAQ

什么是 DAQDAQ = Data Acquisition(数据采集) 它的任务是:把真实世界的物理信号(电压、电流、温度、压力、速度等)采集成计算机可处理的数字信号。在 LabVIEW 里,它通过 DAQ 硬件 + DAQ 驱动 + LabVIEW 程序 三者…

央企程序员AI创业一个月感受 ✨

一位央企程序员的摸鱼故事。6天写出第一版、7天完成商业化、14天尝试全网推广...这次创业之旅中有欢喜、有迷茫,更有对AI时代的深度思考!💭6月份的时候,写了一篇《我的开源十年》得到了很多朋友的支持,很是欣慰。…

微信小程序 在云函数本地调试时,总是提示node modules 未安装,立即安装。解决方法

首先确定本地npm node 已安装 cmd npm -v node -v没安装去安装nodejs cd到云函数目录,执行 npm install --save wx-server-sdk@latest

完整教程:C#开源项目:如何让100个贡献者比1个维护者更高效?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

使用PySide6/PyQt6实现自定义窗口布局,实现类似FluentWindow效果

使用PySide6/PyQt6实现自定义窗口布局,实现类似FluentWindow效果现在在很多项目中,会比较喜欢FluentWindow效果,这种左侧类似于图标菜单或者树形结构的,右侧是是动态窗体或者组件的展示方式,一般不是多文档布局,…

读书日记1

今天怀着敬畏之心开始阅读这部被誉为"程序员圣经"的经典著作。《代码大全2》的开篇就给我带来了强烈的思想冲击,让我重新审视自己对软件开发的认知。 核心收获与深刻见解: 1.软件构建的核心地位:McConnel…

对拍教程(自用)

写在前面: 没有掌握对拍啊,每次都是上网贺别人的代码,写一份自己用吧。 对拍,是一个比较实用的工具。它能够非常方便地对于两个程序的输出文件进行比较,可以帮助我们实现一些自动化的比较输出结果的问题。 Step1:…

物理AI:智能自动化的下一个前沿

本文探讨了人工智能与物理系统融合的技术趋势,详细介绍了物理AI的能力层级、关键技术架构以及在制造业、医疗等领域的实际应用案例,展现了从基础自动化到完全自主系统的技术演进路径。物理AI:连接数字智能与物理现实…

Write To Spreadsheet labview这是什么

Write To Spreadsheet labview这是什么很好,这个问题问得很具体。你提到的:Write To Spreadsheet(LabVIEW) 是什么?✅ 简单一句话解释:“Write To Spreadsheet File.vi” 是 LabVIEW 里用来把数据写入文本文件(…

2025/10/19

2025/10/19学习算法

tryhackme-预安全-网络基础知识-局域网介绍-05

tryhackme-Pre Security-Pre Security-Network Fundamentals-Intro to LAN 房间地址:https://tryhackme.com/room/introtolan (该房间需要订阅,关于付费问题。咸鱼OSINT tryhackme即可。) 这是网络安全入门的基础模…

从众多知识汲取一星半点也能受益匪浅【day16(2025.10.18)】(加班但只加到四点半)

Q26.整理工作清单时遇到的问题现象:做了纯样式页面,准备整理清单补充功能逻辑时发现,没有一下子找出原本对照的页面在哪 原因:把对照页面的路径写在了其他地方,没有写在清单上方便对照查看寻找 解决:找到对照页面…

(个人思考)游戏技能的实现

游戏技能实现的三种方式: 1.类似UE中GAS的方式,统一为Ability,并且不处理任何数据逻辑。 https://github.com/No78Vino/gameplay-ability-system-for-unity 2.类似双影其境那种, 简单直观,每个Ability都是独立处理…

模拟赛T4 分析

题目概述 随机 \(2n\) 个数,值域为 \([0,m]\),求前 \(n\) 个数比后 \(n\) 个数大的概率(对质数 \(P\) 取模),其中 \(10^8\leq P\leq 10^9\)。 数据范围:\(1\leq n,m,T\leq 2000\)。 分析 好好玩。 显然可以转化为…