シェルスクリプトを使用して、プログラムによって生成された出力ファイルを特定のディレクトリに移動します。

シェルスクリプトを使用して、プログラムによって生成された出力ファイルを特定のディレクトリに移動します。

複数のファイルを生成するプログラムがあります。このプログラムで生成されたファイルをサブディレクトリに移動したいと思います。mv各ファイルにusingステートメントを使用する基本的なアプローチ以外のシェルスクリプトのアイデアを探しています。

答え1

プログラムがファイルに書き込む場所はプログラムの実装であり、通常シェルの影響を受けません。しかし、いくつかのアイデアは次のとおりです。

  • プログラムが stdout にコンテンツを生成する場合、>stdout 演算子を使用してこれらのコンテンツを別の場所に保存できます。例:
myprogram > /path/to/subdir/file
  • プログラムにはコマンドラインオプションがあり、出力位置を定義できます。この場合、これをコンパイルしmain.cprog現在の作業ディレクトリに保存するのではなく、次の場所に送信するように要求します。./subdir/
$ gcc main.c -o ./subdir/prog
  • プログラムが常に現在の作業ディレクトリに書き込んでいる場合は、ターゲットの場所でプログラムを実行できます。以下は前の例と似ていますが、./subdir/この場合は次のように実行できます。
$ gcc ../main.c -o prog

Linuxに初めて接する人が書いたWindowsアプリケーションやプログラムでは、関連リソースへの依存関係を持つのが一般的ですが、通常.Linuxアプリケーションではこれは問題になりません。プログラムが作成されていて.関連リソースに依存しない場合は、.興味のあるディレクトリから実行してください。存在しない場合は、$PATHバイナリのフルパスを指定する必要があります。


出力ファイルの場所は実際にはシェルの機能ではありません。これは実行中の機能の機能です。たとえば、ログファイルに「Hello」を書き込む単純なCプログラムを書くとします。

#include <stdio.h>
int main ()
{
   FILE * fp = fopen ("/var/log/mylog","w");
   fprintf (fp, "Hello\n");
   fclose (fp);
   return 0;
}

出力ファイルがハードコードされたパスであることを確認できます。シェルはこれに影響を与えることはできません。

関連情報