当前位置:首页>Linux>Linux Part 2

Linux Part 2

  • 2026-03-07 03:17:41
Linux Part 2

Chapter-3 More About Files(关于文件的更多信息)

1. 万物皆文件 (Everything is a File)

关于 Linux 我们首先需要理解的一点是:在底层逻辑中,一切皆文件。文本文件是一个文件,目录是一个文件,你的键盘是一个文件(一个系统仅从中读取数据的特殊文件),你的显示器也是一个文件(一个系统仅向其写入数据的特殊文件),依此类推。

在起步阶段,这可能不会对我们的操作产生太大影响,但请务必记住这一点,因为它有助于理解 Linux 在管理文件和目录时的行为逻辑。

2. Linux 是一个无扩展名系统

这一点有时可能难以理解,但随着学习的深入,它会变得越来越清晰。文件扩展名通常是文件名末尾句点(.)后的 2 到 4 个字符,用于表示文件类型。以下是常见的扩展名:

  • • file.exe —— 可执行文件或程序。
  • • file.txt —— 纯文本文件。
  • • file.pngfile.giffile.jpg —— 图像文件。

在 Windows 等其他系统中,扩展名非常重要,系统通过它来确定文件类型。但在 Linux 下,系统实际上会忽略扩展名,而是通过查看文件内部内容来确定其类型。例如,我有一个名为 myself.png 的照片文件,即使我将其重命名为 myself.txt 甚至直接命名为 myself,Linux 依然会将其视为图像文件。

由于这种特性,有时很难仅凭名称确定文件类型。幸运的是,我们可以使用 file 命令来查询。



1

file [path]


你可能会好奇为什么我将命令行参数指定为 path 而不是 file。回顾上一节,每当我们在命令行指定文件或目录时,它实际上都是一个路径。此外,由于目录(如前所述)其实也是一种特殊类型的文件,更准确的说法是:路径是到达系统中特定位置的手段,而该位置就是一个文件。

3. Linux 区分大小写 (Case Sensitivity)

这一点至关重要,也是 Linux 初学者经常遇到问题的根源。像 Windows 这样的其他系统在引用文件时是不区分大小写的,但 Linux 则完全不同。因此,在同一个目录下,可以存在两个或多个名称相同但字母大小写不同的文件或目录。



1
2
3
4
5
6

user@bash: ls Documents
FILE1.txt File1.txt file1.TXT
...

user@bash: file Documents/file1.txt
Documents/file1.txt: ERROR: cannot open 'file1.txt' (No such file or directory)


Linux 将这些文件全部视为互不相关的独立文件。

此外,在处理命令行选项时也要注意大小写敏感性。例如,ls 命令有两个选项 -s 和 -S,它们的功能完全不同。一个常见的错误是看到一个大写的选项却输入了小写,然后疑惑为什么输出结果与预期不符。

4. 文件名中的空格

在文件和目录名称中使用空格是完全合法的,但我们需要格外小心。正如你所记得的,命令行中的空格是分隔各项元素的标志。系统正是通过空格来区分程序名称和各个命令行参数的。

例如,如果我们想进入一个名为 Holiday Photos 的目录,以下操作将无法奏效:



1
2
3
4
5
6

user@bash: ls Documents
FILE1.txt File1.txt file1.TXT Holiday Photos
...

user@bash: cd Holiday Photos
bash: cd: Holiday: No such file or directory


发生这种情况的原因是,系统将 Holiday Photos 视为两个独立的命令行参数。cd 命令仅会尝试切换到由第一个参数指定的目录。为了解决这个问题,我们需要向终端指明,我们希望将 Holiday Photos 视为一个单一的参数。有两种处理方法,两者同样有效。

引号 (Quotes)

第一种方法是在整个项目周围使用引号。你可以使用单引号或双引号(稍后我们会看到两者之间存在细微差别,但目前这种差别并不影响操作)。引号内的任何内容都被视为一个单一的项目。



1
2
3

user@bash: cd 'Holiday Photos'
user@bash: pwd
/home/ryan/Documents/Holiday Photos


转义字符 (Escape Characters)

另一种方法是使用所谓的转义字符,即反斜杠( \ )。反斜杠的作用是转义(或取消)其后紧跟字符的特殊含义。



1
2
3

user@bash: cd Holiday\ Photos
user@bash: pwd
/home/ryan/Documents/Holiday Photos


在上述示例中,Holiday 和 Photos 之间的空格通常具有分隔不同命令行参数的特殊含义。因为我们在它前面放置了一个反斜杠,这个特殊含义就被移除了。

在上一节中,我们学习了 Tab 键补全。如果你在遇到目录名中的空格之前使用该功能,终端会自动为你转义名称中的任何空格。

5. 隐藏文件与目录

Linux 提供了一个非常简单且优雅的机制来指定隐藏文件或目录:如果文件或目录的名称以 .(句点)开头,它就被视为隐藏的。你甚至不需要特殊的命令或操作来隐藏文件。

文件和目录被隐藏的原因多种多样。例如,特定用户的配置文件(通常存储在其家目录中)会被隐藏,这样它们就不会干扰用户的日常操作。

要使文件或目录隐藏,你只需在创建时以 . 开头命名,或者将其重命名为以 . 开头的名称。同样,你可以通过重命名隐藏文件来移除开头的 .,使其变为非隐藏状态。我们在上一节学到的 ls 命令默认不会列出隐藏内容。我们可以通过添加命令行选项 -a 来修改其行为,从而显示所有文件和目录。



1
2
3
4
5
6
7

user@bash: ls Documents
FILE1.txt File1.txt file1.TXT
...

user@bash: ls -a Documents
. .. FILE1.txt File1.txt file1.TXT .hidden .file.txt
...


在上述示例中,当你列出所有项目时,前两个项目是 . 和 ..。如果你不确定这些是什么,建议回顾上一节关于路径 (Paths) 的内容。

6. 总结 (Summary)

命令/概念核心功能与意义
file获取文件信息
:确定一个文件或目录的真实类型。
ls -a列出所有内容
:显示目录下的所有文件,包括以 . 开头的隐藏文件。
万物皆文件
在 Linux 底层,目录、硬件设备等均被视为文件处理。
无扩展名系统
文件可以有任何扩展名或没有扩展名,系统通过内容识别类型。
区分大小写
文件名和命令选项严格区分大小写,需警惕拼写错误。

Chapter-4 Manual Pages(帮助手册)

1. 介绍

Linux 命令行提供了极其强大的功能和机遇。系统中存在一个易于使用的资源,它可以告知我们命令行中所有强大的功能。首先我们需要学习如何使用 Manual pages(手册页)。

2. 它们究竟是什么?

手册页(Manual pages,简称 man pages)是一套用于解释系统中每个可用命令的文档,包括命令的功能、运行的具体细节以及它们接受的命令行参数。有些内容可能初看起来有些深奥,但它们的结构非常一致,一旦掌握了窍门,使用起来就会非常顺手。

可以使用以下命令调用手册页:



1

man <command to look up>




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

user@bash: man ls
Name
    ls - list directory contents

Synopsis
    ls [option] ... [file] ...

Description
    List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

    Mandatory arguments to long options are mandatory for short options too.

    -a, --all
        do not ignore entries starting with .

    -A, --almost-all
        do not list implied . and ..

...


让我们分步解析:

  • • 第 3 行:显示实际命令名称,随后是其功能的简短单行描述。
  • • 第 6 行:被称为 Synopsis(大纲/用法)。这是命令运行方式的快速概览。方括号 ([ ]) 表示其中的内容是可选的。(此行中的 option 指的是描述部分下方列出的各个命令行选项)。
  • • 第 9 行:提供了命令更详细的功能描述。
  • • 第 11 行起:在描述下方,始终会列出该命令所有可用的命令行选项及其具体含义。

退出手册页:按下键盘上的 'q' 键(代表 quit)。

3. 搜索 (Searching)

对手册页进行关键字搜索是完全可行的。如果你不太确定要使用哪个命令,但清楚自己想要实现的目标,这个功能将非常有用。为了使这种方法生效,你可能需要尝试几次,因为某个特定的词汇出现在许多手册页中是很常见的。

  1. 1. 全局关键字搜索

使用以下命令在所有手册的手册名和简短描述中进行搜索:



1

man -k <search term>


  1. 2. 在手册页内部搜索

如果你想在已打开的特定手册页内查找内容,也是可以实现的。

  • • 开启搜索:在阅读手册页时,按下正斜杠 /
  • • 输入术语:输入你想要查找的词汇并按下 Enter 键。
  • • 循环匹配:如果该词汇出现多次,你可以通过按下 n 键(代表 next)来循环查看后续的匹配项。

4. 关于命令运行的补充知识

在 Linux 中,进阶使用的关键在于了解如何通过命令行选项(options)来修改命令的行为以满足特定需求。许多选项都同时具备短格式长格式两种版本。

例如,在上一节中我们了解到,要列出所有目录条目(包括以 . 开头的隐藏文件),可以使用选项 -a 或 --all。长格式(如 --all)更具可读性,方便人类理解;而短格式(如 -a)则更简洁,便于快速输入和组合。



1
2
3
4
5
6
7

user@bash: pwd
/home/ryan

user@bash: ls -a
user@bash: ls --all
user@bash: ls -alh
user@bash: 


选项的组合规则

  • • 长格式选项:以两个连字符(--)开头。通常用于脚本编写,使代码意图更清晰。
  • • 短格式选项:以单个连字符(-)开头。
  • • 命令串联(Chaining):当使用短格式时,可以将多个字母组合在同一个连字符后面。例如,ls -alh 实际上同时调用了三个选项:
    • • -a (all):显示所有文件。
    • • -l (long):使用长格式列表。
    • • -h (human-readable):以人类可读的格式(如 KB, MB, GB)显示文件大小。

注意:某些选项需要跟随特定的参数(Arguments),这类选项通常需要单独列出并紧跟其参数。我们将在遇到此类特殊情况时再详细说明。

5. 总结 (Summary)

命令/操作核心功能
man <command>
查看特定命令的官方手册页
man -k <term>
搜索所有包含特定关键词的手册页条目。
/ <term>
在已打开的手册页内向后查找特定词汇。
n
在手册内查找时,跳转到下一个匹配项。

无需死记硬背,学会查阅手册是掌握 Linux 的捷径。

Chapter 5 File Manipulation (文件操作)

1. 介绍

这一节,我们将学习如何创建文件和目录,并对它们进行移动操作。后续章节将涉及向文件中填充内容以及更高级的操作技巧。

2. 创建目录/文件夹 (Making a Directory)

Linux 以层级方式组织其文件系统。随着时间的推移,你往往会积累大量的数据(存储容量总是在增加)。建立一个能帮助我们以可管理的方式组织这些数据的目录结构至关重要。我见过太多人直接把所有东西丢在家目录的根部,结果浪费大量时间在数百(甚至数千)个其他文件中寻找目标。现在就养成将资料组织成优雅文件结构的习惯,未来的你会感谢现在的自己。

创建目录非常简单。我们要使用的命令是 mkdir,它是 Make Directory 的缩写。



1

mkdir [options] <Directory>


在最基本的形式下,我们只需运行 mkdir 并提供一个目录名,它就会为我们创建该目录。



1
2
3
4
5
6
7
8
9
10

user@bash: pwd
/home/ryan

user@bash: ls
bin Documents public_html

user@bash: mkdir linuxtutorialwork

user@bash: ls
bin Documents linuxtutorialwork public_html


让我们分步解析:

  • • 第 1 行:首先确保我们处于预期的位置。(在上面的示例中,我位于我的家目录)。
  • • 第 4 行:进行快速列表查看,以便了解目录中已有的内容。
  • • 第 7 行:运行 mkdir 命令并创建一个名为 linuxtutorialwork 的目录(这是一个存放本教程相关后续工作的绝佳位置,可以将它们与我们的其他内容分开)。

请记住,在上述命令中提供目录名时,我们实际上是在提供一个路径。我们指定的路径是相对路径还是绝对路径?以下是提供待创建目录路径的更多示例:



1
2
3
4

mkdir /home/ryan/foo
mkdir ./blah
mkdir ../dir1
mkdir ~/linuxtutorialwork/dir2


mkdir 有一些非常有用的选项。可以去man 手册查找特定命令支持的命令行选项

第一个常用选项是 -p,它告诉 mkdir 根据需要创建父目录(下方有具体含义演示)。第二个是 -v (verbose),它让 mkdir 告诉我们它正在执行的操作(正如你在之前的示例中所见,它通常是静默执行的)。

  1. 1. 参数 -p (Parents)
    这个参数是 mkdir 最常用的功能之一。它有两个核心作用:

递归创建:如果你想创建一个深层嵌套的目录(例如 project/data/raw),但父目录 project 和 data 都不存在,普通命令会报错。-p 会自动创建路径中所有缺失的父目录。

静默忽略:如果目标目录已经存在,普通命令会报错(File exists),但使用 -p 后,命令会直接跳过而不报错,这在自动化脚本中非常有用。

  1. 2. 参数 -v (Verbose)
    详细报告:默认情况下,mkdir 执行成功后不会在屏幕上显示任何信息。-v 会让系统变得“话多”,它会打印出每一个新创建的目录名称,让你确认操作已成功执行。


1
2
3
4
5

user@bash: mkdir -p linuxtutorialwork/foo/bar
user@bash: 
user@bash: cd linuxtutorialwork/foo/bar
user@bash: pwd
/home/ryan/linuxtutorialwork/foo/bar


现在尝试带有 -v 选项的相同命令:



1
2
3
4
5
6
7

user@bash: mkdir -pv linuxtutorialwork/foo/bar
mkdir: created directory 'linuxtutorialwork/foo'
mkdir: created directory 'linuxtutorialwork/foo/bar'
user@bash: 
user@bash: cd linuxtutorialwork/foo/bar
user@bash: pwd
/home/ryan/linuxtutorialwork/foo/bar


3. 删除目录 (Removing a Directory)

创建目录非常简单,删除目录同样如此。但需要特别注意的一点是:在 Linux 命令行中没有“撤销” (undo) 功能(Linux 的 GUI 桌面环境通常提供回收站和撤销功能,但命令行没有)。操作时请务必小心。删除目录的命令是 rmdir,即 Remove Directory 的缩写。



1

rmdir [options] <Directory>


有两点需要注意:

  1. 1. 选项支持rmdir 与 mkdir 类似,也支持 -v (详细模式) 和 -p (递归删除父目录) 选项。
  2. 2. 空目录限制:目录在被删除前必须是空的(稍后我们将学习如何绕过这一限制)。


1
2
3

user@bash: rmdir linuxtutorialwork/foo/bar
user@bash: 
user@bash: ls linuxtutorialwork/foo


4. 创建空白文件 (Creating a Blank File)

许多涉及处理文件内数据的命令都有一个很好的特性:如果我们引用的文件不存在,它们会自动创建一个。事实上,我们可以利用 touch 命令的这一特性来创建空白文件。



1

touch [options] <filename>




1
2
3
4
5
6
7
8
9
10

user@bash: pwd
/home/ryan/linuxtutorialwork
user@bash: 
user@bash: ls
foo
user@bash: 
user@bash: touch example1
user@bash: 
user@bash: ls
example1 foo


原理

touch 实际上是一个用来修改文件访问时间修改时间的命令(通常不需要手动操作,但在测试依赖文件时间的系统时很有用)。我们在这里利用的是它的副作用:如果你 touch 一个不存在的文件,该命令会顺便为你自动创建它。

Linux 中的许多操作并不是直接完成的,而是通过了解某些命令的行为特征,并以创造性的方式利用它们来实现目标。

我们把命令行比作积木吗,你可以随意组合这些积木,但前提是你必须深入理解它们的功能(How)以及原理(Why)。目前这个文件是空的,看起来有点无聊,但在接下来的章节中,我们将学习如何向其中输入数据并提取数据。

5. 复制文件或目录 (Copying a File or Directory)

在 Linux 中,创建文件或目录的副本非常常见。通常在修改配置文件或实验脚本之前,我们会先备份一份,以防万一操作失误可以快速还原。我们使用的命令是 cp,即 copy 的缩写。



1

cp [options] <source> <destination>


cp 有很多可用的选项,建议查阅 man cp 来探索更多功能。



1
2
3
4
5
6

user@bash: ls
example1 foo
user@bash: 
user@bash: cp example1 barney
user@bash: ls
barney example1 foo


路径与命名规则

请注意,源(source)和目的地(destination)都是路径。这意味着你可以自由混合使用绝对路径和相对路径:

  • • cp /home/ryan/linuxtutorialwork/example2 example3
  • • cp example2 ../../backups
  • • cp example2 ../../backups/example4
  • • cp /home/ryan/linuxtutorialwork/example2 /otherdir/foo/example5

目的地规则:

  1. 1. 指向文件:如果目的地是一个文件名(如上面的 barney),系统会创建副本并赋予该新名称。
  2. 2. 指向目录:如果目的地是一个已存在的目录,系统会将文件拷贝进该目录,并保持原有的文件名。

复制目录:递归参数 -r

默认情况下,cp 只能复制文件。如果你尝试复制一个目录,系统会报错。为了复制整个目录(包括其中的所有子目录和文件),必须使用 -r (recursive,递归) 选项。



1
2
3
4
5
6
7
8
9

user@bash: ls
barney example1 foo

user@bash: cp foo foo2
cp: omitting directory 'foo'  # 报错:忽略了目录 'foo'

user@bash: cp -r foo foo2
user@bash: ls
barney example1 foo foo2      # 成功复制了整个目录树


复制文件详解:

  1. 1. 场景一:目的地是一个【新文件名】(即“重命名”)

如果你指定的 destination 路径在末尾是一个尚不存在的文件名,Linux 会在复制文件的同时,把副本的名字改掉。

  • • 操作:cp example1.txt backup_file.txt
  • • 结果: 系统读取 example1.txt 的内容,在当前目录下创建一个新文件叫 backup_file.txt
  • • 本质: 这就是所谓的“复制并重命名”。原始文件还在,但新副本叫了别的名字。
  1. 2. 场景二:目的地是一个【已存在的目录】

如果你指定的 destination 是一个文件夹路径,Linux 会保持原名。

  • • 操作:mkdir backups(先建个文件夹)
  • • 执行:cp example1.txt backups/
  • • 结果: 在 backups 文件夹里出现了一个也叫 example1.txt 的文件。
  • • 本质: 这只是单纯的“移动副本到新位置”,名字没变。

综合示例:路径 + 重命名

你可以同时指定路径新文件名



1

cp project/data.csv backups/old_data.csv


  • • project/data.csv(相对路径下的文件)
  • • 目的地backups/old_data.csv(另一个路径下的新文件名)
  • • 发生的事:文件被复制到了 backups 文件夹里,并且名字从 data.csv 变成了 old_data.csv

6. 移动文件或目录 (Moving a File or Directory)

要移动文件,我们使用 mv 命令,它是 move 的缩写。它的操作方式与 cp 非常相似。一个微小的优势是:我们在移动目录时不需要提供 -r 选项。



1

mv [options] <source> <destination>




1
2
3
4
5
6
7

user@bash: ls
barney example1 foo foo2
user@bash: mkdir backups
user@bash: mv foo2 backups/foo3
user@bash: mv barney backups/
user@bash: ls
backups example1 foo


让我们分步解析:

  • • 第 3 行:我们创建了一个名为 backups 的新目录。
  • • 第 4 行:我们将目录 foo2 移动到了 backups 目录中,并将其重命名为 foo3
  • • 第 5 行:我们将文件 barney 移动到了 backups 中。由于我们没有提供目的地文件名(只提供了目录路径),它保持了原名。

请再次注意,源和目的地都是路径,可以使用绝对路径或相对路径来引用。

7. 重命名文件与目录 (Renaming Files and Directories)

正如我们之前对 touch 命令的操作一样,我们可以利用 mv 命令的基本行为,以一种创造性的方式来实现一个略有不同的结果。

通常情况下,mv 被用于将文件或目录移动到新目录中。正如我们在上一节第 4 行所看到的,我们可以为文件或目录提供一个新名称,作为移动操作的一部分,它也会完成重命名。现在,如果我们指定的目的地路径与源路径在同一个目录下,但给出一个不同的名称,那么我们实际上就是在使用 mv 来重命名文件或目录。



1
2
3
4
5
6
7
8
9
10

user@bash: ls
backups example1 foo
user@bash: mv foo foo3
user@bash: ls
backups example1 foo3
user@bash: cd ..
user@bash: mkdir linuxtutorialwork/testdir
user@bash: mv linuxtutorialwork/testdir /home/ryan/linuxtutorialwork/fred
user@bash: ls linuxtutorialwork
backups example1 foo3 fred


让我们分步解析:

  • • 第 3 行:我们将文件 foo 重命名为 foo3(两个路径都是相对路径)。
  • • 第 6 行:我们进入了父目录。这样做只是为了在下一行演示:即使我们当前不在文件或目录所在的目录中,也可以对它们执行命令。
  • • 第 8 行:我们将目录 testdir 重命名为 fred(源路径是相对路径,目的地路径是绝对路径)。

8. 删除文件(以及非空目录)

正如 rmdir 一样,删除文件是一个不可逆的操作,所以请务必小心。删除文件的命令是 rm,它是 remove 的缩写。



1

rm [options] <file>




1
2
3
4
5

user@bash: ls
backups example1 foo3 fred
user@bash: rm example1
user@bash: ls
backups foo3 fred


删除非空目录

与本节介绍的其他几个命令类似,rm 也有多个可以改变其行为的选项。我建议你查看 man 手册来了解它们,但这里我要介绍一个特别有用的选项:-r

与 cp 类似,-r 代表 recursive(递归)。当运行带有 -r 选项的 rm 时,它允许我们删除目录以及其中包含的所有文件和子目录。



1
2
3
4
5
6
7
8
9

user@bash: ls
backups foo3 fred
user@bash: rmdir backups
rmdir: failed to remove 'backups': Directory not empty
user@bash: rm backups
rm: cannot remove 'backups': Is a directory
user@bash: rm -r backups
user@bash: ls
foo3 fred


安全建议:交互模式 -i

一个可以与 r 结合使用的好选项是 -i,它代表 interactive(交互式)。这个选项会在删除每一个文件和目录之前提示你进行确认,让你有机会取消命令。

9. 最后的注意事项

每当我们在命令行中引用一个文件或目录时,它本质上就是一个路径。因此,它既可以被指定为绝对路径,也可以被指定为相对路径。这几乎适用于所有情况,请务必记住这一关键点。

在接下来的章节中,我不会再不断提醒你这一点,给出的示例通常也不会刻意说明。请记住在练习命令时,同时尝试使用绝对路径和相对路径,因为有时它们在输出结果上会带来细微但有用的差异(虽然命令执行的动作总是一样的,但显示的路径信息可能不同)。将在“通配符”一节中展示这方面的具体例子。

10. 总结 (Summary)

命令英文全称核心功能
mkdir
Make Directory
创建
目录。
rmdir
Remove Directory
删除
空目录。
touch
(Update timestamp)
创建
空白文件(或更新时间戳)。
cp
Copy
复制
文件或目录(目录需加 -r)。
mv
Move
移动
重命名文件及目录。
rm
Remove
删除
文件(配合 -r 可删除非空目录)。
  • • 没有撤销 (No undo):Linux 命令行不提供撤销功能。执行具有破坏性的操作(如 rm)时请务必三思。
  • • 命令行选项:大多数命令都有许多实用的选项。务必略读新命令的 man 手册,以便熟悉它们的功能和可用资源。

11. 练习示例

1. 在家目录创建实验基地

首先,我们要建立一个“沙盒”目录,防止弄乱你的正式文件。

Bash



1
2
3

cd ~  # 确保回到家目录
mkdir linux_practice
cd linux_practice


2. 构建复杂的目录树与文件

我们要制造一点“混乱”,以便后面进行整理。

Bash



1
2
3
4
5
6
7
8
9

# 创建两个子文件夹
mkdir data scripts

# 在 data 里创建文件
touch data/raw_seq.fastq data/metadata.csv

# 在 scripts 里再建一个子目录,并放入一个文件
mkdir -p scripts/python
touch scripts/python/align.py


3. 重命名一些文件和目录

使用 mv 来改变名称(源和目标在同一路径下)。

Bash



1
2
3
4
5

# 把 raw_seq.fastq 改名为 sample01.fastq
mv data/raw_seq.fastq data/sample01.fastq

# 把 python 目录改名为 code
mv scripts/python scripts/code


4. 删除一个非空目录

练习使用强力的 rm -r

Bash



1
2
3
4
5

# 尝试删除包含 align.py 的 code 目录
rm -r scripts/code

# 检查一下,code 目录应该消失了
ls scripts


5. 回到家目录进行远程复制

这一步练习相对路径的操作。

Bash



1
2
3
4

cd ~  # 回到家目录

# 将 linux_practice/data/metadata.csv 复制到 linux_practice 根目录下
cp linux_practice/data/metadata.csv linux_practice/


6. 将该文件移入另一个目录

Bash



1
2

# 把刚才复制出来的副本移动到 scripts 目录下
mv linux_practice/metadata.csv linux_practice/scripts/


7. 移动文件的同时进行重命名

这是 mv 最灵活的用法:改变位置 + 改变名字。

Bash



1
2

# 把 scripts 里的 metadata.csv 移回 data 目录,并改名为 backup_meta.csv
mv linux_practice/scripts/metadata.csv linux_practice/data/backup_meta.csv


8. 规划你的个人系统

最后一步是“内功”:思考如何组织你的生物信息学工作空间。除了默认的 Documents,你可以考虑这样设置:

Bash



1
2
3
4

mkdir ~/Projects    # 存放正在进行的科研项目
mkdir ~/Software    # 存放你自己下载的生物信息软件
mkdir ~/RefGenomes  # 存放参考基因组(如 Human hg38)
mkdir ~/Archive     # 存放已完成并打包的项目



练习总结小抄

  • • 新建mkdir (目录), touch (文件)
  • • 改名/移动mv <旧> <新>
  • • 复制cp <源> <目标> (目录加 -r)
  • • 删除rm (文件), rm -r (非空目录)

This document is based on the original tutorial written by Ryan at https://ryanstutorials.net/linuxtutorial/.

All credit for the original content belongs to the original author.

This translated and summarized version is shared for educational purposes only.
It may not be used for any commercial purpose, including but not limited to paid courses, subscription-based content, monetized platforms, or any other commercial distribution.

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 21:56:20 HTTP/2.0 GET : https://f.mffb.com.cn/a/478380.html
  2. 运行时间 : 0.192499s [ 吞吐率:5.19req/s ] 内存消耗:4,571.36kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=79afa9bafbfc734a3f1df25471e30743
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001390s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001269s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000510s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000452s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000917s ]
  6. SELECT * FROM `set` [ RunTime:0.000396s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000998s ]
  8. SELECT * FROM `article` WHERE `id` = 478380 LIMIT 1 [ RunTime:0.001138s ]
  9. UPDATE `article` SET `lasttime` = 1774619781 WHERE `id` = 478380 [ RunTime:0.017177s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000487s ]
  11. SELECT * FROM `article` WHERE `id` < 478380 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002154s ]
  12. SELECT * FROM `article` WHERE `id` > 478380 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000756s ]
  13. SELECT * FROM `article` WHERE `id` < 478380 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003751s ]
  14. SELECT * FROM `article` WHERE `id` < 478380 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.013795s ]
  15. SELECT * FROM `article` WHERE `id` < 478380 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.014647s ]
0.194160s