관련 배경:
표준 출력 리디렉션
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 -l
in의 출력을 저장하려면 /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"
}
기억에 남을만한 합리적인 이름을 찾는 것이 어렵습니다.