출력(오류 또는 성공)을 파일에 쓰려고 합니다. 다른 명령을 사용하면 문제 없이 이 작업을 수행할 수 있지만 다음 명령은 터미널에만 기록하고 파일에는 기록하지 않습니다. 터미널에서 직접 실행하면 화면에 출력이 표시되고 파일이 생성되지만 비어 있게 됩니다.
명령은
sudo ip r add default via 192.168.1.254 > outfile.txt >&1
sudo ip r add default via 192.168.1.254 | tee -a outfile.txt
sudo /sbin/route add default gw 192.168.1.254 | sudo tee -a outfile.txt
이는 시작 스크립트(헤드리스 설정)에 나타납니다. 터미널 내에서 직접 시작 조건을 시뮬레이션할 수는 없으므로 직접 실행한다고 해서 반드시 시작 조건에서 발생하는 결과가 출력되는 것은 아닙니다. 즉, 실패하는 이유와 원인을 파악할 수 없다는 의미입니다.
터미널에서 직접 실행할 때의 출력은 이러한 조건에서 예상되는 것 입니다 RTNETLINK answers: Network is unreachable
.sudo ip r add default via 192.168.1.254
SIOCADDRT: Network is unreachable
sudo route add default gw 192.168.1.254
답변1
배쉬용
ip r add default via 192.168.1.254 &> outfile.txt
또는 다른 쉘의 표준 형식:
ip r add default via 192.168.1.254 >outfile.txt 2>&1
에서 man bash
:
Redirecting Standard Output and Standard Error
This construct allows both the standard output (file descriptor 1) and
the standard error output (file descriptor 2) to be redirected to the
file whose name is the expansion of word.
There are two formats for redirecting standard output and standard er‐
ror:
&>word
and
>&word
Of the two forms, the first is preferred. This is semantically equiva‐
lent to
>word 2>&1