1

私は使っている

python -m SimpleHTTPServer 8080

LinuxディレクトリからWebサーバーを起動します。次の情報を含む index.html ページを生成するシェル スクリプトを作成しようとしています: ファイル名 (ハイパーリンクとして)、ファイル サイズ、最終更新日。つまり、実際にはカスタム ディレクトリ リストです。

これは、現在正しい情報を取得しているが、すべてを 1 行に表示し、ファイル名にハイパーリンクを張っていないスクリプトです。誰かが私を正しい方向に導くことができますか?

    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、11 月 6 日、04:03、generate.sh
7.5M、11 月 6 日、04:00、Admin-server.log
46M、11 月 6 日、03:48、run1.log
528K、11 月 4 日、15:03、ビルド。ログ

そして私は取得したい:

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>
4

3 に答える 3

3

最初の変更は、出力ファイル名をスクリプトにハードコーディングするべきではないと思います。通常どおり標準出力に出力し、スクリプトを呼び出すときにリダイレクトを使用します。

たとえば、あなたの行

echo "<html>" > index.html

ただあるべき

echo "<html>"

ただし、スクリプトを呼び出すときは、次のように呼び出します。

my-script > index.html

シェルは出力を正しいファイルに入れます。(これは、出力をテスト ファイルに入れたい場合のテスト時にも役立ちます。)

を使用していると仮定するとsh、おそらく「シバン」でスクリプトを開始する必要があります。

#!/bin/bash

最初の行として。詳細については、高度な Bash スクリプト ガイドを参照してください。

それをしたら、必要ないはずです

grep -v index.html

これは、スクリプトの環境に存在してはならないためです。

入力例ではカンマがありますが、実際にはスペースになります。問題ではありません。質問を修正するだけです。

ではawk、 ではなくコンマを使用して、おそらくフィールドをスペースで区切ることができます" "。それはより読みやすいでしょう。そして使用しないでくださいsed; それは必要はありません。次の方法ですべての変更を行うことができますawk

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

トリックを行う必要があります。

したがって、スクリプト内のエンジンは、出力に何らかの構造を与えて、lsパイプされたのみで構成されます。スクリプトを使用すると、リダイレクトによってスクリプトがファイルに取り込まれます。awkecho

于 2011-11-06T09:06:10.773 に答える
0
#!/bin/sh
TITLE="Latest Logs"
echo "<html>" > index.html
echo "<title>$TITLE</title>" >> index.html
echo "<body>" >> index.html
echo "<PRE>" >> index.html
echo "<h1>$TITLE</h1>" >> index.html
ls -lrt | grep -v index.html | awk '{print $3, $4, $5, $6, "<a     href=http://10.77.28.119:9090/"$9 "<a>" $9 "</a>"}' >> index.html
echo "</pre>" >> index.html
echo "</body></html>" >> index.html
于 2015-09-22T09:18:56.710 に答える
0

上記のコードは index.html ファイルを生成し、ブラウザ ページから呼び出されると、ディレクトリ内のすべてのファイルが表示されます。IP アドレスを Web サーバーの IP アドレスとポートに置き換えることができます。

于 2015-09-23T17:09:10.180 に答える