여러 파일을 생성하는 프로그램이 있습니다. 이 프로그램에서 생성된 파일을 하위 디렉터리로 이동하고 싶습니다. 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;
}
출력 파일이 하드코딩된 경로임을 확인할 수 있습니다. 쉘은 이에 영향을 미칠 수 없습니다.