• 締切済み

javaを使ってunixの端末操作の実行

unix(ubuntu)の端末の操作(ls,rm,cpなど)をjavaで書いたコードで実行したいです(unixの端末内で)。 javaのProcessBuilderでコードを書く場合どうすればいいでしょうか? ちなみにjshて何ですか? 参考コードなどをいただけるとありがたいです。 よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

シェルの組み込みコマンドと、外部にある実行ファイルの違いを理解して下さい。 実行ファイルは実態が存在しますので /usr/bin/who とか指定すりゃ実行できます 組み込みコマンドは実態がありませんので、 シェルに対してコマンドを実行してもらうようお願いする必要があります。 /bin/bash -c 'echo "Hello World!!"' ※なお、子プロセスが標準出力に吐いた内容をちゃんと読み取らないと止まります。

KaYoukAyOu
質問者

お礼

回答ありがとうございます。 お礼が遅れてすみません。 んー、まだ良くわからないです*( もうちょっと調べてみます。 ありがとうございます。

関連するQ&A

  • Javaのクラスファイルの実行の仕方がわかりません

    Bulletmorphというアプレットを http://www.asahi-net.or.jp/~cs8k-cYu/bulletml/bulletsmorph/bulletsmorph0_1.zip からダウンロードしたJavaコードを実行しようと $cd src/jp/gr/java_conf/abagames $javac util/*.java $javac bulletml/*.java $javac -cp ../../../.. bulletsmorph/*.java とコンパイルして $java -cp ../../../.. bulletsmorph/Bulletsmorph として実行しようとしたのですがメイン・クラスがないというエラーが出ました どのあたりをどのように直せばよいでしょうか

  • java からpostgreSQLを操作

    java を使ってpostgreSQLを操作しようとしていますができません わかる人がいたら教えてください。 PostgreSQL JDBC Driver をダウンロードして↓ "C:\PostgreSQL\jdbc\postgresql-42.1.4.jar" javaのコードを書いたファイルを保存して↓ "C:\PostgreSQL\java\src\DBConnect1.java" コマンドプロンプトからコンパイルして↓ C:\PostgreSQL\java\src> C:\PostgreSQL\java\jdk\bin\javac DBConnect1.java クラスファイルができて↓ "C:\PostgreSQL\java\src\DBConnect1.class" プログラムを実行すると C:\PostgreSQL\java\jdk\bin\java -cp C:\PostgreSQL\jdbc\*;. DBConnect1 下記のようなエラーメッセージが表示されます↓ . : 用語 'DBConnect1' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されませ ん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してくだ さい。 発生場所 行:1 文字:60 + C:\PostgreSQL\java\jdk\bin\java -cp C:\PostgreSQL\jdbc\*;. DBConnect1 +                ~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (DBConnect1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

  • javaの実行環境

    javaの勉強をしようと思い、以下のhelloworldコードを書いてみました。 public class HelloWorld { public static void main(String[] args) { System.out.print("Hello World\n"); } } それを、以下のようにlinux環境(ubuntu 10.10)でコンパイル実行しようとしたのですが、 javac HelloWorld.java java HelloWorld.class Exception in thread "main" java.lang.NoClassDefFoundError: ・・・ と怒られてしまいました。そこで色々調べて jar cvmf manifest.mf test HelloWorld.class とjarファイルを作成して実行したところ、適切に"Hello World"が表示されました。 (manifest.mfの中身は"Main-Class: HelloWorld"1行だけです。) その後、このjarファイルをwindows環境に持っていって実行したのですが、 Exception in thread "main" java.lang.NoClassDefFoundError: ・・・ と怒られてしまいました。 linux環境で、"echo $CLASSPATH"を実行しても何も表示されず、CLASSPATHはどこにも通っていないようです。 また、windows環境のDOS画面にてSETを実行し、環境変数を表示させてもCLASSPATHはありませんでした。(javaはインストール済みです。) で、質問です。 1)なぜjarにすると実行でき、classファイルのままでは実行出来なかったのでしょうか? 2)windows環境で、CLASSPATHを設定したほうが良いのでしょうか?設定する場合は、prgramfiles\java\binで良いのでしょうか? 以上、長くなり申し訳ないのですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • Linux、unix、シェルスクリプトの基礎知識、コマンドについて

    会社でteratermを使ってコマンドベースの仕事をする機会があるため、コマンドやシェルスクリプトについて理解したいと考えています。 そこで疑問がわいてきたため、何点か質問があります。 1)teratermでtelnetで接続してコマンドを打つときはunixのコマンドですか?linuxのコマンドですか? 2)unixとlinuxで簡単なコマンドレベルでの差は無いものと考えて大丈夫でしょうか? 3)勉強するならunix、linuxどっちがお勧めですか? (今のところ参考書として、独習linuxか独習unixを買って勉強しようと思っています。他にお勧めの参考書があれば教えてください。) 4)シェルスクリプトを家でも作成してみたいのですが、ubuntuをインストールして端末上で操作し、作成して試すことはできるのでしょうか? (お勧めの参考書があれば教えてください。) 長くなってしまいましたが、よろしくお願いします。

  • プログラミング言語Javaに詳しい方に質問です

    プログラミング言語Javaに詳しい方に質問です と言っても実行の仕方みたいなものですが 学校の宿題でプログラミングの宿題を出されました 私はブロック崩しをやろうと思って、インターネット上から ソースコードをダウンロードしました JavaにOSは関係ないみたいですが、一応言っておくと 家のパソコンはWindowsXPです ダウンロードしたソースコードをメモ帳に保存し、 コマンドプロンプト上で実行したらうまくいきました そこで学校のパソコンでやったらこれが上手くいかないわけです ちなみに学校のパソコンはUNIXです コンパイルしてもエラーはないのです ただUNIXのでやるとappletviewerを実行したとき アプレットが初期化されていないと表示されてしまい 何にも起こらないんですよね ターミナル上にはなんだかよくわからない"at"から始まる 警告みたいな感じなのがたくさん出てきていたのが気になったのですが なぜかわかる方いますか?

    • ベストアンサー
    • Java
  • php5でjavacを含むシェルの実行ができない

    こんにちは。シェル、php5初心者です。 まずはそれぞれのソースを記します。 j.sh ~~~~~~~~~~~~~~~~~~~~~~ #!/bin/bash javac Hello.java java Hello ~~~~~~~~~~~~~~~~~~~~~~ Hello.java ~~~~~~~~~~~~~~~~~~~~~~ public class Hello { public static void main(String[] args) { System.out.println("Hello, World"); } } ~~~~~~~~~~~~~~~~~~~~~~ test.php ~~~~~~~~~~~~~~~~~~~~~~ <?php $output = shell_exec('./j.sh'); echo "<pre>$output</pre>"; ?> ~~~~~~~~~~~~~~~~~~~~~~ 以上のプログラムを使用しtest.phpを実行したときにshell_exec関数によってWebブラウザ上にHello,Worldと表示させたいのですが、コンパイルすらされていないみたいです。どうしたらよいでしょうか。 端末から./j.shのようにシェルを実行するとしっかりとHello,Worldと結果が返ってくるのですが。 ちなみにjavacを含まないシェル(ls -l,cpなど)はphpから実行できました。 どうかよろしくお願いします。 os vine linux 4.3

    • 締切済み
    • PHP
  • "java" が実行できません("java.exe" は実行できる)

    先日 J2SDK 5.0 Update 6 をインストールした際、 この問題に遭遇しました。 PATH も CLASSPATH も正常に設定されています。 しかし、"java" が実行できません。 ところが、"java.exe" とすると実行できます。 これはいったいどういうことなのでしょうか? 以下にいくつかの実行例を載せます。 OS は Windows XP SP1 です。 [実行例] C:\>java [結果] 'java' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 となるのですが、.exe をつけると以下のように Usage が表示されます。 [実行例] C:\>java.exe [結果] Usage: java [-options] class [args...] (to execute a class) 以下、絶対パス指定した場合も同じ結果です。 [実行例] C:\java\jdk1.5.0_06\bin\java [結果] 'C:\java\jdk1.5.0_06\bin\java' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 [実行例] C:\java\jdk1.5.0_06\bin\java.exe [結果] Usage: java [-options] class [args...] (to execute a class)

  • eclipse で実行時のコマンドを見る方法

    eclipse の 実行時 にどのような操作が行われているかを見ることは可能でしょうか? 例えば 実行を押した時点で以下のような命令が行われているとおもうのですが、 javac -cp classA;classB hello java -cp classA;classB hello このようなコマンドを(コマンドプロンプトなので実際に手打ちするのでなく、) eclipse上で実行を押した時点で確認して見ることは可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • cpコマンドを実行する段階で優先順を下げて実行させることは可能でしょうか?

    GNOME端末のコマンドラインからcpするとロードアベレージが13まで上がりましたが、cronで実行された場合は6ぐらいまでしか上がりませんでした。 何か違いがあるのでしょうか? また、 cpコマンドを使うとき、あらかじめ優先順を下げて実行させることは可能でしょうか? 後からなら手動でreniceすれば良いですが、 PIDは実行させないと分からないので、クーロンでは難しいそうなのでわかりません。

  • シェルスクリプトファイルからjavaを実行したい

    シェルスクリプトファイル(拡張子が.shのファイル)からJavaを実行したいのですが上手くいきません。 コマンドラインで直接 cd javaのファイルが置いてあるディレクトリへのフルパス を実行した後 java 実行するクラス名 引数 とすると上手く動きます。 上記2行をshファイルにコピペしてみましたが、エラーになり動きません。 エラーは : No such file or directory cdをしている行とcdで移動しようとしているディレクトリパス Exception in thread "main" java.lang.NoClassDefFoundError: 実行するクラス shファイルの1行目に #!/bin/sh や #!/bin/bash を入れてみましたが、どちらも挙動が変わりません。(エラーのまま) shファイルはUTF-8を文字コードにして改行はLFのみです。 また、javaコマンドを実行するとき -cp や -classpath 引数でjavaのファイルが有るディレクトリを指定してみましたが挙動が変わりません。 shの実行はコマンドラインから sh shファイル(絶対パスで) source shファイル(絶対パスで) でやってみましたが駄目でした。 javaのファイルが有るディレクトリに対してパスを貼ってみましたが挙動が変わりません。 コマンドラインからコピペしてshファイルを作っていますので、フォルダ名等のつづりミスの可能性は低いと思います。 何か設定が足りないのでしょうか? よろしくお願いいたします。

専門家に質問してみよう