관련 배경:

관련 배경:

관련 배경:

표준 출력 리디렉션

command > file
command 1> file

표준 오류 리디렉션

command 2> file

표준 출력 및 표준 오류를 별도의 파일로 리디렉션

command 2> error.txt 1> output.txt

표준 출력과 표준 오류를 동일한 파일로 리디렉션

command > file 2>&1
command &> file # bash only? 
# For all I know, all the examples are bash-only, but the article called it out explicitly on this line

경고: 다음 예시에서는 리디렉션을 수행합니다.오직파일로의 표준 출력. 이는 stdout이 파일로 리디렉션되기 전에 stderr이 stdout으로 리디렉션되기 때문에 발생합니다.

command 2>&1 > file # incorrect! 

질문:

제 생각에는 기호가 완전히 임의적이어서 기억하기 어렵습니다. 별칭을 지정하는 방법을 알고 있습니다.주문하다, 그러나 이러한 기호에 별칭을 부여하여 기억하기 쉽도록 하는 방법이 있습니까? 이 같은:

표준 출력과 표준 오류를 동일한 파일로 리디렉션

command redirectStandardOutputAndError file

또는 더 나은 방법은 다음과 같습니다.

command >outerr file

이것이 zsh와 bash 모두에서 작동하는 경우 보너스 포인트가 있지만 내 bash가 유일한 요구 사항입니다.

답변1

이를 위해 bash에서는 별칭을 사용할 수 없으며 충분히 강력하지 않습니다. 하지만 도움이 될 수 있는 기능을 사용할 수 있습니다.

이 접근 방식을 사용하려면 리디렉션에 대해 다르게 생각해야 합니다. 리디렉션을 먼저 선언한 다음 명령을 선언하므로 ls -lin의 출력을 저장하려면 /tmp/dir_listing다음을 입력합니다 .save_in /tmp/dir_listing ls -l

save_in(){ # save stdout in file
    "${@:2}" > "$1"
}

save_all(){ # save both stdout and stderr in file
     "${@:2}" > "$1" 2>&1
}

save_each(){ # save stdout and stderr in different files
     "${@:3}" > "$1" 2>"$2"
}

save_base(){ # save stdout and stderr into different file, just give base
    "${@:2}" > "$1.out" 2>"$1.err"
}

기억에 남을만한 합리적인 이름을 찾는 것이 어렵습니다.

관련 정보