명령을 실행하고 명령을 파일에만 기록하는 방법

명령을 실행하고 명령을 파일에만 기록하는 방법

명령을 실행하고 해당 명령을 파일에만 기록하려고 합니다. 사용해 보았지만 exec 4>test|command >&4|exec 4>&-작동하지 않습니다. 명령을 단독으로 실행하면 작동하지만 명령의 출력만 기록합니다. 이에 비해 다음 command | tee -a test도 발견했습니다. command|& ts |tee -a test하지만 관리자 권한이 없으므로 아무것도 설치할 수 없습니다. 또한 스크립트를 작성하거나 명령 기록 또는 출력을 저장하고 싶지 않습니다. 바람직하게는 라이너가 명령을 파일에 기록한 다음 정상적으로 실행하는 것이 좋습니다. 다음은 몇 가지 관련 질문입니다. https://stackoverflow.com/questions/70677322/in-linux-how-to-save-only-the-command-into-file-without-output 명령만 파일에 기록합니다.

답변1

쉘 스크립트 환경에 있는 경우, 주어진 매개변수를 실행하는 다음과 같은 함수를 생성할 수 있습니다.

log_and_execute_command() {
    printf '%(%FT%T%z)T\t%s\n' -1 "$*" >> my_logging_file
    "$@"
}

타임스탬프를 기록할 필요가 없다면 상황이 더 쉬워질 것입니다. 이 예는 표준 입력에서 셸로 명령을 전달하면 해당 명령이 실행된다는 사실을 활용합니다.

printf '%s' 'my_command' | tee -a my_logging_file | sh

뭔가를 파이프하고 싶지만 ts파이프가 없다면 비슷한 대안으로 다음과 같은 쉘 스크립트를 사용할 수 있습니다.

#!/bin/bash
while read -r line; do
    printf '%(%FT%T%z)T\t%s\n' -1 "$line"
done

관련 정보