생성된 파일을 .sh 스크립트에서 특정 디렉터리로 리디렉션할 수 있는 방법이 있는지 알고 싶습니다.아니요명령줄에서 직접 스크립트 자체를 수정합니다.
예를 들어:
스크립트가 있습니다증명.sh현재 디렉터리에 일부 파일을 만듭니다.
cat prove.sh
#! /bin/bash
echo "try 1" > try.1.txt
echo "try 2" > try.2.txt
생성된 파일을 리디렉션하고 싶습니다.아니요현재 디렉토리에 있지만 내 디렉토리에서 직접 다른 디렉토리(~/Documents/prove/라고 가정)에 있습니다.
sh prove.sh <...something to redirect files to directory...>
아니요스크립트 자체를 수정하십시오.
그게 가능하다고 생각하시나요?
누구든지 단서가 있습니까?
편집: 더 구체적으로, 내가 해야 할 일은 서버에서 실행 중인 프로그램의 출력을 리디렉션하고 지정된 디렉터리(stdout 아님)에 다양한 파일을 만드는 것입니다.- 나가필드, 다른 컴퓨터로곧장(프로그램이 실행되는 원본 서버에는 아무것도 작성할 필요가 없습니다.)
해당 서버에 대한 호스트 액세스 권한만 있으므로 아무것도 설치하거나 sudo할 수 없습니다. 두 번째 서버의 포트를 수신하고 출력을 nectat의 이 포트로 리디렉션하는 것은 프로그램이 실행 중인 서버의 방화벽으로 인해 작동하지 않으며 변경할 수 없습니다.
어떤 아이디어가 있나요?
답변1
스크립트가 표시된 것과 정확히 같다고 가정합니다.
#! /bin/bash
echo "try 1" > try.1.txt
echo "try 2" > try.2.txt
파일은 무엇이든 상관없이 현재 디렉터리에 생성됩니다.
따라서 파일을 만들려면 ~/Documents/prove/
다음을 수행할 수 있습니다.
( cd ~/Documents/prove/ && bash /some/location/prove.sh )
/some/location/prove.sh
스크립트 자체의 경로 이름은 어디에 있습니까?
이것은 cd
먼저 주어진 디렉토리에 도달하고 그것이 잘 진행되면(디렉토리가 존재하고 이에 대한 액세스 권한이 있음) bash
스크립트를 실행하기 위해 스크립트가 호출되고 해당 디렉토리에 대한 권한이 있다고 가정하면 파일이 거기에 생성됩니다. 파일 디렉터리를 만듭니다.
원래 작업 디렉터리에 영향을 주지 않도록 명령을 ( ... )
하위 쉘에 넣었습니다. cd
이는 해당 줄을 실행한 후 시작한 것과 동일한 디렉터리에 있어야 함을 의미합니다.
그렇지 않은 경우 ( ... )
디렉토리를 로 변경합니다 ~/Documents/prove/
.