gpt4 book ai didi

linux - 在 Linux 中生成目录列表作为网络服务器索引页

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:58 25 4
gpt4 key购买 nike

我正在使用

python -m SimpleHTTPServer 8080

从 linux 目录启动网络服务器。我正在尝试编写一个 shell 脚本来生成包含以下信息的 index.html 页面:文件名(作为超链接)、文件大小、上次修改日期。所以真的是一个自定义目录列表。

这是当前获取正确信息但在一行中显示所有信息并且不超链接文件名的脚本。谁能指导我正确的方向?

    TITLE="Latest Logs"
echo "<html>" > index.html
echo "<title>$TITLE</title>" >> index.html
echo "<body>" >> index.html
echo "<h1>$TITLE</h1>" >> index.html
ls -ctgGh | awk '{print $3 " " $4 " " $5 " " $6 " " $7}' \
| grep -v index.html \
| sed 's/[^0-9\s]+[.][^0-9\s]+/<a href="&">&<\/a><br\/>/g' \
>> index.html
echo "</body></html>" >> index.html

所以我输入 sed 的是:

374,Nov 6,04:03,generate.sh
7.5M,Nov 6,04:00,Admin-server.log
46M,Nov 6,03:48,run1.log
528K,Nov 4,15:03,build.log

我想得到:

375,Nov 6,04:14,<a href=generate.sh>generate.sh</a>
7.5M,Nov 6,04:09,<a href=Admin-Server.log>Admin-Server.log</a>
46M,Nov 6,03:48,<a href=run1.log>run1.log</a>
528K,Nov 4,15:03,<a href=build.log>build.log</a>

最佳答案

我认为您的第一个更改不应该是将输出文件名硬编码到脚本中。只是正常输出,到标准输出,当你调用脚本时,使用重定向。

比如你的行

echo "<html>" > index.html

应该只是

echo "<html>"

但是当你调用脚本的时候,这样调用它:

my-script > index.html

shell 会将输出放入正确的文件中。 (如果您想将输出放入测试文件,这在测试时也很有用。)

假设您正在使用 sh,您应该以“shebang”开始您的脚本:

#!/bin/bash

作为第一行。参见 the Advanced Bash Scripting Guide了解详情。

一旦你这样做了,你就不需要

grep -v index.html

在你的脚本中,因为它不应该出现在脚本的环境中。

在您的示例输入中,您有逗号,但在现实世界中,它们将是空格。不是问题,只是对问题的更正。

使用 awk,您可以使用逗号而不是 "" 用空格分隔字段。它会更具可读性。并且不要使用 sed;这不是必需的。您可以使用 awk 进行所有更改:

awk '{print $3, $4, $5, $6, "<a href=" $7 ">" $7 "</a>"}'

应该可以解决问题。

因此,您脚本中的引擎将仅包含通过管道传输到 awk 中的 ls,以及为输出提供某种结构的 echo;当您使用脚本时,重定向会负责将其放入文件中。

关于linux - 在 Linux 中生成目录列表作为网络服务器索引页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8025701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com