쉘 스크립트를 사용하여 프로그램에서 생성된 출력 파일을 특정 디렉터리로 이동합니다.

쉘 스크립트를 사용하여 프로그램에서 생성된 출력 파일을 특정 디렉터리로 이동합니다.

여러 파일을 생성하는 프로그램이 있습니다. 이 프로그램에서 생성된 파일을 하위 디렉터리로 이동하고 싶습니다. mv각 파일에 대해 using 문을 사용하는 기본 접근 방식 이외의 쉘 스크립팅 아이디어를 찾고 있습니다 .

답변1

프로그램이 파일에 쓰는 위치는 프로그램의 구현이며 일반적으로 셸의 영향을 받지 않습니다. 하지만 몇 가지 아이디어는 다음과 같습니다.

  • 프로그램이 stdout에 콘텐츠를 생성하는 경우 >stdout 연산자를 사용하여 이러한 콘텐츠를 다른 위치에 저장할 수 있습니다. 예:
myprogram > /path/to/subdir/file
  • 프로그램에는 명령줄 옵션이 있어 출력 위치를 정의할 수 있습니다. 이 경우에는 이를 컴파일 main.c하고 prog현재 작업 디렉터리에 저장하는 대신 다음 위치로 보내도록 요청합니다../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;
}

출력 파일이 하드코딩된 경로임을 확인할 수 있습니다. 쉘은 이에 영향을 미칠 수 없습니다.

관련 정보