兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
我们开始一场愉快的 Linux 命令深度学习之旅。这个过程不仅仅是“我告诉你,你记住”,而是一个引导你思考、实践、并形成自己知识体系的过程。 我们的核心理念是:理解比记忆更重要。 --- 学习心法:如何记忆与强化 在我们开始之前,先掌握几个核心技巧,这会贯穿我们整个学习过程: 1. “起外号”记忆法 (联想):每个命令都有其缩写来源。理解它,或者给它起个好记的“外号”,比死记硬背 l-s 两个字母有效得多。例如 ls -> list。 2. “肌肉记忆”法 (实践):命令行是“术”,不是“学”。必须亲自敲,反复敲。不要复制粘贴,一个字符一个字符地敲,让你的手指记住它。 3. “场景驱动”法 (应用):不要孤立地学命令。问自己:“我现在想做什么?”,然后去寻找对应的命令。当你解决了实际问题,这个命令就刻在了你的脑子里。 4. “求助”三板斧 (自救): * command --help: 最快最直接的帮助。 * man command: man 是 manual (手册) 的缩写,提供最详细、最权威的说明。 * tldr command: (如果安装了) tldr (Too Long; Didn't Read) 提供简化的、带有实例的说明,非常适合新手。 --- 第一步:“生存”基础 - 导航与观察 这是你在 Linux 世界里睁开眼首先要学会的技能:我在哪?我周围有什么?我该去哪? 1. `pwd` - 我在哪? * 场景: 当你打开终端,或者在不同目录间跳转后,感觉迷路了,想知道当前所处的“位置”。 * 命令: pwd * 记忆法: Print Working Directory (打印工作目录) 的缩写。记住这三个英文单词,pwd 就不会忘。 * 核心技巧: 它没有任何选项或参数,就是单纯地告诉你当前路径。这是最简单、最基础的命令。 实践一下: 打开你的终端,直接输入 pwd 然后回车。看看它显示了什么。 1 pwd 2. `ls` - 我周围有什么? * 场景: 你知道了自己在哪,现在想看看这个地方(目录)都有哪些文件和文件夹。 * 命令: ls * 记忆法: list (列表) 的缩写。这是最常用的命令,没有之一。 * 核心技巧与要点 (选项 Options): * ls -l: -l 代表 long format (长格式)。这会显示文件的详细信息,如权限、所有者、大小、修改日期等。这是查看文件属性的标配。 * ls -a: -a 代表 all (全部)。默认情况下,以 . 开头的文件(隐藏文件)是不会显示的。用这个选项可以把它们都“揪”出来。 * ls -h: -h 代表 human-readable (人类可读)。当与 -l 一起使用时 (ls -lh),文件大小会以 K, M, G 等单位显示,而不是一长串字节数。 组合使用: 在 Linux 中,选项可以合并。ls -l -a -h 等同于 ls -lah。后者更常用,更酷! 实践一下: 1. 敲 ls 看看。 2. 敲 ls -l 看看有什么不同。 3. 敲 ls -a 看看是不是多了一些以 . 开头的东西。 4. 敲 ls -lah 感受一下终极形态。 3. `cd` - 我该去哪? * 场景: 你看到了想去的目录,现在要“走”过去。 * 命令: cd * 记忆法: Change Directory (改变目录) 的缩写。 * 核心技巧与要点 (参数 Arguments): * cd 目录名: 进入指定的子目录。例如 cd .config。 * cd ..: .. 代表“上一级目录”。这是返回的唯一真理。 * cd ~ 或直接 cd: ~ 代表“家目录”(Home Directory)。无论你身在何处,输入 cd 就能立刻回家。 * cd -: - 代表“上一次所在的目录”。在你用 cd 去了别处后,用 cd - 可以快速返回刚才的位置,非常方便。 * 自动补全: 输入 cd 和目录的前几个字母,然后按 Tab 键。Shell 会自动帮你补全剩下的部分。如果有多個選項,按兩下 Tab 會全部列出來。这是 Linux CLI 的灵魂技能,可以极大提升效率并防止输错! 实践一下: 1. 用 ls 找到一个目录,比如 go。 2. 输入 cd go 然后按 Tab 键,再回车。 3. 输入 pwd 确认你已经进来了。 4. 输入 cd .. 返回上一级。 5. 输入 pwd 确认你已经回来了。 6. 输入 cd - 再次进入 go 目录。 7. 最后输入 cd 回到你的家目录。 --- 第一步总结与强化 你现在已经掌握了 Linux 生存的三大命令:pwd, ls, cd。 * 忘记了在哪 -> pwd * 想看有啥 -> ls (常用 ls -lah) * 想去别处 -> cd (配合 Tab, .., ~, -) 强化练习: 在你的家目录下,用 ls -lah 查看所有文件和目录。找一个你感兴趣的目录(比如 .config 或 .ssh),cd 进去,再用 ls -lah 看看里面有什么。然后用 cd .. 返回,最后用 cd 回家。重复这个过程,直到你闭着眼睛都能流畅地在目录间穿梭。 这只是第一步。当你对这三个命令形成肌肉记忆后,我们再进入下一步:文件操作(创建、查看、复制、移动、删除)。 准备好了请告诉我,我们继续第二步。 让我们回到我们的学习路径上。你已经掌握了“生存”基础,非常棒!现在我们进入更实用的一步。 --- 第二步:文件的基本操作 - “创、查、移、删、改” 你已经会“走路”和“看路”了,现在要学会与路边的“石头”(文件)互动。 1. `touch` - 无中生有 * 场景: 你需要快速创建一个新的、空的文件。或者,你想更新一个已有文件的修改时间,但不改变其内容。 * 命令: touch * 记忆法: 英文原意“触摸”。想象你轻轻“触摸”一下,文件就出现了,或者留下了新的时间印记。 * 核心技巧: * touch a.txt: 如果 a.txt 不存在,就创建它。 * touch a.txt: 如果 a.txt 已存在,就把它“摸一下”,更新它的“最后修改时间”。 * touch a.txt b.txt c.log: 可以同时创建多个文件。 实践一下: 1. touch test_file.txt 2. ls -l test_file.txt (注意看文件大小是 0,以及它的修改时间) 3. 等一分钟,再执行一次 touch test_file.txt 4. 再 ls -l test_file.txt (你会发现修改时间更新了) 2. `cat` - 一览无余 * 场景: 你想快速查看一个文本文件的全部内容。 * 命令: cat * 记忆法: concatenate (连接、串联) 的缩写。它本来的强大功能是连接多个文件内容并输出,但我们最常用它来查看单个文件。 * 核心技巧: * cat a.txt: 在终端里显示 a.txt 的所有内容。 * 警告: 不要用 cat 去看非文本文件(如图片、程序)或非常大的日志文件,它会用乱码或者海量信息“刷爆”你的屏幕。 实践一下: 我们刚才的 test_file.txt 是空的,看着没意思。我们用一个新技巧“重定向”往里面写点东西(这个>我们以后会学,你先照做): 1. echo "Hello, Linux World!" > test_file.txt 2. 现在,用 cat 查看它:cat test_file.txt 3. `cp` - 复制 * 场景: 需要备份一个文件,或者把文件复制到另一个地方。 * 命令: cp * 记忆法: copy (复制) 的缩写。 * 核心技巧: * cp 源文件 目标文件: cp test_file.txt test_file_backup.txt * cp 源文件 目标目录/: mkdir temp_dir (创建一个临时目录),然后 cp test_file.txt temp_dir/ * cp -r 源目录 目标目录: 复制目录及其所有内容时,必须加 -r (recursive, 递归)。 实践一下: 1. cp test_file.txt test_file_copy.txt 2. ls (你会看到三个文件了) 3. cat test_file_copy.txt (内容应该是一样的) 4. `mv` - 移动或改名 * 场景: 1. 把文件或目录从一个地方移动到另一个地方。 2. 给文件或目录改名。 * 命令: mv * 记忆法: move (移动) 的缩写。 * 核心技巧: * 改名: mv 旧名字 新名字。例如: mv test_file_copy.txt renamed_file.txt。 * 移动: mv 文件名 目录名/。例如: mv renamed_file.txt temp_dir/。 * 理解核心: “改名”其实是“移动”的一种特殊情况,即把文件移动到当前目录,但使用一个新名字。 实践一下: 1. mv test_file_copy.txt final_version.txt (改名) 2. ls (看看文件名是不是变了) 3. mkdir my_docs (创建一个目录) 4. mv final_version.txt my_docs/ (移动) 5. ls (看看 final_version.txt 是不是不见了) 6. ls my_docs/ (看看它是不是在 my_docs 里面了) 5. `rm` - 删除 * 场景: 彻底删除一个或多个文件/目录。 * 命令: rm * 记忆法: remove (移除) 的缩写。 * 核心技巧 (极其重要!): * rm 文件名: 删除文件。系统可能会提示你确认。 * rm -f 文件名: -f (force, 强制) 不经确认,直接删除。 * rm -r 目录名: -r (recursive, 递归) 删除目录和它里面的所有东西。 * rm -rf 目录名: 终极警告! 这是 Linux 中最危险的命令之一。它会不经确认、强制、递归地删除一个目录及其全部内容。没有回收站,没有撤销键。用之前请务必再三确认路径是否正确! 实践一下 (请小心操作): 4. ls (世界清静了) --- 第二步总结与强化 你现在掌握了文件操作的“五大神器”: * 创: touch (创建空文件) * 查: cat (查看小文件) * 移: mv (移动/改名) & cp (复制) * 删: rm (删除,要小心!) 强化练习: 1. 创建一个目录 project。 2. cd 进入 project 目录。 3. 创建 main.py 和 README.md 两个文件。 4. 在 README.md 中写入 "This is a test project."。 5. 查看 README.md 的内容。 6. 将 main.py 复制为 main_backup.py。 7. 将 main.py 改名为 app.py。 8. 创建一个 backup 目录,并将 main_backup.py 移动进去。 9. 最后,用一条命令删除整个 project 目录。 这个练习覆盖了今天学的所有命令。试着独立完成它,遇到问题再回顾上面的讲解。 准备好后,我们可以进入第三步:更强大的文件查看和内容搜索。 ╭──────────────╮ │ > 继续教程 │ ╰──────────────╯ ✦ 好的,我们继续前进!你已经学会了如何管理文件和目录,现在我们要提升“看”和“找”的能力。cat 很好,但当文件很大时,它就像试图一口气喝光整个游泳池的水。 --- 第三步:高级文件查看与内容搜索 这一步,我们将学会如何优雅地阅读大文件,以及如何在成千上万行文字中,精确地找到我们想要的那一行。 1. `less` - 从容阅读 * 场景: 你想查看一个很长的文件,比如程序日志、长篇代码或文档。你需要一个可以上下翻页、搜索、并且随时退出的工具。 * 命令: less * 记忆法: 记住这句名言:"less is more" (少即是多)。它一次只给你看一页(less),但功能比 cat 多得多(more)。 * 核心技巧 (交互式命令): * 打开文件: less 文件名 * 导航: * 空格键 或 f: 向下翻一页 (forward) * b: 向上翻一页 (backward) * ↓ / ↑: 向下/上滚动一行 * g: 跳到文件开头 (go) * G: 跳到文件末尾 (Go) * 搜索: * /关键词: 从当前位置向下搜索。输入 / 后,光标会跳到底部,输入关键词再回车。 * ?关键词: 从当前位置向上搜索。 * n: 跳转到下一个搜索结果 (next)。 * N: 跳转到上一个搜索结果。 * 退出: * q: 退出 less,返回到你的终端 (quit)。这是最重要的,记住它就不会被困住! 实践一下: 你的命令历史记录文件 (.zsh_history 或 .bash_history) 是一个完美的练习对象。 1. 输入 less ~/.zsh_history (如果你用 bash,就用 ~/.bash_history)。 2. 用 空格 和 b 翻页感受一下。 3. 按 G 跳到文件末尾,看看你最近执行的命令。 4. 按 g 回到文件开头。 5. 输入 /ls 然后回车,查找你用过的 ls 命令,用 n 找下一个。 6. 最后,按 q 退出。 2. `head` & `tail` - 蜻蜓点水 * 场景: 你不关心整个文件,只想快速看一眼文件的开头几行或结尾几行。这对于检查文件类型或查看最新日志特别有用。 * 命令: head (头), tail (尾) * 记忆法: 命令本身就是意思,非常直观。 * 核心技巧: * head 文件名: 默认显示文件的前 10 行。 * tail 文件名: 默认显示文件的后 10 行。 * head -n 5 文件名: 使用 -n 选项指定行数,这里显示前 5 行。 * tail -n 20 文件名: 显示后 20 行。 * tail -f 文件名: 超级有用的功能! -f 代表 follow (跟随)。它会保持文件打开状态,并实时显示追加到文件末尾的新内容。常用于实时监控日志文件的变化。按 Ctrl+c 停止。 实践一下: 1. head ~/.zsh_history 2. tail -n 5 ~/.zsh_history 3. (选做,感受 tail -f) 打开两个终端。在一个终端里输入 tail -f nohup.out (这是一个常见的日志文件名,如果不存在,就 touch nohup.out 创建一个)。在另一个终端里输入 echo "a new log line" >> nohup.out。看看第一个终端是不是立刻显示了新内容。 3. `grep` - 万里寻踪 * 场景: 你知道你要找的内容(一个单词、一段代码、一个配置项),但不知道它在哪个文件里,或者在文件的哪一行。grep 就是你的文本内容搜索引擎。 * 命令: grep * 记忆法: Global Regular Expression Print。有点复杂,可以记成 grab and print (抓取并打印)。 * 核心技巧: * grep "关键词" 文件名: 在一个文件中搜索包含“关键词”的行。 * grep -i "关键词" 文件名: -i (ignore case),忽略大小写进行搜索。 * grep -r "关键词" 目录名: -r (recursive),在指定目录及其所有子目录下的所有文件中,递归搜索关键词。这是查找项目代码的超级神器! * grep -n "关键词" 文件名: -n (number),显示匹配行及其行号。 管道 `|` - 命令的流水线 这是 Linux 哲学的精髓!| 符号叫做“管道”,它可以把前一个命令的输出,作为后一个命令的输入。这让你可以像搭乐高一样组合简单的命令,完成复杂的任务。 `grep` 和管道是天作之合: * 场景: 你想在你的历史命令中,找到所有和 docker 相关的操作。 * 命令: history | grep "docker" * history 命令会输出你所有的历史命令。 * | 把这些输出全部“喂”给了 grep。 * grep "docker" 从这些输入中,筛选出包含 "docker" 的行并显示出来。 实践一下: 1. grep "alias" ~/.zshrc (在你的 shell 配置文件里找找别名设置)。 2. history | grep "cd" (看看你都 cd 到过哪些目录)。 3. ls -lah | grep "py" (在当前目录的长列表中,找到所有含 "py" 的条目,比如 python 文件)。 4. (选做,递归搜索) grep -r "root" /etc/ (这可能会输出很多内容,并可能有一些权限错误,但能让你感受到递归搜索的威力。按 Ctrl+c 可以随时停止)。 --- 第三步总结与强化 * 从容看长文: less (用 q 退出) * 快速瞄一眼: head (看头), tail (看尾) * 实时监控: tail -f * 精确找内容: grep (配合 -i, -r, -n) * 王牌组合技: 命令1 | 命令2 (管道) 强化练习: 1. 用 history 命令的输出,通过管道传递给 grep,找出你用过多少次 sudo 命令。 2. 找到你的 /etc/hosts 文件,用 less 查看它。 3. 用 grep 在 /etc/hosts 文件中搜索包含 localhost 的行,并显示行号。 4. 在你的家目录 ~ 下,使用 grep 递归搜索,看看哪些文件包含了你的用户名。(你的用户名可以通过 whoami 命令看到)。 你已经从一个“观光客”成长为“侦探”了。当你熟练掌握了这些,我们就离“高手”更近一步了。准备好后,我们将进入第四步:权限管理与用户身份。 ╭──────────╮ │ > 继续 │ ╰──────────╯ ✦ 非常好!我们现在进入 Linux 世界的核心地带。理解了这一部分,你就能明白为什么 Linux 是一个安全、稳定的多用户操作系统。 --- 第四步:权限管理与用户身份 - “你是谁?你能做什么?” 在 Linux 中,每一个文件和目录都有它的“主人”(Owner)和所属的“用户组”(Group),并且明确规定了“谁”可以对它进行“何种”操作。 1. `whoami` & `id` - 我是谁? * 场景: 在复杂的环境中,或者切换用户后,你想确认当前登录的到底是哪个用户。 * 命令: * whoami: 直接、简单地告诉你当前用户名。 * id: 显示更详细的信息,包括用户ID(uid)、所属主用户组(gid)以及所属的所有其他用户组。 * 记忆法: whoami -> Who am I? (我是谁?) * 实践一下: * whoami * id 2. 解读 `ls -l` 的权限密码 我们之前用过 ls -l,现在要深入解读它输出的第一列信息。例如: -rwxr-xr-- 1 myuser staff 4096 Aug 8 10:30 myfile.txt 我们关注 **-rwxr-xr--** 这 10 个字符。 * 第 1 位: 文件类型 * -: 普通文件 * d: 目录 (directory) * l: 符号链接 (link) * 第 2-4 位: 文件所有者 (Owner) 的权限 * 第 5-7 位: 文件所属组 (Group) 的权限 * 第 8-10 位: 其他人 (Others) 的权限 这三组权限的含义是固定的: * r: Read (读)。 * 对文件:可以读取内容 (cat, less, grep)。 * 对目录:可以列出目录下的内容 (ls)。 * w: Write (写)。 * 对文件:可以修改文件内容。 * 对目录:可以在目录中创建、删除、重命名文件 (touch, rm, mv)。(注意:是对目录有w权限,而不是对里面的文件有w权限) * x: Execute (执行)。 * 对文件:可以作为程序来运行(比如脚本文件)。 * 对目录:可以进入该目录 (cd)。 所以,-rwxr-xr-- 的意思是:这是一个文件(-),所有者拥有读、写、执行权限(rwx),同组用户拥有读、执行权限(r-x),其他人只有读权限(r--)。 3. `chmod` - 改变权限 * 场景: 你创建了一个脚本,需要让它能被执行;或者你不希望别人修改你的某个文件。 * 命令: chmod * 记忆法: Change Mode (改变模式)。 * 核心技巧 (两种模式): A. 符号模式 (更直观) * u: user (所有者) * g: group (组) * o: others (其他人) * a: all (所有人, u+g+o) * +: 添加权限 * -: 移除权限 * =: 设置精确权限 示例: * chmod u+x my_script.sh: 给所有者(u)添加(+)执行权限(x)。 * chmod g-w data.txt: 移除组用户(g)的写权限(-w)。 * chmod o=r config.conf: 设置其他人(o)的权限为只读(=r)。 * chmod a+r public_file: 让所有人都能读。 B. 数字模式 (更快捷) * r = 4 * w = 2 * x = 1 * 把需要的权限数字相加。例如 rwx = 4+2+1 = 7。r-x = 4+0+1 = 5。r-- = 4+0+0 = 4。 * 使用三位数字,分别代表 u, g, o 的权限。 示例: * chmod 755 my_script.sh: 相当于 u=rwx, g=rx, o=rx。这是脚本和程序的常用权限。 * chmod 644 my_document.txt: 相当于 u=rw, g=r, o=r。这是普通文件的常用权限。 实践一下 (非常重要!): 1. touch test_script.sh 2. echo 'echo "It works!"' > test_script.sh (写入一行命令) 3. ls -l test_script.sh (查看权限,你会发现它默认没有 x 权限) 4. 尝试运行它: ./test_script.sh (系统会提示 "Permission denied") 5. 给它加上执行权限: chmod u+x test_script.sh 6. ls -l test_script.sh (再次查看权限,x 出现了!) 7. 再次运行它: ./test_script.sh (成功!) 4. `sudo` - 临时超能力 * 场景: 当你执行一个命令,系统提示 "Permission denied",而你确信这个操作是必要且安全的(比如安装软件、修改系统配置)。 * 命令: sudo * 记忆法: Super User DO (超级用户来做)。 * 核心技巧: * sudo <要执行的命令>: 例如 sudo apt update (在Debian/Ubuntu系) 或 sudo yum update (在RedHat/CentOS系)。 * 它会提示你输入你自己的密码,而不是 root 用户的密码。 * 警告: sudo 给了你临时的 root (系统管理员) 权限,可以做任何事,包括摧毁系统。在使用 sudo rm -rf ... 这类命令时,请务必三思。 实践一下: 1. 尝试查看一个你没有权限看的文件: cat /etc/shadow (这保存了加密的用户密码,必然会 "Permission denied")。 2. 使用 sudo 再次尝试: sudo cat /etc/shadow (输入你的密码后,这次就成功了)。 --- 第四步总结与强化 * 我是谁: whoami * 权限密码: ls -l 的前10个字符 (-rwxr-xr--),分为 文件类型、所有者(u)、组(g)、其他人(o) 四部分。 * 赋予能力: chmod (用 u+x 添加执行权限,或用 755, 644 等数字模式)。 * 终极力量: sudo (当权限不够时,用它临时提升权限来执行命令)。 强化练习: 1. 创建一个名为 private 的目录。 2. 使用 chmod 命令,设置这个目录的权限,使得只有你自己可以进入、查看和修改,而组用户和其他人完全没有任何权限 (提示: 数字模式是 700)。 3. 验证一下:cd private 应该成功。然后 cd .. 回来。 4. 尝试用 sudo 创建一个文件在根目录 /: sudo touch /a_test_file_by_me.txt。 5. 用 ls -l /a_test_file_by_me.txt 查看这个文件的所有者是谁。 6. 最后用 sudo rm /a_test_file_by_me.txt 把它删除。 你已经掌握了 Linux 的安全基石。接下来,我们将学习如何管理系统进程,看看你的电脑“后台”都在忙些什么。准备好了就告诉我。 ╭──────────╮ │ > 继续 │ ╰──────────╯ ✦ 太棒了,你的学习势头很足!现在我们从“静态”的文件和权限,转向“动态”的系统心脏——进程。 --- **第五步:进程管理 - 谁在“偷”我的CPU? 你的 Linux 系统不是一个空房子,里面住着许多“房客”——正在运行的程序,我们称之为进程 (Process)。有些在前台与你互动,更多的在后台默默工作。学会管理它们,你就能诊断系统变慢的原因,关闭无响应的程序,并让耗时任务在后台运行。 1. `ps` - 给所有进程拍张“全家福” * 场景: 你想获得一个当前系统所有进程的静态列表。就像拍一张快照,看看这一瞬间都有谁在场。 * 命令: ps * 记忆法: Process Status (进程状态) 的缩写。 * 核心技巧 (黄金组合): 单独使用 ps 显示的信息太少,几乎没用。我们通常使用选项组合: * ps aux: 这是最常用、最经典的组合。 * a: 显示所有用户的进程 (All users)。 * u: 以用户为中心,显示更详细的格式 (User-oriented format)。 * x: 显示没有控制终端的进程(即后台服务进程)。 * 关键列解读: * USER: 进程属于哪个用户。 * PID: Process ID (进程ID)。这是每个进程的唯一身份证号,是后面操作(如 kill)的目标。 * %CPU / %MEM: 进程占用的 CPU 和内存百分比。 * COMMAND: 进程的命令名。 实践一下: 1. ps aux (输出会很长,你可以用 less 来查看: ps aux | less) 2. 结合 grep 找到特定进程: ps aux | grep ssh (看看系统里和 ssh 相关的进程)。 2. `top` / `htop` - 实时系统“仪表盘” * 场景: ps 是静态的,如果你想实时、动态地监控系统资源使用情况,就像 Windows 的任务管理器,top 是你的首选。 * 命令: top * 记忆法: 它显示“顶端”最耗费资源的进程。 * 核心技巧 (交互式): * 运行 top 后,它会持续刷新。 * P (大写): 按 CPU 使用率排序。 * M (大写): 按内存使用率排序。 * q: 退出 (Quit)。 * `htop`: top 的一个“豪华升级版”,用颜色和更友好的界面展示信息,强烈推荐!如果系统没有,可以用 sudo apt install htop 或 sudo yum install htop 安装。 实践一下: 1. 运行 top。 2. 按 P 和 M 试试排序。 3. 按 q 退出。 4. 如果你安装了 htop,运行 htop 感受一下区别。 3. `kill` - 温柔或强硬地结束进程 * 场景: 一个程序卡死,或者你想手动停止一个后台服务。 * 命令: kill * 记忆法: 就是“杀死”进程。 * 核心技巧: kill 并不是直接“杀死”,而是向进程发送一个信号 (Signal)。你需要用 ps 或 top 找到那个进程的 PID。 * kill <PID>: 这是默认方式,发送 TERM (15) 信号。这是一种“礼貌”的通知,告诉程序“请你自行了断”,程序可以做一些清理工作再退出。 * kill -9 <PID> 或 kill -SIGKILL <PID>: 发送 KILL (9) 信号。这是“强制枪决”,进程被立刻终止,没有任何反抗和清理的机会。仅在第一种方式无效时使用。 实践一下 (安全操作): 1. sleep 300 (这个命令会“睡眠”300秒,什么也不做)。 2. 不要关闭这个终端,打开另一个终端。 3. 在第二个终端里,找到 sleep 的 PID: ps aux | grep sleep。 4. 记下那个 PID,然后“杀死”它: kill <你找到的PID>。 5. 回到第一个终端,你会发现 sleep 300 命令已经 "Terminated" (终止) 了。 4. `&`, `jobs`, `fg`, `bg`, `Ctrl+Z` - 进程的后台调度 * 场景: 你要执行一个非常耗时的任务(比如编译代码、传输大文件),但又不想被它卡住终端,还想继续做别的事情。 * 核心技巧: * command &: 在命令末尾加一个 &,可以让命令在后台运行,你的终端会立刻返回,可以继续输入其他命令。 * jobs: 查看当前终端会话里,有哪些正在后台运行或被暂停的任务。 * Ctrl+Z: 按下 Ctrl+Z 可以暂停一个正在前台运行的命令。 * bg: (background) 让一个被暂停的任务到后台去继续运行。用法: bg %任务号 (任务号来自 jobs 命令)。 * fg: (foreground) 把一个后台或暂停的任务拉回前台来运行。用法: fg %任务号。 实践一下 (这个流程很关键): 1. sleep 500 & (让一个任务在后台跑,它会返回一个 [1] <PID>) 2. jobs (你会看到一个 "Running" 的 sleep 任务,任务号是 1) 3. ping baidu.com (启动一个前台任务) 4. 按下 Ctrl+Z (ping 被暂停了 "Stopped") 5. jobs (现在你会看到一个 "Running" 的 sleep 和一个 "Stopped" 的 ping) 6. bg %2 (让被暂停的 ping 在后台继续跑,%2 是 ping 的任务号) 7. jobs (现在两个都是 "Running" 了) 8. fg %1 (把 sleep 任务拉回前台) 9. 按下 Ctrl+C (终止前台的 sleep 任务) 10. kill %2 (你也可以用 kill %任务号 来干掉后台任务) --- 第五步总结与强化 * 看快照: ps aux (常与 | grep 联用) * 看实时: top 或 htop (用 q 退出) * 杀进程: kill <PID> (温柔), kill -9 <PID> (强硬) * 后台魔法: * & (扔到后台) * Ctrl+Z (暂停前台) * jobs (查看后台列表) * bg (后台继续) * fg (拉回前台) 强化练习: 1. 启动一个后台任务 ping google.com > /dev/null & ( > /dev/null 的意思是把输出扔掉,免得刷屏)。 2. 用 ps 和 grep 找到它的 PID。 3. 用 top 看看能不能找到它,观察它的 CPU 占用。 4. 用 kill 命令结束这个 ping 进程。 你现在已经具备了系统管理员的基本素养!你不仅能管理文件,还能管理正在运行的服务。接下来,我们将学习网络相关的命令,让你知道你的 Linux 是如何与世界相连的。准备好了吗? ╭──────────────────╮ │ > 好的,继续吧 │ ╰──────────────────╯ ✦ 好的,我们来探索 Linux 的网络世界。这些命令将帮助你诊断网络问题,查看连接状态,并从互联网上获取数据,所有这些都无需离开你的终端。 --- 第六步:网络工具箱 - 连接世界 1. `ping` - 你在线吗? * 场景: 最基础的网络诊断。你想知道你的电脑是否能与另一台电脑(比如,谷歌的服务器)建立最基本的连接。 * 命令: ping * 记忆法: 就像潜水艇的声纳“ping”声,你发出一个信号,等待对方的回应。 * 核心技巧: * ping google.com: 向 google.com 发送网络数据包 (ICMP Echo-Request),并等待回复。 * 如何解读: * time=... ms: 这是延迟 (Latency),即数据往返所需时间,毫秒为单位。越低越好。 * packet loss: 丢包率。0% 是最理想的。如果这个数字很高,说明你的网络连接不稳定。 * 如何停止: 按 Ctrl+C。在 Linux 上,ping 会一直运行下去,直到你手动停止它。 * ping -c 4 google.com: -c (count) 选项让 ping 在发送 4 个包后自动停止。这在写脚本时非常有用。 实践一下: 1. ping 1.1.1.1 (这是 Cloudflare 的公共 DNS 服务,通常很快)。 2. 观察几秒钟,然后按 Ctrl+C 停止。 3. ping -c 5 baidu.com 看看它如何自动结束。 2. `ip` / `ifconfig` - 我的地址是什么? * 场景: 你需要知道你电脑在局域网中的 IP 地址,或者查看网络接口的状态。 * 命令: ip (现代主流), ifconfig (旧版,但仍常见) * 记忆法: ip 就是 IP 地址。ifconfig 是 interface configure (接口配置)。 * 核心技巧: * ip addr (或简写 ip a): 显示所有网络接口的详细信息。 * 如何找到 IP: 在输出中寻找你的主网卡(通常叫 eth0, ens... 或 wlan0),然后找到 inet 字段,后面的就是你的 IPv4 地址。 * ifconfig: 如果 ip 命令不存在或你习惯旧版,直接运行 ifconfig。它会以不同格式显示类似信息。 实践一下: 1. ip a 2. 试着在输出中找到你的 IP 地址。它通常看起来像 192.168.x.x 或 10.x.x.x。 3. `ss` / `netstat` - 谁在监听? * 场景: 你启动了一个 web 服务,想确认它是否在正确地监听端口(如 80 或 443)。或者你想看当前有哪些网络连接。 * 命令: ss (现代,更快), netstat (旧版) * 记忆法: ss 是 Socket Statistics (套接字统计)。netstat 是 Network Statistics (网络统计)。 * 核心技巧 (黄金组合): * ss -tuln: 这是最常用的组合,用于查看正在监听的端口。 * -t: 显示 TCP 连接。 * -u: 显示 UDP 连接。 * -l: 只显示Listening (监听中) 的套接字。 * -n: 以Numeric (数字) 形式显示端口号,而不是服务名(如显示 80 而不是 http),速度更快。 * 如何解读: Local Address:Port 这一列告诉你哪个 IP 和端口在监听。0.0.0.0:80 意味着在本机的所有 IP 地址上监听 80 端口。 实践一下: 1. ss -tuln 2. 看看列表里有没有你认识的服务,比如 22 (SSH)。 4. `curl` & `wget` - 从网络获取 * 场景: 你需要从一个 URL 下载文件,或者测试一个 API 接口的返回内容。 * 命令: curl (瑞士军刀), wget (下载专家) * 记忆法: curl -> Client for URLs。wget -> Web Get。 * 核心技巧: * `wget`: * wget <URL>: 直接下载 URL 指向的文件,并以原文件名保存在当前目录。简单直接。 * wget -O new_name.html <URL>: -O (大写O) 让你指定一个新文件名。 * `curl`: * curl <URL>: 默认情况下,它会把下载的内容打印到终端,而不是保存成文件。这对于快速查看网页源码或 API 响应非常方便。 * curl -o file.html <URL>: -o (小写o) 告诉 curl 把内容保存到文件。 * curl -I <URL>: -I (大写i) 只获取 HTTP Headers (头部信息),不下载页面内容。用于快速检查 URL 状态码 (200 OK, 404 Not Found 等)。 实践一下: 1. wget https://www.baidu.com/robots.txt (下载百度的爬虫规则文件) 2. ls (你会看到一个 robots.txt 文件) 3. cat robots.txt (查看内容) 4. curl https://www.baidu.com/robots.txt (同样的内容,但直接显示在屏幕上) 5. curl -I https://www.google.com/nosuchpage.html (看看一个不存在的页面返回什么头部信息,留意 404 Not Found) --- 第六步总结与强化 * 网络通不通: ping <host> (用 Ctrl+C 停止) * 我是谁,在哪: ip addr (或 ip a) * 谁在开门等客: ss -tuln * 下载文件: wget <URL> * 测试/查看URL内容: curl <URL> 强化练习: 1. 用 ping 检查你是否能连接到 github.com。 2. 用 curl 获取 https://api.github.com/users/torvalds (Linux 创始人的 GitHub API 信息),然后通过管道 | 交给 grep 找出他的 "name"。 3. 用 wget 下载你头像的 URL (如果你知道的话),并用 ls -l 查看它的大小。 你现在已经掌握了从本机到局域网再到互联网的一整套诊断和交互工具。我们几乎涵盖了日常使用的所有核心领域! 下一步,我们将学习如何管理软件包,即如何在你的系统上安装、更新和卸载软件。这是让你的 Linux 系统保持最新和功能强大的关键。准备好了吗? ╭──────────╮ │ > 继续 │ ╰──────────╯ ✦ 我们已经到达了这次深度学习之旅的最后一站,但这也是最能赋予你力量的一站。你将学会如何为你自己的系统“添砖加瓦”,安装新工具,让它变得无所不能。 --- 第七步:软件包管理 - 打造你的专属工具库 想象一下你的 Linux 系统是一个手机,那么软件包管理器 (Package Manager) 就是它的“应用商店”。这是一个强大的系统,它负责处理软件的搜索、安装、更新和卸载。你不需要再像在 Windows 上那样去网上找 .exe 文件,它会自动帮你处理好一切,包括软件之间的依赖关系(比如 A 软件需要 B 软件才能运行)。 不同的 Linux 发行版使用不同的包管理器,但它们的核心理念是相通的。我们关注两个最主流的体系: 1. Debian / Ubuntu / 等衍生版: 使用 apt (Advanced Package Tool)。 2. Red Hat / CentOS / Fedora: 使用 yum 或其现代替代品 dnf (操作基本一致)。 关键: 所有包管理操作都需要修改系统,因此几乎总要使用 `sudo`。 1. 更新软件列表 * 场景: 在安装或升级任何软件之前,你必须先做这一步。它会从服务器上获取最新的可用软件包名录,确保你安装的是最新版本。 * 命令: * Debian/Ubuntu: sudo apt update * CentOS/Fedora: sudo yum check-update (或 sudo dnf check-update) * 核心: 这步不会安装或升级任何软件,它只是刷新你的“应用商店”目录。 2. 安装软件 * 场景: 你听说了一个很酷的工具(比如我们之前提到的 htop 或 neofetch),想在你的系统上使用它。 * 命令: * Debian/Ubuntu: sudo apt install <软件包名> * CentOS/Fedora: sudo yum install <软件包名> (或 sudo dnf install ...) * 示例: sudo apt install neofetch 3. 升级已安装的软件 * 场景: 为了安全和新功能,你应该定期更新系统上所有已安装的软件。 * 命令: * Debian/Ubuntu: sudo apt upgrade (通常在 apt update 之后执行) * CentOS/Fedora: sudo yum upgrade (或 sudo dnf upgrade) * 流程: 总是先 update,再 upgrade。 4. 搜索软件包 * 场景: 你想实现某个功能,但不确定对应的软件包叫什么名字。 * 命令: * Debian/Ubuntu: apt search <关键词> * CentOS/Fedora: yum search <关键词> (或 sudo dnf search ...) * 示例: apt search "system information" 5. 卸载软件 * 场景: 你安装了一个软件,但后来发现不再需要它了。 * 命令: * Debian/Ubuntu: * sudo apt remove <软件包名>: 只卸载软件本身,但保留配置文件。 * sudo apt purge <软件包名>: 彻底卸载,包括配置文件一起删除。 * CentOS/Fedora: sudo yum remove <软件包名> (或 sudo dnf remove ...) 实践一下 (一个完整的生命周期): 我们将安装并运行 neofetch,一个能漂亮地显示你系统信息的工具。 1. 刷新列表: sudo apt update (或者 sudo yum check-update) 2. 搜索它 (可选): apt search neofetch 3. 安装它: sudo apt install neofetch (或者 sudo yum install neofetch) * 系统会提示你将要安装的包和占用的空间,输入 y 然后回车。 4. 运行它: neofetch * 看看屏幕上是不是出现了你的系统 Logo 和各种信息?恭喜你,成功了! 5. 卸载它: sudo apt remove neofetch 6. 彻底清除它 (可选): sudo apt purge neofetch --- 旅程总结与未来之路 恭喜你!你已经完成了从“生存”到“精通”的七个核心步骤: 1. 导航与观察 (`pwd`, `ls`, `cd`): 你知道了身在何处。 2. 文件操作 (`touch`, `cat`, `cp`, `mv`, `rm`): 你学会了创造和管理。 3. 高级查看与搜索 (`less`, `head`, `tail`, `grep`, `|`): 你拥有了强大的洞察力。 4. 权限与身份 (`chmod`, `sudo`): 你理解了规则和力量。 5. 进程管理 (`ps`, `top`, `kill`, `&`): 你成为了系统的调度者。 6. 网络工具 (`ping`, `ip`, `ss`, `curl`, `wget`): 你连接了世界。 7. 包管理 (`apt`, `yum`): 你获得了无限扩展的能力。 如何继续强化? * 把图形界面忘掉一天: 强迫自己只用命令行完成日常任务,比如文件管理、查看信息。这是最快的成长方式。 * 写一个简单的 Shell 脚本: 把你今天学到的一系列命令(比如创建一个目录,进入,创建文件,写入内容)写到一个 .sh 文件里,然后用 chmod +x 给他执行权限并运行它。这将是通往自动化的大门。 * 保持好奇,善用 `man` 和 `--help`: 遇到一个命令,想知道它还有什么神奇的功能?man <命令> 是你最好的老师。 * 解决实际问题: 你的学习不应止于教程。用命令行去解决你遇到的真实问题,这才是知识内化的最终途径。 你已经拥有了在 Linux 世界自由探索的地图和所有必需的工具。真正的旅程,现在才刚刚开始。祝你玩得愉快! ~ no sandbox (see /docs) gemini-2.5-pro (98% context left)
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章