ブラウザ上でのファイル表示に関する問題

このQ&Aのポイント
  • ファイルの移動を確認するために開発者が作成したシェルスクリプトが問題なく動作し、Apache上で実行できるように設定しました。
  • しかし、ブラウザ上でファイルの表示をすると、日本語のファイル名が文字化けして表示されます。
  • この問題を解決するために、サーバの文字コードをUTF-8に設定しましたが、問題は解決されていません。
回答を見る
  • ベストアンサー

ブラウザ上のシェルスクリプトの質問です

今回、ファイルを検索し、motoフォルダ から sakiフォルダ へ ファイルをコピーするシェルスクリプトを書きました。 シェルスクリプト自体は問題なく動作し、良かったのですが、欲が出てweb上から実行したいと思い色々調べ Apache 上で sh を許可し、実行出来るようにしました。 どのファイルが移動出来たのを確認するのに、ブラウザ上で表示出来るようにしたのですが ファイルが日本語名だと 表示がおかしくなります。 コマンドだと cp -v /moto/A.xxx /saki/B.xxx です これで サーバ内で実行すると、問題なく /moto/世界.xxx' -> `/saki/世界.xxx とでますが ブラウザ上だと /moto/\344\270\226\347\225\214.xxx' -> `/saki/\344\270\226\347\225\214.xxx' になります。 ”世界”という日本語(漢字)が \344\270\226\347\225\214 に化けていると思うのですが 化けてるとの表現が合ってるのか分からないのですが、ブラウザ上で /moto/世界.xxx' -> `/saki/世界.xxx な表記に出来るものなのでしょうか。 サーバは CentOS5.8 文字コードは UTF-8 です。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4845/10255)
回答No.2

cp -v の前に、 export LANG=ja_JP.utf-8 を入れてみてください。

katsuyamasaki
質問者

お礼

有難うございます。解決しました。 見事 日本語(漢字)での表示ができました。 if の中に書いてあるからと勘違いだったのですね 有難うございます。たすかりました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4845/10255)
回答No.1

cgiスクリプトとして実行していると言うことですよね。 content-typeヘッダは出力していますか? #!/bin/sh echo "Content-Type: texp/plain; charset=utf-8 " cp -v /moto/世界.xxx /saki/世界.xxx

katsuyamasaki
質問者

補足

質問の回答ありがとうございます。 とあるサイトでググって if [ -n "$HTTP_HOST" ] ; then echo -e "Content-Type: text/html; charset=UTF-8\r\nPragma: no-cache\r\nCache-Control: no-cache, must-revalidate\r\nExpires: Thu, 01 Dec 1994 16:00:00 GMT\r\n\r\n" fi を最初に記述しています。 コマンドで cp -v /moto/世界.xxx /saki/ は質問で書いたように 化けてしまい 試しにこのコマンドの下に echo "世界" を書くと 世界 と表示されます。 不勉強で申し訳ありませんが宜しくお願いします。

関連するQ&A

  • シェルスクリプトに関する質問です

    シェルスクリプトに関する質問です 以下のようなシェルスクリプトを書きたいのですが,難しくて出来無いのでどなたか ご協力お願いします。 foldaという名前のフォルダの中に1~100のフォルダがある. それら100個のフォルダの中に,それぞれfile.txtというテキストファイルがあり,これには 112.73 のように小数点ありの数字が1行書かれている. このfile.txtの内容を全て読み取って,それら100個分のデータを 1つのファイルに出力するスクリプト スクリプトファイルはfoldaの中にあるものとする. よろしくお願いします.

  • シェルスクリプトについて

    とあるUNIXサーバが1台あるとします。 でそのマシン上の管理プログラムが同一マシン上にある 「シェルスクリプト(bash)」をキックするとします。 となるとそのシェルスクリプトの実行者(?)は Unixにログオンしているユーザーになるのでしょうか?。 目的としてはそのログインしているユーザーの環境変数 をシェルから参照したいのですが・・ 考え方がWindowsなもので。。すみませんが よろしくお願いします。

  • シェルスクリプト

    シェルスクリプトに関しては、まったくの初心者です。 OSは、SolarisとLinuxですが、シェルスクリプトを利用して下記のような自動実行プログラムを作りたいのですが、どなたかご教授下さい。 一台のWWWサーバのログ(例:access.log)を、1日に一回(出来ましたら朝の5時)に別サーバに送信するプログラムなのですがいかがでしょうか?このとき、出来れば送信先のファイル名は、送信した日付(例:20020222.log)にしたいです。説明不足かも知れませんが、ひとまずこれでお願いします。

  • Linux シェルスクリプトについての質問です

    Linux上で 日頃、簡単な シェルスクリプトを書き実行していますが、 この頃、より自動化をしたいと思い、シェルスクリプトの中に キーボードのキーを 押したかの様な動作をさせられないかを考えています。 やりたいことは、シェルスクリプトを実行すると、knoppix の partimage にてファイル等を 指定して、1行で実行は出来るのですが、続行するのは F5 キー を押したり Enter キーを押したりの作業が必要です。 この問題は、何か他ので対処が出来るのかもしれないですが、今後、どうしても キーをおさなきゃならない環境が来たときにも対処が出来るように シェルスクリプトでこのような事が可能なのかを知りたく質問させて頂きました。 どなたか分かれば回答を宜しくお願いします。

  • シェルスクリプトをバックグラウンドで

    いつもお世話になってます 初歩的な質問かもしれませんが、自力で解決できなかったのでお力をお貸しください 2点質問があります、シェルはbashです 1 シェルスクリプトを記述したファイルをダブルクリックで使っています このファイルをダブルクリックした時にターミナルを表示させないでシェルスクリプトだけ実行する事はできないでしょうか? 2 シェルスクリプト終了後、ターミナルが閉じません、スクリプト終了と同時にターミナルを閉じる方法を教えてください [プロセスが完了しました]というメッセージが出てターミナルそのものが閉じません よろしくお願いいたします

  • シンボリックリンクがある場合のスクリプト

    シェルスクリプトに関して教えてください。 ディレクトリを指定の場所にコピーしたいのですが、 コピーしたいディレクトリ配下に一部シンボリックリンクになっているファイルやディレクトリがあり、その部分のコピーがcpコマンドで出来ません。 シンボリックリンクになっているものは10個ほどと多くなく、そのリンク先もそれぞれわかっている為、 リストを書き出してそのファイル(ディレクトリ)はそれぞれ別の場所にコピーする ようなことは出来るのでしょうか? 日によってコピー元にシンボリックリンクのファイルがなくコピーしない時もあるので、 コピーするディレクトリ内にシンボリックがあれば、シンボリックリンク先にそのファイルをコピーするような処理です。 簡単に下記にイメージを書きます。 (1)home直下にcopy-motoディレクトリがあった場合、/usr/copy-sakiにコピーする cd /home if [ -d copy-moto ] ; then cp -pr copy-moto/* /usr/copy-saki echo "copy-sakiにコピーしました" fi ここはこんな感じでスクリプトを書きました。 更に(2)の事を追加したいです。 (2)copy-moto配下にhoge1やhoge2,hoge3と多くのディレクトリやファイルがある。  その中でhoge1やhoge2の下にSymbolicXXやSymbolicYYがあった場合、そのファイルやディレクトリはシンボリックリンク先にコピーしたい。  リストで以下のようにシンボリックになっているものは把握している。  そのリスト内にあるものは/usr/copy-sakiではなくhome/Symbolic_link~にコピーしたい的なことをしたいと思っています。    /home/copy-moto/hoge1/SymbolicXX→home/Symbolic_link/SymbolicXX  /home/copy-moto/hoge1/SymbolicYY→home/Symbolic_link/SymbolicYY  /home/copy-moto/hoge2/SymbolicZZ→home/Symbolic_link_AA/SymbolicZZ  /home/copy-moto/hoge2/SymbolicQQ→home/Symbolic_link_AA/SymbolicQQ   この例外処理?のような記載などどのようにスクリプトをかけばいいかわからず… わかる方いればご教授ください。

  • シェルスクリプト内でのsloginの使用

    複数のサーバにアップした同一ファイルについて、シェルスクリプトからsloginしてlsコマンドによる日付の目視確認をしたいと思っています。 ところが、シェルスクリプトで slogin -i 公開鍵 user@host を実行しても slogin: : Name or service not known と表示されて、コマンドが認識されないようです。 sshにしても、同様でした。 ちなみに、scpによるコピーはうまくいきます。 sloginはシェルスクリプト内で使えないのでしょうか?

  • シェルスクリプトの作成方法

    以下の要件で自動実行できるようにしたいと考えてます。 バッチファール?シェルスクリプト?の作成方法を教えてください。 ■最終目的 USBメモリなどのUSB記憶デバイスをLinuxにつなげて、バッチファイルを実行すると、機器IDの表示と記録、FAT32でのフォーマット、乱数書き込み、を行い、最後にxxx.infというディレクトリを作成して終了 1、前提条件。Windows XP 搭載パソコンをLive CD(Ubuntu8.04)で起動しておく 2、USBを差し込む 3、バッチファール?シェルスクリプト?の実行 4、USBメモリフォーマット # sudo mkfs.vfat -v -c -F 32 /dev/XXX 5、USBメモリのID表示、IDの記録をWIndows側のHDDの指定場所に記録(※二つめ以降は追記になるように) # udevinfo -a -p /block/sdc # "表示して、指定ディレクトリに記録するコマンドがわかりません" 6、記憶装置に乱数書き込み # shred -n 3 /dev/XXX 7、記録装置内にxxx.infのディレクトリの作成 # vi /dev/XXX xxx.inf ここまでを自動で行うパッチもしくはシェルスクリプトを組みたいです。 ご存知の方いらっしゃいましたら、ご教授ください。 よろしくお願いいたします。

  • シェルスクリプトの作り方

    OSはVineで、bashシェルです。 シェルスクリプトの作り方ですが、 1.ファイルを作る。 例えば、 #!bin/sh cd tmp このとき、ディレクトリはどこでもいいのでしょうか? 2.権限を付ける。 chmod u+x filename 3.実行 ./filename 他に気をつけることはないでしょうか? 実行すると、 bash: ./filename: bad interpreter: そのようなファイルやディレクトリはありません となってしまって、どうしても実行できません。

  • シェルスクリプト内の「exit」

    クライアントからteratermでservAに接続します。 そこからservBに接続します。 $ ssh servB サーバーBに個人のディレクトリがあり、そこにシェルスクリプトを作っています。 そのシェルスクリプトは「exit 0」で終わっています。 これを実行すると、サーバーBからログアウトしてしまいます。 exitはシェルスクリプト内で使うと、シェルスクリプトを終了するだけかと思ったのですが、ログアウトもしてしまうものなのでしょうか? exitを書かなければ、ログアウトすることなく、カレントディレクトリは変わらないままです。 実行するたびに $ ssh servB $ cd work/mydir と実行しないと自分のディレクトリに戻ってこれないので不便です。 色々と調べたのですが、なぜログアウトしてしまうのかわかりません。 どうすれば、ログアウトしないのか教えて下さい。 よろしくお願いいたします。 シェルスクリプト(TEST) #!/bin/bash -xv echo hello! exit 0 実行結果 [company@servB mydir]$ . TEST hello! Connection to servB closed. [company@servA ~]$