当前位置:首页>Linux>Linux 从0到1 : 11 · 命令链接与 Shell 脚本

Linux 从0到1 : 11 · 命令链接与 Shell 脚本

  • 2026-08-18 23:10:40
Linux 从0到1 : 11 · 命令链接与 Shell 脚本
     欢迎来到罐子的实验室
    今天来学习 命令链接与 Shell 脚本

    本次目标

把零散的命令组合起来,从「打一行跑一行」升级到「写一个脚本自动跑一堆命令」。这是自动化的起点。

学完你能做什么

  • 用 ;&&|| 把命令串成一条
  • 把命令写进 .sh 文件,用 bash 执行
  • 让脚本变可执行(shebang + chmod +x
  • 给脚本传参数($1$2...)
  • 用 if/elif/else 做条件判断

1. 为什么要把命令连起来

你每天可能重复跑这样一组命令:

user@host:~$ cd ~/projectuser@host:~$ git pulluser@host:~$ makeuser@host:~$ ./run_tests

四条命令、四次回车。如果能写成「跑完 pull 再 make 再测试」一条命令,多省事。Shell 给了好几种「连接命令」的方式。


2. 分号 ;:依次执行

最简单:用 ; 把几条命令放一行,依次执行(不管前一条成不成功):

user@host:~$ echo first; echo second; echo thirdfirstsecondthird

等价于分三次敲回车。A ; B 表示「先跑 A,跑完(不管成败)跑 B」。

动手练习 1:串联

任务:用分号把 datewhoamipwd 三条命令串成一行执行。

参考答案

user@host:~date; whoami; pwdSun Jun 30 18:00:00 UTC 2024user/home/user

3. &&:成功才继续

A && B 表示「只有 A 成功了(退出码为 0)才跑 B」。这是「与」逻辑。

user@host:~mkdir newdir && cd newdir# 创建成功才进去user@host:~/newdir$user@host:~/newdircd /tmpuser@host:/tmpcd /nope && echo OK# cd 失败,echo 不跑bash: cd: /nope: No such file or directoryuser@host:/tmp$

非常适合「前一步是后一步前提」的场景:编译成功才部署、下载成功才解压。

动手练习 2:条件串联

任务:写一条命令——「如果 /etc/passwd 存在,就打印 exists」。

思路引导test -f 文件 在文件存在时返回 0;&& 接 echo。

参考答案

user@host:~$ test -/etc/passwd && echo existsexists

4. ||:失败才继续

A || B 表示「A 失败了(退出码非 0)才跑 B」。这是「或」逻辑——A 成功就用 A,A 不行就上 B。

经典用途:给命令配一个「备用方案」

user@host:~$ cd /nope || echo ”目录不存在,留在原地”bash: cd: /nope: No such file or directory目录不存在,留在原地
user@host:~grep error logfile || echo ”没找到 error,一切正常”没找到 error,一切正常# grep 找不到时退出码非 0,于是 echo 跑

动手练习 3:容错

任务:写一条命令——「尝试 cat config.txt,如果文件不存在就打印 用默认配置」。

参考答案

user@host:~cat config.txt || echo ”用默认配置”用默认配置

💡 && 和 || 可以组合:A && B || C = A 成功跑 B,B 又失败的话跑 C。但组合复杂时建议用后面的 if


5. 你的第一个脚本

把多条命令写进一个文件,就成了 Shell 脚本。按惯例用 .sh 后缀。

user@host:~$ cd ~/linux-practiceuser@host:~/linux-practice$ cat > hello.sh <<EOFecho Helloecho WorlddateEOF

<<EOF ... EOF 叫「here-document」,让你一次输入多行直到遇到 EOF。也可以用编辑器如 nano hello.sh 来写。)

然后用 bash 运行它:

user@host:~/linux-practicebash hello.shHelloWorldSun Jun 30 18:00:00 UTC 2024

bash hello.sh 的意思是:启动 bash,让它从 hello.sh 读命令执行,而不是从键盘读。

动手练习 4:写个问候脚本

任务:写一个 greet.sh,依次打印「欢迎」「当前用户」「当前时间」。

思路引导:文件里写三行 echo/whoami/date。

参考答案

user@host:~/linux-practicecat > greet.sh <<'EOF'echo 欢迎whoamidateEOFuser@host:~/linux-practicebash greet.sh欢迎userSun Jun 30 18:00:00 UTC 2024

6. 让脚本「可执行」

每次都 bash greet.sh 太啰嗦。如果给脚本加执行权限,就能直接 ./greet.sh 跑(→ chmod 详见《模块 10》):

user@host:~/linux-practicels -l greet.sh-rw-r--r-- ... greet.sh# 没有执行权限user@host:~/linux-practicechmod +x greet.shuser@host:~/linux-practicels -l greet.sh-rwxr-xr-x ... greet.sh# 有了 xuser@host:~/linux-practice./greet.sh欢迎...

注意必须写 ./greet.sh(带 ./),不能只写 greet.sh——出于安全考虑,Linux 不会在当前目录找命令,必须明确路径。这点《模块 13》会详细讲。


7. shebang:告诉系统用谁解释

./greet.sh 能跑,是因为 Linux 默认用当前 Shell解释它。但更可靠的做法是在脚本第一行写 shebang——告诉内核「请用这个解释器运行我」:

#!/bin/bashecho 欢迎whoamidate

#!/bin/bash 的意思是「用 /bin/bash 来执行本文件」。当 Linux 看到文件开头是 #!,就把后面那行当作解释器路径,相当于自动执行 /bin/bash 脚本路径

💡 shebang 必须是第一行,前面不能有空行。常见值:

  • #!/bin/bash
     —— bash 脚本
  • #!/usr/bin/env bash
     —— 更可移植(用 env 找 bash)
  • #!/usr/bin/python3
     —— Python 脚本
  • #!/bin/sh
     —— POSIX sh,更兼容但功能少

动手练习 5:加 shebang

任务:给 greet.sh 加上 shebang,确认 ./greet.sh 仍能正常跑。

参考答案

user@host:~/linux-practicenano greet.sh# 或用别的编辑器,在第一行加 #!/bin/bash# 编辑后内容:# #!/bin/bash# echo 欢迎# whoami# dateuser@host:~/linux-practice./greet.sh欢迎user...

8. 给脚本传参数

脚本可以接受命令行参数,用特殊变量读取(→ 变量详见《模块 08》):

变量
含义
$0
脚本自己的名字
$1
$2$3 ...
第 1、2、3 个参数
$#
参数总个数
$@
所有参数(每个独立)
"$*"
所有参数(合成一个串)

例子:

#!/bin/bashecho ”脚本名: $0echo ”第一个参数: $1echo ”第二个参数: $2echo ”共 $# 个参数”

运行:

user@host:~/linux-practice./args.sh alice bob carol脚本名: ./args.sh第一个参数: alice第二个参数: bob共 3 个参数

💡 给 $1 等加引号:"$1",防止参数含空格时被拆词。

动手练习 6:参数脚本

任务:写个 reverse.sh,接受两个参数,逆序输出(先输第二个再输第一个)。

思路引导echo "$2 $1"

参考答案

#!/bin/bashecho ”$2 $1
user@host:~/linux-practice./reverse.sh hello worldworld hello

9. 条件判断:if

if 让脚本根据情况做不同事。基本语法:

if [ 条件 ]; then 命令1 命令2fi

注意几个

  • [
     后面、] 前面必须有空格[ "$1" = "x" ]
  • if
    thenfi 要么换行要么用 ; 分隔。
  • 结束符是 fi(if 倒过来写),不是 endif
#!/bin/bashif [ ”$1” = ”ping” ]; then echo pongfi
user@host:~/linux-practice./ping.sh pingponguser@host:~/linux-practice./ping.sh hello# 没匹配,啥也不输出

💡 = 是字符串比较。数字比较用 -eq-ne-lt-gt(等于/不等于/小于/大于)。更多见 help test

[ ] 里常用的判断:

写法
含义
[ -f 文件 ]
文件存在且是普通文件
[ -d 目录 ]
目录存在
[ -e 路径 ]
路径存在(不论类型)
[ -r 文件 ]
可读
[ -z "$X" ]
字符串 X 为空
[ -n "$X" ]
字符串 X 非空
[ "$A" = "$B" ]
两字符串相等
[ "$A" != "$B" ]
不等

动手练习 7:简单的 if

任务:写个脚本,接受一个参数。如果参数是 pwn,输出 college;否则什么都不输出。

参考答案

#!/bin/bashif [ ”$1” = ”ko” ]; then echo okfi
user@host:~/linux-practice./chk.sh kookuser@host:~/linux-practice./chk.sh foo# 无输出

常见错误

  • ❌ [$1 = "ko"](没空格)→ 语法错误。[ 和 ] 两边都要空格。
  • ❌ if [...] then(没分号也没换行)→ 要 if ... ; then 或换行。

10. else 和 elif

else 处理「否则」:

if [ ”$1” = ”hello” ]; then echo Hielse echo 我不认识你fi

elif(else if)处理多个分支:

if [ ”$1” = ”hello” ]; then echo hielif [ ”$1” = ”hi” ]; then echo helloelif [ ”$1” = ”learn” ]; then echo linuxelse echo unknownfi

注意每个 elif 后面都要 thenelse 后面不要 then,最后用 fi 收尾。

动手练习 8:多分支脚本

任务:写个脚本,参数是 start 时输出「启动中」,是 stop 时输出「停止中」,是 status 时输出「运行中」,其他情况输出「未知命令」。

参考答案

#!/bin/bashif [ ”$1” = ”start” ]; then echo 启动中elif [ ”$1” = ”stop” ]; then echo 停止中elif [ ”$1” = ”status” ]; then echo 运行中else echo 未知命令fi
user@host:~/linux-practice./svc.sh start启动中user@host:~/linux-practice./svc.sh xxx未知命令

11. 实战:一个有用的脚本

把所学串起来,写个自动备份脚本backup.sh

#!/bin/bash# 用法: ./backup.sh 要备份的目录 备份存放目录SRC=”$1DST=”$2# 检查参数个数if [ $# -ne 2 ]; then echo ”用法: $0 <源目录> <备份目录>” exit 1fi# 检查源目录是否存在if [ ! -d ”$SRC” ]; then echo ”错误: 源目录 $SRC 不存在” exit 1fi# 创建备份目录(如果不存在)mkdir -p ”$DST# 生成带时间戳的备份文件名ARCHIVE=”$DST/backup-$(date +%Y%m%d-%H%M%S).tar.gz”# 打包压缩tar -czf ”$ARCHIVE” -C ”$SRC” . && echo ”备份完成: $ARCHIVE” || echo ”备份失败”

运行:

user@host:~/linux-practicechmod +x backup.shuser@host:~/linux-practice./backup.sh ~/Documents ~/backups备份完成: /home/user/backups/backup-20240630-180000.tar.gz

这个脚本用到了:参数($1/$2/$#)、if 判断、&&/||、命令替换 $(date)mkdir -ptar——前 10 个模块的精华都在里面了。

动手练习 9:改造它

任务:把 backup.sh 改成——如果备份成功,再额外用 ls -lh 显示生成的备份文件大小。

思路引导:在 && 后面加 && ls -lh "$ARCHIVE"

参考答案

把最后那行改成:

tar -czf ”$ARCHIVE” -C ”$SRC” . && echo ”备份完成” && ls -lh ”$ARCHIVE” || echo ”备份失败”

本模块速查表

操作
含义
A ; B
依次执行(不管 A 成败)
A && B
A 成功才跑 B
A || B
A 失败才跑 B
bash 脚本.sh
用 bash 执行脚本
chmod +x 脚本
加执行权限
./脚本.sh
直接执行(需有 x 权限)
#!/bin/bash
shebang,脚本第一行

脚本里的特殊变量

变量
含义
$0
脚本名
$1
$2 ...
位置参数
$#
参数个数
$@
所有参数
$?
上条命令退出码

if 语法

if [ 条件 ]; then ...elif [ 条件 ]; then ...else ...fi

铁律[] 两边空格;then 前用 ; 或换行;fi 收尾。


下一步

你的脚本里如果有个耗时任务(比如长时间下载),万一 SSH 断了,脚本就死了——所有工作丢失。下一模块教你用「终端复用器」让任务脱离终端存活。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 20:00:33 HTTP/2.0 GET : https://f.mffb.com.cn/a/505360.html
  2. 运行时间 : 0.173504s [ 吞吐率:5.76req/s ] 内存消耗:4,461.66kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0c1885097955911bc7698f022ee53194
  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.000944s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001307s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000557s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000524s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001081s ]
  6. SELECT * FROM `set` [ RunTime:0.000436s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001234s ]
  8. SELECT * FROM `article` WHERE `id` = 505360 LIMIT 1 [ RunTime:0.001022s ]
  9. UPDATE `article` SET `lasttime` = 1787313633 WHERE `id` = 505360 [ RunTime:0.013399s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000480s ]
  11. SELECT * FROM `article` WHERE `id` < 505360 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001189s ]
  12. SELECT * FROM `article` WHERE `id` > 505360 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001268s ]
  13. SELECT * FROM `article` WHERE `id` < 505360 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002317s ]
  14. SELECT * FROM `article` WHERE `id` < 505360 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001731s ]
  15. SELECT * FROM `article` WHERE `id` < 505360 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005958s ]
0.177376s