phpMyAdmin 是一个用 PHP 编写的软件工具,主要用于管理和操作 MySQL 数据库。它采用了基于 Web 的架构,让用户可以通过 Web 浏览器来访问和管理 MySQL 数据库,无需安装额外的客户端软件。 phpMyAdmin 提供了丰富的功能,包括数据库的创建、删除、修改、查询等操作,还支持数据的导入导出、用户权限管理、SQL 语句的执行等。此外,它还提供了图形化的用户界面,使得操作更加直观和便捷。 phpMyAdmin 的主要特点包括: 直观的 Web 界面 支持大多数 MySQL 特性: 浏览和删除数据库、表、视图、字段和索引 创建、复制、删除、重命名和修改数据库、表、字段和索引 维护服务器、数据库和表,并提供服务器配置建议 执行、编辑和收藏任何 SQL 语句,甚至批处理查询 管理 MySQL 用户帐户和权限 管理存储过程和触发器 从 CSV 和 SQL 导入数据 将数据导出为各种格式:CSV、SQL、XML、PDF、ISO/IEC 26300 - OpenDocument 文本和电子表格、Word、LATEX 等 管理多个服务器 以各种格式创建数据库布局的图形 使用示例查询(QBE)创建复杂查询 在数据库或其子集中进行全局搜索 使用一组预定义函数将存储的数据转换为任何格式,例如将 BLOB 数据显示为图像或下载链接 安装过程: 1、从官网下载源码: https://www.phpmyadmin.net/downloads/ 当前最新的版本是 5.2.1 wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip unzip -q phpMyAdmin-5.2.1-all-languages.zip cd phpMyAdmin-5.2.1-all-languages cp config.sample.inc.php config.inc.php chmod -R 755 phpMyAdmin-5.2.1-all-languages 配置 config.inc.php: $cfg['blowfish_secret']:填写 32 字节随机字符串 配置 Nginx 站点,可以用别名或虚拟主机,这里以别名为例: location /phpmyadmin { alias "/data/www/phpMyAdmin-5.2.1-all-languages"; index index.php index.htm index.html; location ~* \.php$ { include fastcgi.conf; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass unix:/var/run/php/php-fpm.sock; } } 当然了,Apache 等都可以,大同小异了。 使配置生效: nginx -s reload 浏览器打开 https://www.example.com/phpmyadmin/ 就可以运行 phpMyAdmin 了...
阡陌 发布的文章
阡陌Linux shell: /bin/sh^M: bad interpreter: No such file or directory
运行 shell 脚本时提示如下错误: /bin/sh^M: bad interpreter: No such file or directory 错误通常是因为文件在 Windows 系统上被创建或编辑,然后在 Linux 或 Unix 系统上执行时出现的问题。这里的 ^M 实际上是 Windows 下的换行符(Carriage Return,CR,\r)在 Linux/Unix 下的显示。 Linux/Unix 系统使用 Line Feed(LF,\n)作为换行符,而 Windows 系统使用 Carriage Return Line Feed(CRLF,\r\n)作为换行符。当你在 Windows 系统上编辑脚本文件,并将其转移到 Linux/Unix 系统上执行时,可能会出现这个问题。 要解决这个问题,你可以使用以下几种方法之一: 在 Linux/Unix 系统上使用 dos2unix 命令转换文件: 如果你的 Linux/Unix 系统上安装了 dos2unix 工具,你可以使用这个命令将文件的换行符从 CRLF 转换为 LF: dos2unix filename 使用 sed 命令删除 \r: 如果你的系统上没有 dos2unix,你也可以使用 sed 命令来删除 \r: sed -i 's/\r$//' filename 在文本编辑器中设置正确的换行符: 如果你在 Windows 系统上编辑文件,确保你的文本编辑器设置为使用 Unix 风格的换行符(LF),而不是 Windows 风格的换行符(CRLF)。许多现代文本编辑器,如 Notepad++、VS Code、Sublime Text 等,都支持这一设置。 在 Linux 上可使用 Vi/Vim 转换: #查看文件格式: :set ff 或 :set fileformat #可以看到如下信息: fileformat=dos #转换为 Unix 格式: :set ff=unix 或 :set fileformat=unix #保存并退出 :wq 使用 Git 进行自动转换: 如果你是通过 Git 在不同系统之间传输文件,你可以在 Git 配置中设置 core.autocrlf 选项,让 Git 在检出和提交时自动转换换行符: git config --global core.autocrlf true 注意:在修改文件之前,最好先备份原始文件,以防万...
Linux 系统 MySQL 数据库自动备份
备份 MySQL 要用到 mysqldump。mysqldump 是 MySQL 自带的逻辑备份工具,它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的 insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。 mysqldump 的基本用法 mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出。 通过执行 mysqldump --help,你能得到你 mysqldump 的版本支持的选项表。 此外,mysqldump 还支持很多其他选项,例如: --all-databases, -A:备份所有数据库。 --databases, -B:用于备份多个数据库。如果没有该选项,mysqldump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldump 把每个名字都当作为数据库名。 --force, -f:即使发现 sql 错误,也忽略错误继续备份。 --host=host_name, -h host_name:备份指定主机上的数据库。 --no-data, -d:只导出表结构,不导出数据。 --password[=password], -p[password]:连接数据库使用的密码。 --port=port_num, -P port_num:指定连接数据库的端口号。 在使用 mysqldump 时,你需要根据你的需求选择合适的选项。同时,你也需要确保你有足够的权限来访问和备份数据库。 请注意,mysqldump 生成的备份文件是 SQL 脚本,你可以使用任何文本编辑器打开和查看。当你需要恢复数据时,你可以使用 mysql 命令来执行这个 SQL 脚本,将数据恢复到数据库中。 在使用 mysqldump 进行备份和恢复时,请务必小心操作,避免数据丢失或损坏。建议在正式操作前,先在一个测试环境中进行验证,确保操作的正确性和安全性。 手动备份 $ mysqldump -u root -p 数据库名 > 数据库名.sql Enter password: 直接生成压缩文件: $ mysqldump -u root -p 数据库名 | gzip > 数据库名.sql.gz Enter password: 如何才能做到不输入密码?毕竟要做到定时自动备份总不能到备份时间后人工敲密码吧。 使用 ~/.my.cnf 配置文件: 在 MySQL 用户的家目录下创建一个名为 .my.cnf 的配置文件。例如,如果 MySQL 用户是 root,则文件路径为 /root/.my.cnf。 在该文件中添加以下内容: [mysqldump] user=your_mysql_username password=your_mysql_password 将 your_mysql_username 和 your_mysql_password 替换为您的 MySQL 用户名和密码。 设置文件的权限,确保只有文件所有者可以读取它: chmod 600 ~/.my.cnf 现在,当您以该用户身份运行 mysqldump 命令时(不要带 -p 参数),它将自动从 .my.cnf 文件中读取用户名和密码,而无需手动输入。 定时自动播放 创建备份脚本: #!/bin/sh dbname='数据库名' mysqldump -u root $dbname | gzip > /data/backup/db/$dbname-`date +"%Y%m%d"`.sql.gz 设置文件的执行权限: chmod 755 db_backup.sh 配置定时任务: $ crontab -e 0 1 * * * "/绝对路径/db_backup.sh" 这样就可以每天在凌晨 1 点钟执行备份任务...
RFC 1662: PPP in HDLC-like Framing
点对点协议(PPP)提供了一种标准方法,用于在点对点链路上传输多协议数据报。 本文档描述了使用类似 HDLC 的帧结构对 PPP 封装的数据包进行封装。 帧格式: +----------+----------+----------+ | Flag | Address | Control | | 01111110 | 11111111 | 00000011 | +----------+----------+----------+ +----------+-------------+---------+ | Protocol | Information | Padding | | 8/16 bits| * | * | +----------+-------------+---------+ +----------+----------+----------------- | FCS | Flag | Inter-frame Fill |16/32 bits| 01111110 | or next Address +----------+----------+----------------- 传输前需要转义,转义符为 7d(计算完 CRC 后再转义) 头尾的 7e 不需要转义,其他的 7e、7d、小于 0x20(空格)的字节都需要转义。 字节 c 转义后为:0x7d (c xor 0x20),例如: 0x7e is encoded as 0x7d, 0x5e. (Flag Sequence) 0x7d is encoded as 0x7d, 0x5d. (Control Escape) 0x03 is encoded as 0x7d, 0x23. (ETX) 协议文本: RFC 1662_ PPP in HDLC-like Framing.p...
卫星追踪软件 Orbitron 简介
Orbitron 是一款专为业余无线电爱好者和希望目测观察卫星的追星爱好者设计的卫星追踪软件。这款软件功能强大且易于使用,已经被气象专家、卫星通讯、UFO 研究玩家和天文爱好者广泛采用。 Orbitron 可以以实时或模拟方式显示任意时刻卫星与地球的相对位置,让用户能够方便地追踪和观察卫星。 Orbitron软件具有以下主要特点和功能: 可同时追踪众多卫星:Orbitron 支持同时追踪多达两千颗卫星,满足用户对于多卫星追踪的需求。 高清世界地图:软件自带高清世界地图,方便用户在全球范围内进行卫星追踪。 卫星信息丰富:用户可以查看卫星的起点位置、轨道信息、方位角、仰角等详细数据,有助于更好地了解卫星的运行状态。 时钟校正与星历更新:Orbitron 可以通过 NTP 服务器校正电脑内部时钟,确保时间准确;同时,软件支持通过互联网更新星历数据,保持数据的最新性。 控制无线电台及卫星天线跟踪器:Orbitron 可以与无线电台及卫星天线跟踪器进行连接和控制,实现自动化追踪和观测。 多种显示模式:软件支持全屏显示及简报模式显示,满足用户在不同场景下的使用需求。 过顶时间预测及铱星光迹搜寻:Orbitron 具备功能先进的过顶时间预测及铱星光迹搜寻功能,帮助用户更好地安排观测时间和位置。 此外,Orbitron 还具有一些贴心的附加功能,如内置屏幕保护程序等。用户可以根据自己的需求进行设置和调整...
Linux time 不是用来看时间的
time 命令不是用来看时间的,主要是用来统计程序执行的时间消耗(CPU 占用),但也可以统计内存、IO 等资源的使用情况。 查看 sleep 命令的用时情况: time sleep 1 real 0m1.002s user 0m0.002s sys 0m0.000s 通常 time 只显示耗时信息,real 是实际用时(从开始执行到结束,包括了自己的 CPU 用时、被阻塞挂起耗时),user 是用户 CPU 用时(执行用户态程序),sys 是系统 CPU 用时(执行内核程序)。CPU 时间 = 用户CPU 时间 + 系统 CPU 时间,real 大于 CPU 时间是因为在执行过程中进程本身休眠、挂起,这些 CPU 时间其他进程在用。 想显示其他资源消耗使用参数 -v (--verbose),但可能提示不存在。原因是 time 可能不止一个。 type -a time time is a shell keyword time is /usr/bin/time time is /bin/time 默认使用的是 shell 关键字(内建命令),不提供 -v。 可以: /usr/bin/time -v sleep 1 Command being timed: "sleep 1" User time (seconds): 0.00 System time (seconds): 0.00 Percent of CPU this job got: 0% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.00 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 2096 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 75 Voluntary context switches: 2 Involuntary context switches: 0 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 或者: \time 或 "time" 或 'time' 或 command time 这样就不使用内建命令...
关于 gcc-arm-none-eabi 浮点数
Windows (mingw-w64-i686) hosted cross toolchains AArch32 bare-metal target (arm-none-eabi) https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads 使用 arm-none-eabi-gcc 交叉编译链只能编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application) 有关浮点数: 查看 gcc 的默认 define: $ ./arm-none-eabi-gcc -x c - -E -dM </dev/null|grep SOFT #define __SOFTFP__ 1 -mfloat-abi=name Specifies which floating-point ABI to use. Permissible values are: ‘soft’,‘softfp’ and ‘hard’. ABI,application binary interface (ABI),应用程序 二进制接口。 softfp 与 hard 都使用硬件 FPU 指令,但使用软件接口。hard 则使用硬件接口。所以 soft 与 softfp 兼容,他们与 hard 不兼容。 当 -mfloat-abi=soft 时 会定义 #define __SOFTFP__ 1 当为 softfp 或 hard 时,不会定义 __SOFTFP__ 而 __VFP_FP__ 总是定义的(#define __VFP_FP__ 1),即使 -mfloat-abi=soft 时。 源码头文件有这样的定义: #elif defined ( __GNUC__ ) #if defined (__VFP_FP__) && !defined(__SOFTFP__) #if (__FPU_PRESENT == 1) #define __FPU_USED 1 #else #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #define __FPU_USED 0 #endif #else #define __FPU_USED 0 #endif 也就是说,在定义了 softfp 或 hard 时,当 __FPU_PRESENT 为 1 时,会定义 #define __FPU_USED 1,也就是要启用 FPU。__FPU_PRESENT 需要用户自己定义。 当使用 hard 或者 softfp 时,必须同时指定 FPU: -mfpu= option supports the following FPU types: vfp, vfpv3, vfpv3-fp16, vfpv3-d16, vfpv3-d16-fp16, vfpv3xd, vfpv3xd-fp16, neon, neon-fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, neon-vfpv4, fp-armv8, neon-fp-armv8, and crypto-neon-fp-armv8. cortex-m4 选择:fpv4-sp-d...
YMODEM 协议
YMODEM 协议是一种高效的文件传输协议,通常用于调制解调器之间的数据传输。YMODEM 协议的产生是为了解决 XMODEM 协议存在的一些问题。相较于 XMODEM,YMODEM 协议在数据传输效率和稳定性上有所改进。 YMODEM 协议的主要特点包括: 数据包大小:YMODEM 协议支持以 1024 字节(或 1K)的块进行数据传输,这比 XMODEM 协议通常使用的 128 字节块要大得多,从而提高了传输效率。 错误纠正:YMODEM 协议采用循环冗余校验(CRC16)进行错误检测,并在发现错误时请求重发数据块,以确保数据的正确传输。 批处理模式:YMODEM 协议支持批处理模式,允许使用单个命令传输多个文件,这在传输大量文件时非常有用。 文件名传输:在发送文件数据之前,YMODEM 协议会先发送文件名和文件大小等信息,以便接收方能够正确地保存文件。 YMODEM 协议中定义了几种关键字: 关键字 值 说明 SOH 0x01 协议头(128 bytes 类型) STX 0x02 协议头(1K 类型) EOT 0x04 传输结束 ACK 0x06 接收响应 NAK 0x15 失败响应 CAN 0x18 取消传输 C 0x43 开启文件传输 CPMEOF 0x1A 数据补齐填充字符(^Z,控制字符 Z) YMODEM 传输协议: SOH [index] [index2] [128 bytes data] [CRC-hi] [CRC-lo] STX [index] [index2] [1024 bytes data] [CRC-hi] [CRC-lo] index 是帧序号,0 ~ 255,传输时递增。 index2 是index取反,也即:index2 = ~index = 255 - index crc16 校验数据域 [data] 在 YMODEM 协议的基本流程中,发送方会先发送一个起始帧,其中包含文件名和文件大小等信息。接收方在收到起始帧后,会发送一个确认信号(ACK)。然后,发送方开始以 1024 字节的块发送文件数据,每发送一个数据块后都会等待接收方的 ACK 信号。如果接收方成功接收到数据块并通过 CRC 校验,则发送 ACK 信号;否则,发送否定确认信号(NAK)请求重发。当文件传输完成后,发送方会发送一个结束帧(EOT),接收方在收到结束帧后会再次发送 ACK 信号进行确认。 交互序列图: 传输时先发送一个 128 字节的文件信息块,将文件名和文件大小发送给设备。 SOH 00 FF [filename] [filesize] [NULL] CRCH CRCL [filename] 文件名,如文件名 foo.c,它在数据帧中存放格式为:66 6F 6F 2E 63 00 [filesize] 文件大小,例如大小为 400 bytes,它在数据帧的存放格式为:34 30 30 00,即 “400”。(不同的软件可能有所却别) [NULL] 表示剩下的字节都用 00 填充 传输文件内容时,如果文件数据的最后剩余的数据在 128 ~ 1024 之间,则还是使用 STX 的 1024 字节传输;如果文件大小小于等于 128 字节,则选择 SOH 数据帧用 128 字节来传输数据。若数据不足一帧,用 CPMEOF 来填充。 附: XMODEM/YMODEM 协议: http://pauillac.inria.fr/~doligez/zmodem/ymodem.txt ZMODEM 协议: http://gallium.inria.fr/~doligez/zmodem/zmodem.t...
Hugo 使用笔记
什么是 Hugo Hugo 是一个用 Go 语言编写的静态网站生成器。它具有简单、易用、高效、易扩展和快速部署等特点。与其他动态网站生成系统(如 WordPress、Ghost 和 Drupal)不同,Hugo 在创建内容时就已经生成了静态页面,这大大优化了网站的访问速度,并提供了出色的写作体验。 Hugo 适用于构建各种高性能的静态网站,特别是博客、文档和个人网站等。它使用简单的 Markdown 和 HTML 等标记语言来创建内容,并使用 Go 语言的模板引擎来自定义主题和布局。这使得用户能够轻松地创建和定制自己的网站。 Hugo 还具有跨平台性,可以在不同的操作系统上运行,包括 Windows、Linux 和 macOS 等。它对于资源消耗较低,不依赖昂贵的运行环境,如 Ruby、Python 或 PHP,也不依赖任何数据库。这使得 Hugo 成为一个轻量级且易于维护的网站生成器。 另外,Hugo 还支持多种部署方式,可以将生成的静态网站部署到各种托管服务上,如 Heroku、GoDaddy、DreamHost、GitHub Pages、Google Cloud Storage、Amazon S3 和 CloudFront 等。这使得用户能够灵活地选择适合自己的托管方案。 在使用 Hugo 时,用户可以通过简单的命令行操作来创建和管理自己的网站项目。Hugo 提供了丰富的命令和选项,使得用户能够轻松地生成、预览和部署网站。 总的来说,Hugo 是一个功能强大、易用和高效的静态网站生成器,适用于个人和小型团队搭建高性能的网站。它提供了优秀的写作体验、快速的网站访问速度和灵活的部署选项,使得用户能够轻松地创建和管理自己的静态网站。 配置环境 Linux Linux 用户可以直接使用包管理器安装 apt, yum, dnf, zypper, pacman 等等, 包名就是 hugo Windows Windows 用户可以在 GitHub 的 release 下载对应的安装包。 在下载安装包时,有 hugo 和 hugo_extended 两种可运行文件下载,其中 hugo 仅支持 js,hugo_extended 是 hugo 的扩展版本,在支持 js 的基础上还支持 ts。 解压后将 hugo.exe 的路径添加到系统环境变量 Path 中。 创建站点 使用命令 hugo new site blog 即可创建一个名称为 blog 的 hugo 站点项目,存放目录就是 blog。如果想在当前目录下创建需要加上--force参数,也就是hugo new site . --force。创建的项目默认使用的是 toml 配置文件,我比较喜欢用 yaml,所以呢,加一个参数:hugo new site blog --format yaml 目录结构: $ tree . -A . ├── archetypes │ └── default.md ├── assets ├── content ├── data ├── hugo.yaml ├── i18n ├── layouts ├── static └── themes 8 directories, 2 files 然后可以从主题站 https://themes.gohugo.io/ 选择一款主题。 下载到的主题解压到 themes 目录(带着主题根文件夹),然后就可以使用了。 配置站点 通常获取到的主题都会提供示例,里边会有配置文件 config.toml 或 hugo.toml,扩展名也可能是 yaml 等。按照这个文件修改我们站点根目录下的配置文件即可。 发布内容 使用以下命令创建一篇内容: hugo new posts/article.md posts:自定义的一个文件夹,当然也可以是别的,或者不指定文件夹都可以。 article.md:文章文件名,运行 hugo 时将会被渲染成一个页面。 生成的文件会被存放到 content 目录中。 自动生成的内容文件: +++ title = 'Article' date = 2024-01-10T00:53:04+08:00 draft = true +++ 这个自动生成的内容是 markdown 的 front-matter,这里是 toml 格式的,也可以手工改成 yaml 格式的。 实际上没必要使用 hugo new 命令创建内容,直接在相应目录手工创建 markdown 文件就行了。这里只是为让大家了解一下标准做法。 需要注意一下这里的 draft 参数,它是草稿的意思。如果发布时没有用 --buildDrafts,那么这个内容是不不会被渲染的。发布时改成 false 即可。 调试站点 如何在本地查看运行效果呢?在站点根目录运行 Windows 命令行 或 git bash 都可以,执行命令: hugo server --buildDrafts ... | EN -------------------+----- Pages | 3 Paginator pages | 0 Non-page files | 0 Static files | 0 Processed images | 0 Aliases | 0 Sitemaps | 1 Cleaned | 0 Built in 4 ms Environment: "development" Serving pages from memory Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) Press Ctrl+C to stop --buildDrafts:构建时包含标记为 draft(草稿) 的内容 默认使用了 --watch 参数,可以在修改文章内容时让浏览器自动刷新 根据提示,在浏览器中打开网址 http://localhost:1313/ 即可查看网页结果。上边创建的那篇内容的 URL 则是:http://localhost:1313/posts/article/ 发布站点 本地调试完后就可以生成静态页面,然后传到服务器了。 生成静态页面的指令 : hugo --gc --minify --cleanDestinationDir --gc:开启在构建之后运行某些清理任务(例如删除无用的缓存文件) --minify:对任何能够支持的输出格式(HTML、XML 等)进行压缩 --cleanDestinationDir: 先删除目标文件夹中的文件,不然改为 draft 的生成文件不会被自动删除 将 public 文件夹中生成的所有文件上传服务...
在 Git Bash 中使用 tree 命令
关于 tree 命令 tree 命令可以以 ASCII 树状图的方式列出目录的结构。 $ tree ./tree-1.5.2.2-bin -A ./tree-1.5.2.2-bin ├── bin │ └── tree.exe ├── contrib │ └── tree │ └── 1.5.2.2 │ ├── tree-1.5.2.2 │ ├── tree-1.5.2.2-GnuWin32.README │ └── tree-1.5.2.2-src │ ├── CHANGES │ ├── INSTALL │ ├── LICENSE │ └── README ├── man │ └── cat1 │ └── tree.1.txt └── manifest ├── tree-1.5.2.2-bin.mft └── tree-1.5.2.2-bin.ver 9 directories, 9 files 注:-A 参数在绘制线条时使用 ASCII 扩展字符,这会更好看一些。 这对我们在命令行中查看目录的组织方式还是很有作用的。但 git bash 默认并没有集成该命令。我们可以自行安装一下。 安装 tree 命令 下载: 到 https://gnuwin32.sourceforge.net/packages/tree.htm 下载 Windows 版预编译二进制文件: 从下载到的压缩包中解压出可执行程序 tree.exe (单独一个文件即可),放置于 git 的安装目录 /usr/bin/(默认安装情况下绝对路径通常是 C:\Program Files\Git\usr\bin)。 这时打开 Git Bash 就可以用 tree 命令了。 $ tree --help usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] [--filelimit #] [<directory list>] -a All files are listed. -d List directories only. -l Follow symbolic links like directories. -f Print the full path prefix for each file. -i Don't print indentation lines. -q Print non-printable characters as '?'. -N Print non-printable characters as is. -p Print the protections for each file. -u Displays file owner or UID number. -g Displays file group owner or GID number. -s Print the size in bytes of each file. -h Print the size in a more human readable way. -D Print the date of last modification. -F Appends '/', '=', '*', or '|' as per ls -F. -v Sort files alphanumerically by version. -r Sort files in reverse alphanumeric order. -t Sort files by last modification time. -x Stay on current filesystem only. -L level Descend only level directories deep. -A Print ANSI lines graphic indentation lines. -S Print with ASCII graphics indentation lines. -n Turn colorization off always (-C overrides). -C Turn colorization on always. -P pattern List only those files that match the pattern given. -I pattern Do not list files that match the given pattern. -H baseHREF Prints out HTML format with baseHREF as top directory. -T string Replace the default HTML title and H1 header with string. -R Rerun tree when max dir level reached. -o file Output to file instead of stdout. --inodes Print inode number of each file. --device Print device ID number to which each file belongs. --noreport Turn off file/directory count at end of tree listing. --nolinks Turn off hyperlinks in HTML output. --dirsfirst List directories before files. --charset X Use charset X for HTML and indentation line output. --filelimit # Do not descend dirs with more than # files in them. 通常命令跟文件夹即可,文件夹可以是相对路径也可以是绝对路径,并且可以指定多个文件夹。 使用 Windows 自带的 tree 命令 我们要知道 Windows 的命令行工具自带了 tree 命令,展示细节上差点意思,将就一下也还行。 PS D:\root> tree tree-1.5.2.2-bin /F 卷 Data 的文件夹 PATH 列表 卷序列号为 6EDF-788C D:\ROOT\TREE-1.5.2.2-BIN ├─bin │ tree.exe │ ├─contrib │ └─tree │ └─1.5.2.2 │ │ tree-1.5.2.2-GnuWin32.README │ │ │ ├─tree-1.5.2.2 │ └─tree-1.5.2.2-src │ CHANGES │ INSTALL │ LICENSE │ README │ ├─man │ └─cat1 │ tree.1.txt │ └─manifest tree-1.5.2.2-bin.mft tree-1.5.2.2-bin.ver 不过由于该命令是集成在命令行程序的,所以不能被 git bash 调用。不过我想了一个注意,在 git bash 中先执行 cmd,进入 Windows 命令行环境后再执行 tree 命令,怎么样,这招是不是很高明 ...